diff options
author | Jean-Baptiste Queru <jbq@google.com> | 2013-02-08 15:14:04 -0800 |
---|---|---|
committer | Jean-Baptiste Queru <jbq@google.com> | 2013-02-08 15:14:04 -0800 |
commit | 9edc8f6b58f71ec510ba36b838f115718d9a174d (patch) | |
tree | 06f6df92024fa534ff27e1c0b5fc8b2002848093 /plugins/eclipse | |
parent | b56ea2a18f232d79481e778085fd64e8ae486fc3 (diff) | |
download | idea-9edc8f6b58f71ec510ba36b838f115718d9a174d.tar.gz |
Snapshot of commit 84dc01e773388c2c72a1fc437f313dd5747e7809
from branch master of git://git.jetbrains.org/idea/community.git
Diffstat (limited to 'plugins/eclipse')
5 files changed, 26 insertions, 6 deletions
diff --git a/plugins/eclipse/common-eclipse-util/src/AbstractEclipseClasspathReader.java b/plugins/eclipse/common-eclipse-util/src/AbstractEclipseClasspathReader.java index e2b9662926bc..22dce5bfe9f9 100644 --- a/plugins/eclipse/common-eclipse-util/src/AbstractEclipseClasspathReader.java +++ b/plugins/eclipse/common-eclipse-util/src/AbstractEclipseClasspathReader.java @@ -78,7 +78,8 @@ public abstract class AbstractEclipseClasspathReader<T> { final String testPattern, Element element, int idx, final EclipseModuleManager eclipseModuleManager, - final ExpandMacroToPathMap macroMap) throws ConversionException { + final ExpandMacroToPathMap macroMap, + final Set<String> libs) throws ConversionException { String kind = element.getAttributeValue(EclipseXml.KIND_ATTR); if (kind == null) { throw new ConversionException("Missing classpathentry/@kind"); @@ -132,7 +133,7 @@ public abstract class AbstractEclipseClasspathReader<T> { } else if (kind.equals(EclipseXml.LIB_KIND)) { - final String libName = getPresentableName(path); + final String libName = getPresentableName(path, libs); final String linked = expandLinkedResourcesPath(macroMap, usedVariables, path); @@ -168,7 +169,7 @@ public abstract class AbstractEclipseClasspathReader<T> { throw new ConversionException("Incorrect 'classpathentry/var@path' format"); } - final String libName = getPresentableName(path); + final String libName = getPresentableName(path, libs); final String url = eclipseVariabledPath2Url(macroMap, usedVariables, path, 0); eclipseModuleManager.registerEclipseVariablePath(url, path); @@ -221,7 +222,13 @@ public abstract class AbstractEclipseClasspathReader<T> { @NotNull protected static String getPresentableName(@NotNull String path) { + return getPresentableName(path, null); + } + + @NotNull + protected static String getPresentableName(@NotNull String path, Set<String> names) { final String pathComponent = getLastPathComponent(path); + if (pathComponent != null && names != null && !names.add(pathComponent)) return path; return pathComponent != null ? pathComponent : path; } diff --git a/plugins/eclipse/common-eclipse-util/src/EclipseProjectFinder.java b/plugins/eclipse/common-eclipse-util/src/EclipseProjectFinder.java index 9b76c6ff7014..41041ae54198 100644 --- a/plugins/eclipse/common-eclipse-util/src/EclipseProjectFinder.java +++ b/plugins/eclipse/common-eclipse-util/src/EclipseProjectFinder.java @@ -64,6 +64,10 @@ public class EclipseProjectFinder implements EclipseXml { if (file.isFile()) { try { name = JDOMUtil.loadDocument(file).getRootElement().getChildText(NAME_TAG); + if (StringUtil.isEmptyOrSpaces(name)) { + return null; + } + name = name.replace("\n", " ").trim(); } catch (JDOMException e) { return null; diff --git a/plugins/eclipse/jps-plugin/src/org/jetbrains/jps/eclipse/model/JpsEclipseClasspathReader.java b/plugins/eclipse/jps-plugin/src/org/jetbrains/jps/eclipse/model/JpsEclipseClasspathReader.java index b9f431645c50..5adca0bb5ed7 100644 --- a/plugins/eclipse/jps-plugin/src/org/jetbrains/jps/eclipse/model/JpsEclipseClasspathReader.java +++ b/plugins/eclipse/jps-plugin/src/org/jetbrains/jps/eclipse/model/JpsEclipseClasspathReader.java @@ -210,10 +210,11 @@ class JpsEclipseClasspathReader extends AbstractEclipseClasspathReader<JpsModule final String testPattern, Element classpathElement, JpsMacroExpander expander) throws IOException { LOG.debug("start loading classpath for " + model.getName()); + final HashSet<String> libs = new HashSet<String>(); for (Object o : classpathElement.getChildren(EclipseXml.CLASSPATHENTRY_TAG)) { try { readClasspathEntry(model, new ArrayList<String>(), new ArrayList<String>(), new HashSet<String>(), new HashSet<String>(), - testPattern, (Element)o, 0, EclipseModuleManager.EMPTY, expander.getExpandMacroMap()); + testPattern, (Element)o, 0, EclipseModuleManager.EMPTY, expander.getExpandMacroMap(), libs); } catch (ConversionException e) { throw new IOException(e); diff --git a/plugins/eclipse/jps-plugin/src/org/jetbrains/jps/eclipse/model/JpsIdeaSpecificSettings.java b/plugins/eclipse/jps-plugin/src/org/jetbrains/jps/eclipse/model/JpsIdeaSpecificSettings.java index e1e1b8506a70..9d722746650e 100644 --- a/plugins/eclipse/jps-plugin/src/org/jetbrains/jps/eclipse/model/JpsIdeaSpecificSettings.java +++ b/plugins/eclipse/jps-plugin/src/org/jetbrains/jps/eclipse/model/JpsIdeaSpecificSettings.java @@ -118,7 +118,13 @@ class JpsIdeaSpecificSettings extends AbstractIdeaSpecificSettings<JpsModule, St } @Override - protected void readLanguageLevel(Element root, JpsModule model) throws InvalidDataException {} + protected void readLanguageLevel(Element root, JpsModule model) throws InvalidDataException { + final String languageLevel = root.getAttributeValue("LANGUAGE_LEVEL"); + final JpsJavaModuleExtension extension = getService().getOrCreateModuleExtension(model); + if (languageLevel != null) { + extension.setLanguageLevel(LanguageLevel.valueOf(languageLevel)); + } + } @Override protected void expandElement(Element root, JpsModule model) { diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseClasspathReader.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseClasspathReader.java index 422d6f8ff607..b02f00013e76 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseClasspathReader.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseClasspathReader.java @@ -36,6 +36,7 @@ import com.intellij.openapi.vfs.JarFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.util.ArrayUtil; +import com.intellij.util.containers.hash.HashSet; import org.jdom.Element; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.eclipse.*; @@ -99,11 +100,12 @@ public class EclipseClasspathReader extends AbstractEclipseClasspathReader<Modif } int idx = 0; final EclipseModuleManagerImpl eclipseModuleManager = EclipseModuleManagerImpl.getInstance(model.getModule()); + final HashSet<String> libs = new HashSet<String>(); for (Object o : classpathElement.getChildren(EclipseXml.CLASSPATHENTRY_TAG)) { try { readClasspathEntry(model, unknownLibraries, unknownJdks, usedVariables, refsToModules, testPattern, (Element)o, idx++, eclipseModuleManager, - ((BasePathMacroManager)PathMacroManager.getInstance(model.getModule())).getExpandMacroMap()); + ((BasePathMacroManager)PathMacroManager.getInstance(model.getModule())).getExpandMacroMap(), libs); } catch (ConversionException e) { ErrorLog.rethrow(ErrorLog.Level.Warning, null, EclipseXml.CLASSPATH_FILE, e); |