From 43ceb346cb00066287eaf2afb649fdd26f27ecbc Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Wed, 5 Oct 2016 10:27:11 +0300 Subject: [PATCH] maven: npe fix --- .../idea/maven/project/MavenProject.java | 2 +- .../actions/OpenOrCreateProfilesXmlAction.java | 3 ++- .../jetbrains/idea/maven/utils/MavenUtil.java | 17 ++++++++++++----- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProject.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProject.java index f2f016aec96c..83e42fcf169d 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProject.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProject.java @@ -289,7 +289,7 @@ public class MavenProject { return MavenUtil.findProfilesXmlFile(myFile); } - @NotNull + @Nullable public File getProfilesXmlIoFile() { return MavenUtil.getProfilesXmlIoFile(myFile); } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/OpenOrCreateProfilesXmlAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/OpenOrCreateProfilesXmlAction.java index 304e529585f1..d4b784a30a57 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/OpenOrCreateProfilesXmlAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/OpenOrCreateProfilesXmlAction.java @@ -16,6 +16,7 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.util.containers.ContainerUtil; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.utils.MavenFileTemplateGroupFactory; import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; @@ -28,7 +29,7 @@ public class OpenOrCreateProfilesXmlAction extends MavenOpenOrCreateFilesAction protected List getFiles(AnActionEvent e) { List result = new ArrayList<>(); for (MavenProject each : MavenActionUtil.getMavenProjects(e.getDataContext())) { - result.add(each.getProfilesXmlIoFile()); + ContainerUtil.addIfNotNull(result, each.getProfilesXmlIoFile()); } return result; } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java index 7455d840405c..d763e67cf50d 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java @@ -53,7 +53,6 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.*; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; -import com.intellij.psi.xml.XmlFile; import com.intellij.util.DisposeAwareRunnable; import com.intellij.util.SystemProperties; import com.intellij.util.concurrency.Semaphore; @@ -226,7 +225,7 @@ public class MavenUtil { return new File(PathManager.getSystemPath(), "Maven" + "/" + folder).getAbsoluteFile(); } - public static File getBaseDir(VirtualFile file) { + public static File getBaseDir(@NotNull VirtualFile file) { File baseDir = VfsUtilCore.virtualToIoFile(file.isDirectory() || file.getParent() == null ? file : file.getParent()); File dir = baseDir; do { @@ -239,12 +238,20 @@ public class MavenUtil { return baseDir; } + @Nullable public static VirtualFile findProfilesXmlFile(VirtualFile pomFile) { - return pomFile.getParent().findChild(MavenConstants.PROFILES_XML); + if (pomFile == null) return null; + VirtualFile parent = pomFile.getParent(); + if (parent == null) return null; + return parent.findChild(MavenConstants.PROFILES_XML); } + @Nullable public static File getProfilesXmlIoFile(VirtualFile pomFile) { - return new File(pomFile.getParent().getPath(), MavenConstants.PROFILES_XML); + if (pomFile == null) return null; + VirtualFile parent = pomFile.getParent(); + if (parent == null) return null; + return new File(parent.getPath(), MavenConstants.PROFILES_XML); } public static List collectFirsts(List> pairs) { @@ -298,7 +305,7 @@ public class MavenUtil { VirtualFile file, @NotNull MavenId projectId, MavenId parentId, - VirtualFile parentFile, + @Nullable VirtualFile parentFile, boolean interactive) throws IOException { Properties properties = new Properties(); Properties conditions = new Properties();