diff --git a/plexus-compilers/plexus-compiler-eclipse/src/main/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompiler.java b/plexus-compilers/plexus-compiler-eclipse/src/main/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompiler.java index 38ac0d85..3bbb781c 100644 --- a/plexus-compilers/plexus-compiler-eclipse/src/main/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompiler.java +++ b/plexus-compilers/plexus-compiler-eclipse/src/main/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompiler.java @@ -37,7 +37,9 @@ import java.nio.charset.IllegalCharsetNameException; import java.nio.charset.UnsupportedCharsetException; import java.util.ArrayList; +import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedHashSet; import java.util.List; import java.util.Locale; import java.util.Map.Entry; @@ -245,7 +247,7 @@ public CompilerResult performCompile( CompilerConfiguration config ) } // Collect sources - List allSources = new ArrayList<>(); + Set allSources = new HashSet<>(); for ( String source : config.getSourceLocations() ) { File srcFile = new File( source ); @@ -502,9 +504,9 @@ static boolean isReplaceProcessorPath( CompilerConfiguration config ) return false; } - static List resortSourcesToPutModuleInfoFirst( List allSources ) + static Set resortSourcesToPutModuleInfoFirst( Set allSources ) { - ArrayList resorted = new ArrayList<>(); + Set resorted = new LinkedHashSet<>( allSources.size() ); for ( String mi : allSources ) { @@ -652,7 +654,7 @@ private JavaCompiler getEcj() return null; } - private void addExtraSources( File dir, List allSources ) + private void addExtraSources( File dir, Set allSources ) { DirectoryScanner scanner = new DirectoryScanner(); scanner.setBasedir( dir.getAbsolutePath() ); diff --git a/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompilerTest.java b/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompilerTest.java index 095efe64..239d1cc8 100644 --- a/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompilerTest.java +++ b/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompilerTest.java @@ -4,7 +4,8 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import java.util.List; +import java.util.LinkedHashSet; +import java.util.Set; import java.util.stream.Stream; import static java.util.Arrays.asList; @@ -14,42 +15,42 @@ class EclipseJavaCompilerTest { @ParameterizedTest @MethodSource( "sources" ) - void testReorderedSources( List expected, List inputSources ) + void testReorderedSources( Set expected, Set inputSources ) { - List resorted = EclipseJavaCompiler.resortSourcesToPutModuleInfoFirst( inputSources ); + Set resorted = EclipseJavaCompiler.resortSourcesToPutModuleInfoFirst( inputSources ); assertEquals( expected, resorted ); } static Stream sources() { - List expectedOrder = asList( + Set expectedOrder = new LinkedHashSet<>( asList( "module-info.java", "plexus/A.java", "plexus/B.java", "eclipse/A.java" - ); + ) ); - List moduleInfoAlreadyFirst = asList( + Set moduleInfoAlreadyFirst = new LinkedHashSet<>( asList( "module-info.java", "plexus/A.java", "plexus/B.java", "eclipse/A.java" - ); + ) ); - List moduleInfoSomewhereInTheMiddle = asList( + Set moduleInfoSomewhereInTheMiddle = new LinkedHashSet<>( asList( "plexus/A.java", "module-info.java", "plexus/B.java", "eclipse/A.java" - ); + ) ); - List moduleInfoAsLast = asList( + Set moduleInfoAsLast = new LinkedHashSet<>( asList( "plexus/A.java", "plexus/B.java", "eclipse/A.java", "module-info.java" - ); + ) ); return Stream.of( Arguments.arguments( expectedOrder, moduleInfoAlreadyFirst ),