From abd3443fb7754bcf26b0b28cadbcd3a40b2efaff Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 25 Mar 2010 15:55:52 +0300 Subject: [PATCH] eclipse: reorder module src entry (IDEA-48111) --- .../conversion/EclipseClasspathReader.java | 18 +++++++++++++++--- .../round/sourcesAfterAll/test/.classpath | 6 ++++++ .../round/sourcesAfterAll/test/.project | 17 +++++++++++++++++ .../idea/eclipse/EclipseClasspathTest.java | 5 +++++ 4 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 plugins/eclipse/testData/round/sourcesAfterAll/test/.classpath create mode 100644 plugins/eclipse/testData/round/sourcesAfterAll/test/.project 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 1bf5f9832ca2..3723d5591465 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseClasspathReader.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseClasspathReader.java @@ -155,6 +155,7 @@ public class EclipseClasspathReader { } else { getContentEntry().addSourceFolder(VfsUtil.pathToUrl(myRootPath + "/" + path), testPattern != null && testPattern.length() > 0 && path.matches(testPattern)); + rearrangeOrderEntryOfType(rootModel, ModuleSourceOrderEntry.class); } } @@ -266,9 +267,7 @@ public class EclipseClasspathReader { unknownJdks.add(jdkName); } } - OrderEntry[] orderEntries = rootModel.getOrderEntries(); - orderEntries = ArrayUtil.append(orderEntries, orderEntries[0]); - rootModel.rearrangeOrderEntries(ArrayUtil.remove(orderEntries, 0)); + rearrangeOrderEntryOfType(rootModel, JdkOrderEntry.class); } else if (path.startsWith(EclipseXml.USER_LIBRARY)) { addNamedLibrary(rootModel, unknownLibraries, exported, getPresentableName(path), LibraryTablesRegistrar.PROJECT_LEVEL); @@ -289,6 +288,19 @@ public class EclipseClasspathReader { } } + private static void rearrangeOrderEntryOfType(ModifiableRootModel rootModel, Class orderEntryClass) { + OrderEntry[] orderEntries = rootModel.getOrderEntries(); + int moduleSourcesIdx = 0; + for (OrderEntry orderEntry : orderEntries) { + if (orderEntryClass.isAssignableFrom(orderEntry.getClass())) { + break; + } + moduleSourcesIdx++; + } + orderEntries = ArrayUtil.append(orderEntries, orderEntries[moduleSourcesIdx]); + rootModel.rearrangeOrderEntries(ArrayUtil.remove(orderEntries, moduleSourcesIdx)); + } + public static void setupOutput(ModifiableRootModel rootModel, final String path) { final CompilerModuleExtension compilerModuleExtension = rootModel.getModuleExtension(CompilerModuleExtension.class); compilerModuleExtension.setCompilerOutputPath(VfsUtil.pathToUrl(path)); diff --git a/plugins/eclipse/testData/round/sourcesAfterAll/test/.classpath b/plugins/eclipse/testData/round/sourcesAfterAll/test/.classpath new file mode 100644 index 000000000000..3f3893aff962 --- /dev/null +++ b/plugins/eclipse/testData/round/sourcesAfterAll/test/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/plugins/eclipse/testData/round/sourcesAfterAll/test/.project b/plugins/eclipse/testData/round/sourcesAfterAll/test/.project new file mode 100644 index 000000000000..f5a6693fe6c2 --- /dev/null +++ b/plugins/eclipse/testData/round/sourcesAfterAll/test/.project @@ -0,0 +1,17 @@ + + + root + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseClasspathTest.java b/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseClasspathTest.java index 998c28b03a5c..2dc6c706c0c5 100644 --- a/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseClasspathTest.java +++ b/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseClasspathTest.java @@ -206,4 +206,9 @@ public class EclipseClasspathTest extends IdeaTestCase { doTest(); } + public void testSourcesAfterAll() throws Exception { + doTest(); + } + + }