From d7fbdec07ae7e19678c12b375c6df7653e0a6cc8 Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 31 Oct 2012 20:59:59 +0100 Subject: [PATCH] eclipse-jps: correct group roots (IDEA-94010) --- .../model/serialization/JpsProjectLoader.java | 17 +++++++++++++++-- .../model/JpsEclipseClasspathSerializer.java | 2 +- 2 files changed, 16 insertions(+), 3 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 170af38c0317..698969fe1ede 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 @@ -197,16 +197,29 @@ public class JpsProjectLoader extends JpsLoaderBase { if (componentRoot == null) return; final Element modules = componentRoot.getChild("modules"); List> futures = new ArrayList>(); - final List paths = new ArrayList(); + final List paths = new ArrayList(); + final List classpathDirs = new ArrayList(); for (Element moduleElement : JDOMUtil.getChildren(modules, "module")) { final String path = moduleElement.getAttributeValue("filepath"); + final File file = new File(path); + if (!file.exists()) { + LOG.info("Module '" + FileUtil.getNameWithoutExtension(file) + "' is skipped: " + file.getAbsolutePath() + " doesn't exist"); + continue; + } + + final JpsMacroExpander expander = createModuleMacroExpander(myPathVariables, file); + final Element moduleRoot = loadRootElement(file, expander); + final String classpathDir = moduleRoot.getAttributeValue(CLASSPATH_DIR_ATTRIBUTE); + if (classpathDir != null) { + classpathDirs.add(classpathDir); + } paths.add(path); } for (final String path : paths) { futures.add(ourThreadPool.submit(new Callable() { @Override public JpsModule call() throws Exception { - return loadModule(path, paths, projectSdkType); + return loadModule(path, classpathDirs, projectSdkType); } })); } diff --git a/plugins/eclipse/jps-plugin/src/org/jetbrains/jps/eclipse/model/JpsEclipseClasspathSerializer.java b/plugins/eclipse/jps-plugin/src/org/jetbrains/jps/eclipse/model/JpsEclipseClasspathSerializer.java index 0fb40b87c43c..2d84201bb338 100644 --- a/plugins/eclipse/jps-plugin/src/org/jetbrains/jps/eclipse/model/JpsEclipseClasspathSerializer.java +++ b/plugins/eclipse/jps-plugin/src/org/jetbrains/jps/eclipse/model/JpsEclipseClasspathSerializer.java @@ -31,7 +31,7 @@ public class JpsEclipseClasspathSerializer extends JpsModuleClasspathSerializer JpsMacroExpander expander, List paths) { try { final Document document = JDOMUtil.loadDocument(new File(classpathDir, EclipseXml.DOT_CLASSPATH_EXT)); - final JpsEclipseClasspathReader reader = new JpsEclipseClasspathReader(baseModulePath, paths, new HashSet()); + final JpsEclipseClasspathReader reader = new JpsEclipseClasspathReader(classpathDir, paths, new HashSet()); reader.readClasspath(module, null, document.getRootElement(), expander);//todo } catch (Exception e) {