preserving module order

This commit is contained in:
Eugene Zhuravlev
2015-07-21 11:26:07 +02:00
parent 149af2c144
commit d6508614c5
3 changed files with 22 additions and 67 deletions
@@ -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<File> moduleFiles = new THashSet<File>(FileUtil.FILE_HASHING_STRATEGY);
//final List<File> moduleFiles = new ArrayList<File>();
final Set<File> foundFiles = new THashSet<File>(FileUtil.FILE_HASHING_STRATEGY);
final List<File> moduleFiles = new ArrayList<File>();
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<JpsModule> loadModules(@NotNull Collection<File> moduleFiles, @Nullable final JpsSdkType<?> projectSdkType,
public static List<JpsModule> loadModules(@NotNull List<File> moduleFiles, @Nullable final JpsSdkType<?> projectSdkType,
@NotNull final Map<String, String> pathVariables) {
List<JpsModule> modules = new ArrayList<JpsModule>();
List<Future<Pair<File, Element>>> futureModuleFilesContents = new ArrayList<Future<Pair<File, Element>>>();
@@ -49,28 +49,12 @@ public class JpsProjectSerializationTest extends JpsSerializationTestCase {
assertEquals("sampleProjectName", myProject.getName());
List<JpsModule> 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<JpsModule> 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");
@@ -14,29 +14,12 @@ public class JpsMavenModuleSerializationTest extends JpsSerializationTestCase {
loadProject("plugins/maven/jps-plugin/testData/compiler/classpathTest");
List<JpsModule> 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));