Mam niestandardowy format XML, który łączy się z zasobami Java. Dla uproszczenia załóżmy, że mój plik XML będzie wyglądać następująco:Uczyń z IntelliJ łącza do elementów Java w plikach XML
<root>
<java-class>my.fully.qualified.class.name</java-class>
</root>
Ostatecznie moje referencje będzie nieco bardziej skomplikowana. Nie będzie zawierał w pełni kwalifikowanej nazwy klasy i potrzebuję trochę logiki, aby rozwiązać właściwą klasę, ale chcę, aby przykład był tak prosty jak to tylko możliwe.
Teraz chcę, żeby było możliwe Strg + Kliknij na tekst elementu i poproś IntelliJ o przeniesienie mnie do pliku .java, tak jak to jest możliwe w plikach Spring-XML. W numerze IDEA Plugin Development FAQ znajduje się łącze o nazwie "How do I add custom references to Java elements in XML files?", które brzmi tak, jak dokładnie to, czego potrzebuję. Niestety łączy się to z dyskusją, w której ktoś jest mniej lub bardziej zaangażowany w realizację czegoś podobnego, mając pewne drobne problemy. Niemniej jednak zrozumiałem, że prawdopodobnie muszę napisać implementację interfejsu com.intellij.psi.PsiReference. Googling dla "PsiReference" i "IntelliJ" lub "IDEA" niestety nie przyniósł żadnych tutoriali, jak go używać, ale znalazłem klasę XmlValueReference, która wydaje się przydatna. Jeszcze raz użycie go w "XmlValueReference" nie przyniosło pożytku z używania klasy. Przynajmniej PSI Cookbook mówi mi, że mogę znaleźć klasy Java przy użyciu JavaPsiFacade.findClass()
. Byłbym wdzięczny za wszelkie tutoriale, wskazówki i tym podobne, które mówią poprawne użycie.
Powyższa połączona dyskusja wspomina, że muszę zadzwonić pod numer registry.registerReferenceProvider(XmlTag.class, provider)
, aby zarejestrować dostawcę, gdy w końcu zdołałem go wdrożyć, ale którego typu to "rejestr" i skąd go pobrać?