From 4ad7905fa2c73045ff6c0f411c3a04cd62849b29 Mon Sep 17 00:00:00 2001 From: Yaroslav Pankratyev Date: Mon, 4 Dec 2017 13:30:48 +0700 Subject: [PATCH] DevKit: better bean class fields handling in ExtensionDomExtender --- .../devkit/src/dom/impl/ExtensionDomExtender.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/plugins/devkit/src/dom/impl/ExtensionDomExtender.java b/plugins/devkit/src/dom/impl/ExtensionDomExtender.java index cc5e98fbd94f..f48d506e9b11 100644 --- a/plugins/devkit/src/dom/impl/ExtensionDomExtender.java +++ b/plugins/devkit/src/dom/impl/ExtensionDomExtender.java @@ -40,6 +40,8 @@ import com.intellij.util.xmlb.annotations.Tag; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.devkit.dom.*; +import org.jetbrains.uast.UClass; +import org.jetbrains.uast.UastContextKt; import java.lang.annotation.Annotation; import java.util.*; @@ -126,7 +128,16 @@ public class ExtensionDomExtender extends DomExtender { private static void registerXmlb(final DomExtensionsRegistrar registrar, @Nullable final PsiClass beanClass, @NotNull List elements) { if (beanClass == null) return; - for (PsiField field : beanClass.getAllFields()) { + PsiField[] fields; + UClass beanClassNavigationClass = UastContextKt.toUElement(beanClass.getNavigationElement(), UClass.class); + if (beanClassNavigationClass != null) { + fields = beanClassNavigationClass.getAllFields(); + } + else { + fields = beanClass.getAllFields(); // fallback + } + + for (PsiField field : fields) { registerField(registrar, field, findWithElement(elements, field)); } }