make DomElement#getXmlTag nullable and adapt some clients

inspired by https://github.com/JetBrains/intellij-community/pull/796
This commit is contained in:
peter
2018-07-04 10:01:25 +02:00
parent 64a674fa98
commit 5f84ebda2c
8 changed files with 23 additions and 14 deletions
@@ -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();
@@ -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<String> getId();
@@ -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
@@ -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";
@@ -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
}
}
@@ -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) {
@@ -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<ExtensionCandidate> 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 <extensions defaultExtensionNs="com"><intellij.console.folding ...
@@ -36,6 +36,7 @@ import java.lang.reflect.Type;
public interface DomElement extends AnnotatedElement, UserDataHolder {
DomElement[] EMPTY_ARRAY = new DomElement[0];
@Nullable
XmlTag getXmlTag();
/**