From cc854b6cc9116cea74cf87e02c017e26951acba2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yann=20C=C3=A9bron?= Date: Thu, 1 Oct 2015 09:54:38 +0200 Subject: [PATCH] EA-73818 - NPE: DescriptorUtil.getPluginId --- .../src/inspections/DevKitInspectionBase.java | 8 ++++---- plugins/devkit/src/util/DescriptorUtil.java | 13 ++++++++++--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/plugins/devkit/src/inspections/DevKitInspectionBase.java b/plugins/devkit/src/inspections/DevKitInspectionBase.java index c27c77800c10..f254c1fc963c 100644 --- a/plugins/devkit/src/inspections/DevKitInspectionBase.java +++ b/plugins/devkit/src/inspections/DevKitInspectionBase.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -82,8 +82,9 @@ public abstract class DevKitInspectionBase extends BaseJavaLocalInspectionTool { @Nullable private static Set checkModule(Module module, PsiClass psiClass, @Nullable Set types, boolean includeActions) { final XmlFile pluginXml = PluginModuleType.getPluginXml(module); - if (!DescriptorUtil.isPluginXml(pluginXml)) return types; - assert pluginXml != null; + if (pluginXml == null) return null; + final DomFileElement fileElement = DescriptorUtil.getIdeaPlugin(pluginXml); + if (fileElement == null) return null; final String qualifiedName = psiClass.getQualifiedName(); if (qualifiedName != null) { @@ -93,7 +94,6 @@ public abstract class DevKitInspectionBase extends BaseJavaLocalInspectionTool { processPluginXml(pluginXml, finder, includeActions); // plugin.xml files - final DomFileElement fileElement = DescriptorUtil.getIdeaPlugin(pluginXml); for (Dependency dependency : fileElement.getRootElement().getDependencies()) { final GenericAttributeValue configFileAttribute = dependency.getConfigFile(); if (!DomUtil.hasXml(configFileAttribute)) continue; diff --git a/plugins/devkit/src/util/DescriptorUtil.java b/plugins/devkit/src/util/DescriptorUtil.java index 3cf574f9ca48..feb3fa2f4c39 100644 --- a/plugins/devkit/src/util/DescriptorUtil.java +++ b/plugins/devkit/src/util/DescriptorUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,7 @@ import com.intellij.psi.xml.XmlTag; import com.intellij.util.IncorrectOperationException; import com.intellij.util.xml.DomFileElement; import com.intellij.util.xml.DomManager; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.devkit.DevKitBundle; import org.jetbrains.idea.devkit.dom.IdeaPlugin; @@ -79,7 +80,12 @@ public class DescriptorUtil { if (pluginXml == null) { return null; } - return getIdeaPlugin(pluginXml).getRootElement().getPluginId(); + final DomFileElement ideaPlugin = getIdeaPlugin(pluginXml); + if (ideaPlugin == null) { + return null; + } + + return ideaPlugin.getRootElement().getPluginId(); } public static boolean isPluginXml(PsiFile file) { @@ -87,7 +93,8 @@ public class DescriptorUtil { return getIdeaPlugin((XmlFile)file) != null; } - public static DomFileElement getIdeaPlugin(XmlFile file) { + @Nullable + public static DomFileElement getIdeaPlugin(@NotNull XmlFile file) { return DomManager.getDomManager(file.getProject()).getFileElement(file, IdeaPlugin.class); } }