「Predic8」の「SOA-Model」というライブラリを使っています。コードはここにあります。
ライブラリの一部のコードは Groovy で記述されていますが、私はこのライブラリを Java アプリケーションから使用しています。「ResourceResolver」を拡張したクラス「ExternalResolver」を書こうとしています。これは、こちらのサンプル コードに似ています。そして、ResourceResolver のソースコードはここにあると思います。
ただし、私はこれをJavaで書いています。次のようなものです。
import com.predic8.schema.Import;
import com.predic8.xml.util.ResourceResolver;
public class ExternalWSDLResolver extends ResourceResolver {
public Object resolve(Object input, String baseDir){
//some code here to do the customised resolving
}
}
これで、Eclipse でコンパイルすると、上記のすべてが正常に機能します。
しかし、IntellijIDEA でコンパイルしようとすると、さらにいくつかのメソッドを実装する必要があります。基本的に以下を実装するメソッド:
- implements groovy.lang.GroovyObject.invokeMethod(String s, Object o)
- implements groovy.lang.GroovyObject.getProperty(String s)
- implements groovy.lang.GroovyObject.setProperty(String s, Object o)
- implements groovy.lang.GroovyObject.getMetaClass()
- implements groovy.lang.GroovyObject.setMetaClass(MetaClass metaClass)
ほとんどの場合、「null」を返すだけで簡単に逃げることができます。ただし、getMetaClass に対してこれを行うと、コードが機能せず、例外が返されます。
したがって、私は知る必要があります:
- Intellij でこれらの警告をシャットダウンする方法はありますか? ... また
- getMetaClass を機能させるために何を入れることができますか? つまり、一種のデフォルト値です。
編集:
を逆コンパイルするコメントで示唆されているように、ResourceResolver.class
たとえば getMetaClass の結果は次のとおりです。
また、参考のために、出力全体をここに貼り付けました: http://pastie.org/7980007
public groovy.lang.MetaClass getMetaClass();
Code:
0: aload_0
1: getfield #27; //Field metaClass:Lgroovy/lang/MetaClass;
4: dup
5: ifnull 9
8: areturn
9: pop
10: aload_0
11: dup
12: invokevirtual #25; //Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
15: putfield #27; //Field metaClass:Lgroovy/lang/MetaClass;
18: aload_0
19: getfield #27; //Field metaClass:Lgroovy/lang/MetaClass;
22: areturn