From d6508614c535807e000a683e27c2b2212fc3e5ed Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Tue, 21 Jul 2015 11:21:37 +0200 Subject: [PATCH] preserving module order --- .../model/serialization/JpsProjectLoader.java | 13 +++-- .../JpsProjectSerializationTest.java | 47 ++++--------------- .../JpsMavenModuleSerializationTest.java | 29 +++--------- 3 files changed, 22 insertions(+), 67 deletions(-) diff --git a/jps/model-serialization/src/org/jetbrains/jps/model/serialization/JpsProjectLoader.java b/jps/model-serialization/src/org/jetbrains/jps/model/serialization/JpsProjectLoader.java index ac42e6304f86..4fa3ac3d83bb 100644 --- a/jps/model-serialization/src/org/jetbrains/jps/model/serialization/JpsProjectLoader.java +++ b/jps/model-serialization/src/org/jetbrains/jps/model/serialization/JpsProjectLoader.java @@ -49,7 +49,10 @@ import org.jetbrains.jps.service.SharedThreadPool; import java.io.File; import java.io.IOException; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.concurrent.Callable; import java.util.concurrent.Future; @@ -219,12 +222,12 @@ public class JpsProjectLoader extends JpsLoaderBase { Element componentRoot = JDomSerializationUtil.findComponent(root, "ProjectModuleManager"); if (componentRoot == null) return; - final Set moduleFiles = new THashSet(FileUtil.FILE_HASHING_STRATEGY); - //final List moduleFiles = new ArrayList(); + final Set foundFiles = new THashSet(FileUtil.FILE_HASHING_STRATEGY); + final List moduleFiles = new ArrayList(); for (Element moduleElement : JDOMUtil.getChildren(componentRoot.getChild("modules"), "module")) { final String path = moduleElement.getAttributeValue("filepath"); final File file = new File(path); - if (file.exists()) { + if (foundFiles.add(file) && file.exists()) { moduleFiles.add(file); } else { @@ -240,7 +243,7 @@ public class JpsProjectLoader extends JpsLoaderBase { } @NotNull - public static List loadModules(@NotNull Collection moduleFiles, @Nullable final JpsSdkType projectSdkType, + public static List loadModules(@NotNull List moduleFiles, @Nullable final JpsSdkType projectSdkType, @NotNull final Map pathVariables) { List modules = new ArrayList(); List>> futureModuleFilesContents = new ArrayList>>(); diff --git a/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsProjectSerializationTest.java b/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsProjectSerializationTest.java index 72ac2d456ed8..11fd9c14a968 100644 --- a/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsProjectSerializationTest.java +++ b/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsProjectSerializationTest.java @@ -49,28 +49,12 @@ public class JpsProjectSerializationTest extends JpsSerializationTestCase { assertEquals("sampleProjectName", myProject.getName()); List modules = myProject.getModules(); assertEquals(3, modules.size()); - - JpsModule main = null; - JpsModule xxx = null; - JpsModule util = null; - for (JpsModule module : modules) { - final String name = module.getName(); - if ("main".equals(name)) { - main = module; - } - else if ("util".equals(name)) { - util = module; - } - else if ("xxx".equals(name)) { - xxx = module; - } - else { - fail("Unexpected module name " + name); - } - } - assertNotNull("module 'main' was not loaded", main); - assertNotNull("module 'util' was not loaded", util); - assertNotNull("module 'xxx' was not loaded", xxx); + JpsModule main = modules.get(0); + assertEquals("main", main.getName()); + JpsModule util = modules.get(1); + assertEquals("util", util.getName()); + JpsModule xxx = modules.get(2); + assertEquals("xxx", xxx.getName()); assertTrue(FileUtil.filesEqual(new File(baseDirPath, "util"), JpsModelSerializationDataService.getBaseDirectory(util))); @@ -190,23 +174,8 @@ public class JpsProjectSerializationTest extends JpsSerializationTestCase { public void testSaveProject() { loadProject(SAMPLE_PROJECT_PATH); List modules = myProject.getModules(); - - JpsModule main = null, util = null; - for (JpsModule module : modules) { - final String name = module.getName(); - if ("main".equals(name)) { - main = module; - } - else if ("util".equals(name)) { - util = module; - } - } - - assertNotNull(main); - assertNotNull(util); - - doTestSaveModule(main, SAMPLE_PROJECT_PATH + "/main.iml"); - doTestSaveModule(util, SAMPLE_PROJECT_PATH + "/util/util.iml"); + doTestSaveModule(modules.get(0), SAMPLE_PROJECT_PATH + "/main.iml"); + doTestSaveModule(modules.get(1), SAMPLE_PROJECT_PATH + "/util/util.iml"); //tod[nik] remember that test output root wasn't specified and doesn't save it to avoid unnecessary modifications of iml files //doTestSaveModule(modules.get(2), "xxx/xxx.iml"); diff --git a/plugins/maven/jps-plugin/testSrc/org/jetbrains/jps/maven/model/JpsMavenModuleSerializationTest.java b/plugins/maven/jps-plugin/testSrc/org/jetbrains/jps/maven/model/JpsMavenModuleSerializationTest.java index c15a480592e5..8e2690b841c2 100644 --- a/plugins/maven/jps-plugin/testSrc/org/jetbrains/jps/maven/model/JpsMavenModuleSerializationTest.java +++ b/plugins/maven/jps-plugin/testSrc/org/jetbrains/jps/maven/model/JpsMavenModuleSerializationTest.java @@ -14,29 +14,12 @@ public class JpsMavenModuleSerializationTest extends JpsSerializationTestCase { loadProject("plugins/maven/jps-plugin/testData/compiler/classpathTest"); List modules = myProject.getModules(); assertEquals(3, modules.size()); - - JpsModule main = null; - JpsModule dep = null; - JpsModule depTest = null; - for (JpsModule module : modules) { - final String name = module.getName(); - if ("main".equals(name)) { - main = module; - } - else if ("dep-test".equals(name)) { - depTest = module; - } - else if ("dep".equals(name)) { - dep = module; - } - else { - fail("Unexpected module name " + name); - } - } - assertNotNull("module 'main' was not loaded", main); - assertNotNull("module 'depTest' was not loaded", depTest); - assertNotNull("module 'dep' was not loaded", dep); - + JpsModule main = modules.get(0); + assertEquals("main", main.getName()); + JpsModule dep = modules.get(1); + assertEquals("dep", dep.getName()); + JpsModule depTest = modules.get(2); + assertEquals("dep-test", depTest.getName()); for (JpsModule module : modules) { assertNotNull(getService().getExtension(module));