From c12191c88a4020170afb139e9673cc0ceb7f42a2 Mon Sep 17 00:00:00 2001 From: Pavel Dolgov Date: Mon, 16 Jan 2017 16:20:10 +0300 Subject: [PATCH] Javafx: Minor refactoring in JavaFxPsiUtil - code duplication removed, better names for methods (IDEA-165983) --- .../plugins/javaFX/fxml/JavaFxPsiUtil.java | 21 +++++++------------ .../inspections/JavaFxColorRgbInspection.java | 2 +- .../JavaFxDefaultTagInspection.java | 2 +- .../JavaFxClassTagDescriptorBase.java | 10 ++++----- .../JavaFxPropertyAttributeDescriptor.java | 4 ++-- .../JavaFxPropertyTagDescriptor.java | 2 +- .../JavaFxComponentIdReferenceProvider.java | 4 ++-- 7 files changed, 20 insertions(+), 25 deletions(-) diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxPsiUtil.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxPsiUtil.java index 99b202da5ded..63c6fbec5aef 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxPsiUtil.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxPsiUtil.java @@ -863,7 +863,7 @@ public class JavaFxPsiUtil { } @NotNull - public static Map collectReadableProperties(@Nullable PsiClass psiClass) { + public static Map getReadableProperties(@Nullable PsiClass psiClass) { if (psiClass != null) { return CachedValuesManager.getCachedValue(psiClass, () -> CachedValueProvider.Result.create(prepareReadableProperties(psiClass), PsiModificationTracker.JAVA_STRUCTURE_MODIFICATION_COUNT)); @@ -871,7 +871,6 @@ public class JavaFxPsiUtil { return Collections.emptyMap(); } - @NotNull private static Map prepareReadableProperties(@NotNull PsiClass psiClass) { final Map acceptableMembers = new THashMap<>(); @@ -887,7 +886,7 @@ public class JavaFxPsiUtil { } @NotNull - public static Map collectWritableProperties(@Nullable PsiClass psiClass) { + public static Map getWritableProperties(@Nullable PsiClass psiClass) { if (psiClass != null) { return CachedValuesManager.getCachedValue(psiClass, () -> CachedValueProvider.Result.create(prepareWritableProperties(psiClass), PsiModificationTracker.JAVA_STRUCTURE_MODIFICATION_COUNT)); @@ -899,16 +898,11 @@ public class JavaFxPsiUtil { private static Map prepareWritableProperties(@NotNull PsiClass psiClass) { // todo search for setter in corresponding builder class, e.g. MyDataBuilder.setText() + MyData.getText(), reuse logic from hasBuilder() final Map acceptableMembers = new THashMap<>(); - for (PsiMethod constructor : psiClass.getConstructors()) { - if (!constructor.hasModifierProperty(PsiModifier.PUBLIC)) continue; - final PsiParameter[] parameters = constructor.getParameterList().getParameters(); - for (PsiParameter parameter : parameters) { - final String propertyName = getPropertyNameFromNamedArgAnnotation(parameter); - if (!StringUtil.isEmpty(propertyName) && !acceptableMembers.containsKey(propertyName)) { - final PsiField field = psiClass.findFieldByName(propertyName, true); - if (field != null && !field.hasModifierProperty(PsiModifier.STATIC)) { - acceptableMembers.put(propertyName, field); - } + for (String propertyName : prepareConstructorNamedArgProperties(psiClass)) { + if (!acceptableMembers.containsKey(propertyName)) { + final PsiField field = psiClass.findFieldByName(propertyName, true); + if (field != null && !field.hasModifierProperty(PsiModifier.STATIC)) { + acceptableMembers.put(propertyName, field); } } } @@ -978,6 +972,7 @@ public class JavaFxPsiUtil { return Collections.emptySet(); } + @NotNull private static Set prepareConstructorNamedArgProperties(@NotNull PsiClass psiClass) { final Set properties = new THashSet<>(); for (PsiMethod constructor : psiClass.getConstructors()) { diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/inspections/JavaFxColorRgbInspection.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/inspections/JavaFxColorRgbInspection.java index 92522ca0a215..af6daa40e6ef 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/inspections/JavaFxColorRgbInspection.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/inspections/JavaFxColorRgbInspection.java @@ -62,7 +62,7 @@ public class JavaFxColorRgbInspection extends XmlSuppressableInspectionTool { @NotNull String propertyName, @NotNull String propertyValue, @NotNull PsiElement location) { - final PsiMember declaration = JavaFxPsiUtil.collectWritableProperties(psiClass).get(propertyName); + final PsiMember declaration = JavaFxPsiUtil.getWritableProperties(psiClass).get(propertyName); final String boxedQName = JavaFxPsiUtil.getBoxedPropertyType(psiClass, declaration); if (CommonClassNames.JAVA_LANG_FLOAT.equals(boxedQName) || CommonClassNames.JAVA_LANG_DOUBLE.equals(boxedQName)) { try { diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/inspections/JavaFxDefaultTagInspection.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/inspections/JavaFxDefaultTagInspection.java index 767a98d37ee4..1f2fa15a2dda 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/inspections/JavaFxDefaultTagInspection.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/inspections/JavaFxDefaultTagInspection.java @@ -67,7 +67,7 @@ public class JavaFxDefaultTagInspection extends XmlSuppressableInspectionTool{ if (subTags.length != 0) { final PsiClass tagValueClass = JavaFxPsiUtil.getTagValueClass(subTags[subTags.length - 1]); if (JavaFxPsiUtil.isObservableCollection(tagValueClass)) { - final PsiMember property = JavaFxPsiUtil.collectWritableProperties(parentTagClass).get(propertyName); + final PsiMember property = JavaFxPsiUtil.getWritableProperties(parentTagClass).get(propertyName); if (property != null) { final PsiType propertyType = JavaFxPsiUtil.getWritablePropertyType(parentTagClass, property); final PsiClass propertyClass = PsiUtil.resolveClassInClassTypeOnly(propertyType); diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxClassTagDescriptorBase.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxClassTagDescriptorBase.java index 84d2bd4fbfab..afa0db258ff8 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxClassTagDescriptorBase.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxClassTagDescriptorBase.java @@ -165,7 +165,7 @@ public abstract class JavaFxClassTagDescriptorBase implements XmlElementDescript final String parentTagName = contextTag.getName(); if (!FxmlConstants.FX_DEFINE.equals(parentTagName)) { if (FxmlConstants.FX_ROOT.equals(parentTagName)) { - final Map properties = JavaFxPsiUtil.collectWritableProperties(psiClass); + final Map properties = JavaFxPsiUtil.getWritableProperties(psiClass); if (properties.get(name) != null) { return new JavaFxPropertyTagDescriptor(psiClass, name, false); } @@ -180,7 +180,7 @@ public abstract class JavaFxClassTagDescriptorBase implements XmlElementDescript } } } - final Map properties = JavaFxPsiUtil.collectWritableProperties(psiClass); + final Map properties = JavaFxPsiUtil.getWritableProperties(psiClass); if (properties.get(name) != null) { return new JavaFxPropertyTagDescriptor(psiClass, name, false); } @@ -227,7 +227,7 @@ public abstract class JavaFxClassTagDescriptorBase implements XmlElementDescript @NotNull private Set collectWritableProperties(final List children, final Function factory) { - final Map fieldList = JavaFxPsiUtil.collectWritableProperties(getPsiClass()); + final Map fieldList = JavaFxPsiUtil.getWritableProperties(getPsiClass()); for (PsiMember field : fieldList.values()) { children.add(factory.fun(field)); } @@ -246,7 +246,7 @@ public abstract class JavaFxClassTagDescriptorBase implements XmlElementDescript if (propertySetter != null) { return new JavaFxStaticSetterAttributeDescriptor(propertySetter, attributeName); } - final PsiMember psiMember = JavaFxPsiUtil.collectWritableProperties(psiClass).get(attributeName); + final PsiMember psiMember = JavaFxPsiUtil.getWritableProperties(psiClass).get(attributeName); if (psiMember != null) { return new JavaFxPropertyAttributeDescriptor(attributeName, psiClass); } @@ -331,7 +331,7 @@ public abstract class JavaFxClassTagDescriptorBase implements XmlElementDescript public boolean isReadOnlyAttribute(String attributeName) { final PsiClass psiClass = getPsiClass(); return psiClass != null && - !JavaFxPsiUtil.collectWritableProperties(psiClass).containsKey(attributeName) && + !JavaFxPsiUtil.getWritableProperties(psiClass).containsKey(attributeName) && !JavaFxPsiUtil.getConstructorNamedArgProperties(psiClass).contains(attributeName); } diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyAttributeDescriptor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyAttributeDescriptor.java index 80dad0aa12f8..e2d9fbd5ace7 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyAttributeDescriptor.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyAttributeDescriptor.java @@ -190,7 +190,7 @@ public class JavaFxPropertyAttributeDescriptor extends BasicXmlAttributeDescript final List remainingPropertyNames = propertyNames.subList(1, propertyNames.size()); for (String propertyName : remainingPropertyNames) { if (aClass == null) break; - final PsiMember member = JavaFxPsiUtil.collectReadableProperties(aClass).get(propertyName); + final PsiMember member = JavaFxPsiUtil.getReadableProperties(aClass).get(propertyName); aClass = JavaFxPsiUtil.getPropertyClass(JavaFxPsiUtil.getReadablePropertyType(member), xmlAttributeValue); } if (aClass != null && !InheritanceUtil.isInheritorOrSelf(aClass, targetPropertyClass, true)) { @@ -273,7 +273,7 @@ public class JavaFxPropertyAttributeDescriptor extends BasicXmlAttributeDescript } private PsiMember getDeclarationMember() { - return JavaFxPsiUtil.collectWritableProperties(myPsiClass).get(myName); + return JavaFxPsiUtil.getWritableProperties(myPsiClass).get(myName); } @Override diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyTagDescriptor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyTagDescriptor.java index 3593b5ccf0a1..f1f576c4eaff 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyTagDescriptor.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyTagDescriptor.java @@ -176,7 +176,7 @@ public class JavaFxPropertyTagDescriptor implements XmlElementDescriptor { public PsiElement getDeclaration() { if (myPsiClass == null) return null; if (myStatic) return JavaFxPsiUtil.findStaticPropertySetter(myName, myPsiClass); - return JavaFxPsiUtil.collectWritableProperties(myPsiClass).get(myName); + return JavaFxPsiUtil.getWritableProperties(myPsiClass).get(myName); } @Override diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxComponentIdReferenceProvider.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxComponentIdReferenceProvider.java index 147a00c87245..895bd0f437a9 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxComponentIdReferenceProvider.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxComponentIdReferenceProvider.java @@ -250,7 +250,7 @@ public class JavaFxComponentIdReferenceProvider extends PsiReferenceProvider { @Nullable @Override public PsiElement resolve() { - return JavaFxPsiUtil.collectReadableProperties(myPsiClass).get(myFieldName); + return JavaFxPsiUtil.getReadableProperties(myPsiClass).get(myFieldName); } @NotNull @@ -268,7 +268,7 @@ public class JavaFxComponentIdReferenceProvider extends PsiReferenceProvider { private Object[] collectProperties(@NotNull PsiType propertyType, @NotNull Project project) { final PsiType resolvedType = JavaFxPsiUtil.getWritablePropertyType(propertyType, project); final List objs = new ArrayList<>(); - final Collection readableProperties = JavaFxPsiUtil.collectReadableProperties(myPsiClass).values(); + final Collection readableProperties = JavaFxPsiUtil.getReadableProperties(myPsiClass).values(); for (PsiMember readableMember : readableProperties) { final PsiType readableType = JavaFxPsiUtil.getReadablePropertyType(readableMember); if (readableType == null) continue;