From 49d62eebbf2b4fc114d0360d21cee66a998f9db8 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 14 Mar 2016 14:47:38 +0100 Subject: [PATCH] eclipse: don't add combineaccessrules if attribute was not present in the classpath (IDEA-151755) --- .../eclipse/conversion/EclipseClasspathWriter.java | 14 +++++++++++--- .../round/relativePaths/relPaths/scnd/.classpath | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseClasspathWriter.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseClasspathWriter.java index 892b7e55291f..5111b7a6c6b7 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseClasspathWriter.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseClasspathWriter.java @@ -108,8 +108,12 @@ public class EclipseClasspathWriter { } } else if (entry instanceof ModuleOrderEntry) { - Element orderEntry = addOrderEntry(EclipseXml.SRC_KIND, '/' + ((ModuleOrderEntry)entry).getModuleName(), classpathRoot); - setAttributeIfAbsent(orderEntry, EclipseXml.COMBINEACCESSRULES_ATTR, EclipseXml.FALSE_VALUE); + final String path = '/' + ((ModuleOrderEntry)entry).getModuleName(); + final Element oldElement = getOldElement(EclipseXml.SRC_KIND, path); + Element orderEntry = addOrderEntry(EclipseXml.SRC_KIND, path, classpathRoot); + if (oldElement == null) { + setAttributeIfAbsent(orderEntry, EclipseXml.COMBINEACCESSRULES_ATTR, EclipseXml.FALSE_VALUE); + } setExported(orderEntry, ((ExportableOrderEntry)entry)); } else if (entry instanceof LibraryOrderEntry) { @@ -246,7 +250,7 @@ public class EclipseClasspathWriter { } private Element addOrderEntry(@NotNull String kind, String path, Element classpathRoot, int index) { - Element element = myOldEntries.get(kind + getJREKey(path)); + Element element = getOldElement(kind, path); if (element != null) { Element clonedElement = element.clone(); if (index == -1 || index >= classpathRoot.getContentSize()) { @@ -272,6 +276,10 @@ public class EclipseClasspathWriter { return orderEntry; } + private Element getOldElement(@NotNull String kind, String path) { + return myOldEntries.get(kind + getJREKey(path)); + } + private static String getJREKey(String path) { return path.startsWith(EclipseXml.JRE_CONTAINER) ? EclipseXml.JRE_CONTAINER : path; } diff --git a/plugins/eclipse/testData/round/relativePaths/relPaths/scnd/.classpath b/plugins/eclipse/testData/round/relativePaths/relPaths/scnd/.classpath index 62d6323aefcb..4ed904222d15 100644 --- a/plugins/eclipse/testData/round/relativePaths/relPaths/scnd/.classpath +++ b/plugins/eclipse/testData/round/relativePaths/relPaths/scnd/.classpath @@ -3,6 +3,7 @@ +