From 5f84ebda2c76abb05f7462f20ecab45f47cc10ab Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 4 Jul 2018 10:01:05 +0200 Subject: [PATCH] make DomElement#getXmlTag nullable and adapt some clients inspired by https://github.com/JetBrains/intellij-community/pull/796 --- .../ant/src/com/intellij/lang/ant/dom/AntDomProject.java | 2 +- plugins/devkit/devkit-core/src/dom/Extension.java | 6 ++++++ plugins/devkit/devkit-core/src/dom/ExtensionPoint.java | 6 ++++++ plugins/devkit/devkit-core/src/dom/Extensions.java | 5 +++++ .../src/inspections/ComponentModuleRegistrationChecker.kt | 6 +++--- .../src/refactoring/InspectionAutomaticRenamerFactory.java | 7 +------ plugins/devkit/devkit-core/src/util/ExtensionLocator.java | 4 ---- xml/dom-openapi/src/com/intellij/util/xml/DomElement.java | 1 + 8 files changed, 23 insertions(+), 14 deletions(-) diff --git a/plugins/ant/src/com/intellij/lang/ant/dom/AntDomProject.java b/plugins/ant/src/com/intellij/lang/ant/dom/AntDomProject.java index 7f91b8d8ba13..cf849d1b9191 100644 --- a/plugins/ant/src/com/intellij/lang/ant/dom/AntDomProject.java +++ b/plugins/ant/src/com/intellij/lang/ant/dom/AntDomProject.java @@ -162,7 +162,7 @@ public abstract class AntDomProject extends AntDomNamedElement implements Proper } public AntInstallation getAntInstallation() { - final AntConfigurationBase configuration = AntConfigurationBase.getInstance(getXmlTag().getProject()); + final AntConfigurationBase configuration = AntConfigurationBase.getInstance(getManager().getProject()); AntInstallation antInstallation = null; if (configuration != null) { antInstallation = configuration.getProjectDefaultAnt(); diff --git a/plugins/devkit/devkit-core/src/dom/Extension.java b/plugins/devkit/devkit-core/src/dom/Extension.java index 73d14ec3d515..c708dfe9b94a 100644 --- a/plugins/devkit/devkit-core/src/dom/Extension.java +++ b/plugins/devkit/devkit-core/src/dom/Extension.java @@ -16,12 +16,18 @@ package org.jetbrains.idea.devkit.dom; import com.intellij.ide.presentation.Presentation; +import com.intellij.psi.xml.XmlTag; import com.intellij.util.xml.*; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @Presentation(typeName = "Extension") public interface Extension extends DomElement { + @NotNull + @Override + XmlTag getXmlTag(); + @NameValue @Required(value = false) GenericAttributeValue getId(); diff --git a/plugins/devkit/devkit-core/src/dom/ExtensionPoint.java b/plugins/devkit/devkit-core/src/dom/ExtensionPoint.java index f4c7208f374a..1964fdbc6b47 100644 --- a/plugins/devkit/devkit-core/src/dom/ExtensionPoint.java +++ b/plugins/devkit/devkit-core/src/dom/ExtensionPoint.java @@ -18,6 +18,7 @@ package org.jetbrains.idea.devkit.dom; import com.intellij.ide.presentation.Presentation; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiField; +import com.intellij.psi.xml.XmlTag; import com.intellij.util.xml.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -33,6 +34,11 @@ public interface ExtensionPoint extends DomElement { IDEA_APPLICATION } + + @NotNull + @Override + XmlTag getXmlTag(); + @NotNull @Stubbed @NameValue diff --git a/plugins/devkit/devkit-core/src/dom/Extensions.java b/plugins/devkit/devkit-core/src/dom/Extensions.java index 92fa4c0d9584..355b82833c2c 100644 --- a/plugins/devkit/devkit-core/src/dom/Extensions.java +++ b/plugins/devkit/devkit-core/src/dom/Extensions.java @@ -15,6 +15,7 @@ */ package org.jetbrains.idea.devkit.dom; +import com.intellij.psi.xml.XmlTag; import com.intellij.util.xml.*; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -24,6 +25,10 @@ import java.util.List; public interface Extensions extends DomElement { + @NotNull + @Override + XmlTag getXmlTag(); + @NonNls String DEFAULT_PREFIX = "com.intellij"; diff --git a/plugins/devkit/devkit-core/src/inspections/ComponentModuleRegistrationChecker.kt b/plugins/devkit/devkit-core/src/inspections/ComponentModuleRegistrationChecker.kt index df997ab1fd4c..6029d9b3c316 100644 --- a/plugins/devkit/devkit-core/src/inspections/ComponentModuleRegistrationChecker.kt +++ b/plugins/devkit/devkit-core/src/inspections/ComponentModuleRegistrationChecker.kt @@ -99,9 +99,9 @@ fun checkProperXmlFileForExtension(element: Extension, for (childDescription in element.genericInfo.fixedChildrenDescriptions) { val domElement = childDescription.getValues(element).firstOrNull() ?: continue - val text = domElement.xmlTag?.value?.text ?: continue - val project = domElement.xmlTag.project - val psiClass = JavaPsiFacade.getInstance(project).findClass(text, GlobalSearchScope.projectScope(project)) + val tag = domElement.xmlTag ?: continue + val project = tag.project + val psiClass = JavaPsiFacade.getInstance(project).findClass(tag.value.text, GlobalSearchScope.projectScope(project)) if (psiClass != null && checkProperXmlFileForClass(element, holder, psiClass, ignoreClassList)) return } } diff --git a/plugins/devkit/devkit-core/src/refactoring/InspectionAutomaticRenamerFactory.java b/plugins/devkit/devkit-core/src/refactoring/InspectionAutomaticRenamerFactory.java index 6225dabecfd4..5e7960f4ec6f 100644 --- a/plugins/devkit/devkit-core/src/refactoring/InspectionAutomaticRenamerFactory.java +++ b/plugins/devkit/devkit-core/src/refactoring/InspectionAutomaticRenamerFactory.java @@ -17,7 +17,6 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.xml.XmlAttribute; import com.intellij.psi.xml.XmlAttributeValue; -import com.intellij.psi.xml.XmlTag; import com.intellij.refactoring.rename.UnresolvableCollisionUsageInfo; import com.intellij.refactoring.rename.naming.AutomaticRenamer; import com.intellij.refactoring.rename.naming.AutomaticRenamerFactory; @@ -91,11 +90,7 @@ public class InspectionAutomaticRenamerFactory implements AutomaticRenamerFactor @Nullable private static XmlAttribute getInspectionShortNameAttribute(Module module, PsiClass inspectionClass) { Extension extension = InspectionDescriptionInfo.findExtension(module, inspectionClass); - if (extension == null) { - return null; - } - XmlTag tag = extension.getXmlTag(); - return tag == null ? null : tag.getAttribute("shortName"); + return extension == null ? null : extension.getXmlTag().getAttribute("shortName"); } private static boolean isGetShortNameMethodOverridden(PsiClass inspectionClass) { diff --git a/plugins/devkit/devkit-core/src/util/ExtensionLocator.java b/plugins/devkit/devkit-core/src/util/ExtensionLocator.java index ef8932eec44c..f32e244d54fa 100644 --- a/plugins/devkit/devkit-core/src/util/ExtensionLocator.java +++ b/plugins/devkit/devkit-core/src/util/ExtensionLocator.java @@ -21,7 +21,6 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.devkit.dom.Extension; import org.jetbrains.idea.devkit.dom.ExtensionPoint; -import java.util.Collections; import java.util.List; import java.util.function.BiFunction; @@ -89,9 +88,6 @@ public abstract class ExtensionLocator { @Override public List findCandidates() { XmlTag epTag = myExtensionPoint.getXmlTag(); - if (epTag == null) { - return Collections.emptyList(); - } // We must search for the last part of EP name, because for instance 'com.intellij.console.folding' extension // may be declared as