From 8a7a0109fca75b62ef1a117fff77bc30bdd6ab46 Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Mon, 12 Mar 2012 16:34:50 +0400 Subject: [PATCH] IDEA-76142: Gradle support - cannot update IDEA projects once one of build.gradle files changes Don't process content roots that point to the unexisting files --- .../gradle/diff/PlatformFacadeImpl.java | 18 ++++++++---------- .../model/intellij/ModuleAwareContentRoot.java | 16 ++++++++++++---- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/diff/PlatformFacadeImpl.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/diff/PlatformFacadeImpl.java index bd30cc0b6fa7..c3d5c91232ae 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/diff/PlatformFacadeImpl.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/diff/PlatformFacadeImpl.java @@ -11,15 +11,11 @@ import com.intellij.openapi.roots.impl.libraries.ProjectLibraryTable; import com.intellij.openapi.roots.libraries.LibraryTable; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.pom.java.LanguageLevel; -import com.intellij.util.Function; -import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.gradle.model.intellij.ModuleAwareContentRoot; import org.jetbrains.plugins.gradle.util.GradleUtil; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; +import java.util.*; /** * @author Denis Zhdanov @@ -52,12 +48,14 @@ public class PlatformFacadeImpl implements PlatformFacade { if (entries == null) { return Collections.emptyList(); } - return ContainerUtil.map(entries, new Function() { - @Override - public ModuleAwareContentRoot fun(ContentEntry entry) { - return new ModuleAwareContentRoot(module, entry); + List result = new ArrayList(); + for (ContentEntry entry : entries) { + final VirtualFile file = entry.getFile(); + if (file != null) { + result.add(new ModuleAwareContentRoot(module, entry)); } - }); + } + return result; } @NotNull diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/model/intellij/ModuleAwareContentRoot.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/model/intellij/ModuleAwareContentRoot.java index 6ed115123607..873fdccd5f58 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/model/intellij/ModuleAwareContentRoot.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/model/intellij/ModuleAwareContentRoot.java @@ -6,7 +6,6 @@ import com.intellij.openapi.roots.ExcludeFolder; import com.intellij.openapi.roots.SourceFolder; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * @author Denis Zhdanov @@ -16,10 +15,19 @@ public class ModuleAwareContentRoot implements ContentEntry { @NotNull private final Module myModule; @NotNull private final ContentEntry myDelegate; + @NotNull private final VirtualFile myFile; - public ModuleAwareContentRoot(@NotNull Module module, @NotNull ContentEntry delegate) { + public ModuleAwareContentRoot(@NotNull Module module, @NotNull ContentEntry delegate) throws IllegalArgumentException { myDelegate = delegate; myModule = module; + final VirtualFile file = delegate.getFile(); + if (file == null) { + throw new IllegalArgumentException(String.format( + "Detected attempt to create ModuleAwareContentRoot object for content root that points to the un-existing file - %s, module: %s", + delegate, module + )); + } + myFile = file; } @NotNull @@ -27,10 +35,10 @@ public class ModuleAwareContentRoot implements ContentEntry { return myModule; } + @NotNull @Override - @Nullable public VirtualFile getFile() { - return myDelegate.getFile(); + return myFile; } @Override