JavaリソースにリンクするカスタムXML形式があります。簡略化のための私のXMLファイルは次のようになりますと仮定しましょう:XMLファイルのJava要素へのリンクをIntelliJに認識させる
<root>
<java-class>my.fully.qualified.class.name</java-class>
</root>
結局私の参照は多少複雑になります。それは完全に修飾されたクラス名を直接含んでいませんし、正しいクラスを解決するためにいくつかのロジックが必要ですが、ここではできるだけ単純な例を保ちたいと思います。
これで、SpringのXMLファイルと同じように、要素のテキストをStrg +クリックし、IntelliJで.javaファイルに移動させたいと考えています。 IDEA Plugin Development FAQには、「How do I add custom references to Java elements in XML files?」と呼ばれるリンクがあり、私の必要としているもののように聞こえます。残念なことに、これは誰かが多かれ少なかれこのような何かを実装した、少しの問題を抱えているディスカッションにリンクしています。それでも、com.intellij.psi.PsiReferenceインターフェースの実装を書く必要があると私は理解していました。 「PsiReference」や「IntelliJ」や「IDEA」のグーグルでは残念ながら使用方法に関するチュートリアルはありませんでしたが、役に立つと思われるクラスXmlValueReferenceが見つかりました。それでも、 "XmlValueReference"のためのグーグルでは、クラスの使い方に役立つものは何も出てこなかった。少なくともPSI Cookbookは、JavaPsiFacade.findClass()
を使ってJavaクラスを見つけることができます。チュートリアルやヒントなど、正しい使い方を教えてくれてありがとうと思います。
上記のリンクされた説明では、最終的にそれを実装するとプロバイダを登録するためにはregistry.registerReferenceProvider(XmlTag.class, provider)
に電話する必要があると述べていますが、どのタイプが「レジストリ」で、どこから取得できますか?