From d35074979670bad887e378876fadab2291cf20c4 Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Tue, 13 May 2014 12:42:26 +0400 Subject: [PATCH] IDEA-64312 Maven: frequent .iml changes after exclude/source folder updates --- .../impl/module/content/JpsSourceFolder.java | 4 +- .../importing/MavenRootModelAdapter.java | 5 +++ .../MavenSourceFoldersModuleExtension.java | 38 ++++++++++++++++--- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/platform/projectModel-impl/src/com/intellij/project/model/impl/module/content/JpsSourceFolder.java b/platform/projectModel-impl/src/com/intellij/project/model/impl/module/content/JpsSourceFolder.java index 3eb43fdc61c9..6b1d8b08b55e 100644 --- a/platform/projectModel-impl/src/com/intellij/project/model/impl/module/content/JpsSourceFolder.java +++ b/platform/projectModel-impl/src/com/intellij/project/model/impl/module/content/JpsSourceFolder.java @@ -19,6 +19,7 @@ import com.intellij.openapi.roots.SourceFolder; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jps.model.JpsSimpleElement; +import org.jetbrains.jps.model.java.JavaResourceRootType; import org.jetbrains.jps.model.java.JavaSourceRootProperties; import org.jetbrains.jps.model.java.JavaSourceRootType; import org.jetbrains.jps.model.module.JpsModuleSourceRoot; @@ -41,7 +42,8 @@ public class JpsSourceFolder extends JpsContentFolderBase implements SourceFolde @Override public boolean isTestSource() { - return mySourceRoot.getRootType() == JavaSourceRootType.TEST_SOURCE; + return mySourceRoot.getRootType() == JavaSourceRootType.TEST_SOURCE || + mySourceRoot.getRootType() == JavaResourceRootType.TEST_RESOURCE; } @NotNull diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenRootModelAdapter.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenRootModelAdapter.java index 08d534e2c630..65e1b5ed2dce 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenRootModelAdapter.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenRootModelAdapter.java @@ -128,6 +128,11 @@ public class MavenRootModelAdapter { return myRootModel; } + @NotNull + public String[] getSourceRootUrls(boolean includingTests) { + return myRootModelModuleExtension.getSourceRootUrls(includingTests); + } + public Module getModule() { return myRootModel.getModule(); } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenSourceFoldersModuleExtension.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenSourceFoldersModuleExtension.java index 6647dd4cb764..ae6ac04bbb1f 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenSourceFoldersModuleExtension.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenSourceFoldersModuleExtension.java @@ -25,6 +25,8 @@ import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.project.model.impl.module.JpsRootModel; import com.intellij.project.model.impl.module.content.JpsContentEntry; import com.intellij.project.model.impl.module.content.JpsSourceFolder; +import com.intellij.util.ArrayUtil; +import com.intellij.util.SmartList; import org.jdom.Element; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -32,15 +34,14 @@ import org.jetbrains.idea.maven.utils.Url; import org.jetbrains.jps.model.JpsElement; import org.jetbrains.jps.model.JpsElementFactory; import org.jetbrains.jps.model.ex.JpsElementBase; +import org.jetbrains.jps.model.java.JavaSourceRootProperties; +import org.jetbrains.jps.model.java.JavaSourceRootType; import org.jetbrains.jps.model.java.JpsJavaModuleType; import org.jetbrains.jps.model.module.JpsModule; import org.jetbrains.jps.model.module.JpsModuleSourceRoot; import org.jetbrains.jps.model.module.JpsModuleSourceRootType; -import java.util.Comparator; -import java.util.Iterator; -import java.util.Set; -import java.util.TreeSet; +import java.util.*; /** * @author Vladislav.Soroka @@ -97,7 +98,18 @@ public class MavenSourceFoldersModuleExtension extends ModuleExtension result = new SmartList(); + for (JpsSourceFolder eachFolder : myJpsSourceFolders) { + if (includingTests || !eachFolder.isTestSource()) { + result.add(eachFolder.getUrl()); + } + } + return ArrayUtil.toStringArray(result); + } @Nullable private ContentEntry getContentRootFor(@NotNull Url url) {