This is an automated email from the ASF dual-hosted git repository. khmarbaise pushed a commit to branch MDEP-831 in repository https://gitbox.apache.org/repos/asf/maven-dependency-plugin.git
commit 5ca88bc815fc7d001f39fbeffcf2f1534ebc0266 Author: Karl Heinz Marbaise <khmarba...@apache.org> AuthorDate: Tue Oct 18 14:20:39 2022 +0200 [MDEP-831] - Remove not used dependencies / Replace parts - Removed commons-collection4 replaced with own implementation. - Removed commons-io as well. - Removed plexus-io as well. - Removed commons-beanutils. --- pom.xml | 35 +--- .../plugins/dependency/DisplayAncestorsMojo.java | 3 +- .../dependency/analyze/AbstractAnalyzeMojo.java | 180 +++++++++++---------- .../dependency/analyze/AnalyzeDuplicateMojo.java | 25 ++- .../maven/plugins/dependency/analyze/Util.java | 58 +++++++ .../resolvers/ResolveDependencySourcesMojo.java | 6 +- .../dependency/AbstractDependencyMojoTestCase.java | 18 +-- .../maven/plugins/dependency/DirectoryUtil.java | 59 +++++++ .../maven/plugins/dependency/analyze/UtilTest.java | 113 +++++++++++++ .../fromDependencies/TestCopyDependenciesMojo.java | 7 +- .../utils/filters/TestDestFileFilter.java | 11 +- .../utils/filters/TestMarkerFileFilter.java | 12 +- .../utils/filters/TestResolveMarkerFileFilter.java | 6 +- .../markers/TestDefaultMarkerFileHandler.java | 9 +- .../utils/markers/TestUnpackMarkerFileHandler.java | 14 +- 15 files changed, 375 insertions(+), 181 deletions(-) diff --git a/pom.xml b/pom.xml index b3de43a3..5b052336 100644 --- a/pom.xml +++ b/pom.xml @@ -166,11 +166,6 @@ under the License. <artifactId>maven-reporting-impl</artifactId> <version>3.2.0</version> </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - <version>2.11.0</version> - </dependency> <!-- plexus --> <dependency> @@ -183,12 +178,6 @@ under the License. <artifactId>plexus-utils</artifactId> <version>3.4.2</version> </dependency> - <dependency> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-io</artifactId> - <version>3.4.0</version> - </dependency> - <!-- shared --> <dependency> <groupId>org.apache.maven.shared</groupId> @@ -216,18 +205,6 @@ under the License. <version>3.3.4</version> </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-lang3</artifactId> - <version>3.12.0</version> - </dependency> - - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-collections4</artifactId> - <version>4.2</version> - </dependency> - <!-- dependencies to annotations --> <dependency> <groupId>org.apache.maven.plugin-tools</groupId> @@ -273,6 +250,12 @@ under the License. <version>4.13.2</version> <scope>test</scope> </dependency> + <dependency> + <groupId>org.assertj</groupId> + <artifactId>assertj-core</artifactId> + <version>3.23.1</version> + <scope>test</scope> + </dependency> <dependency> <groupId>org.apache.maven.plugin-testing</groupId> <artifactId>maven-plugin-testing-harness</artifactId> @@ -318,12 +301,6 @@ under the License. <version>${slf4j.version}</version> <scope>test</scope> </dependency> - <dependency> - <groupId>commons-beanutils</groupId> - <artifactId>commons-beanutils</artifactId> - <version>1.9.4</version> - </dependency> - </dependencies> <build> diff --git a/src/main/java/org/apache/maven/plugins/dependency/DisplayAncestorsMojo.java b/src/main/java/org/apache/maven/plugins/dependency/DisplayAncestorsMojo.java index 4c2ea9ea..08823a02 100644 --- a/src/main/java/org/apache/maven/plugins/dependency/DisplayAncestorsMojo.java +++ b/src/main/java/org/apache/maven/plugins/dependency/DisplayAncestorsMojo.java @@ -19,7 +19,6 @@ package org.apache.maven.plugins.dependency; * under the License. */ -import org.apache.commons.lang3.StringUtils; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; @@ -62,7 +61,7 @@ public class DisplayAncestorsMojo } else { - getLog().info( String.format( Locale.US, "Ancestor POMs: %s", StringUtils.join( ancestors, " <- " ) ) ); + getLog().info( String.format( Locale.US, "Ancestor POMs: %s", String.join( " <- ", ancestors ) ) ); } } diff --git a/src/main/java/org/apache/maven/plugins/dependency/analyze/AbstractAnalyzeMojo.java b/src/main/java/org/apache/maven/plugins/dependency/analyze/AbstractAnalyzeMojo.java index e069bd46..15560d44 100644 --- a/src/main/java/org/apache/maven/plugins/dependency/analyze/AbstractAnalyzeMojo.java +++ b/src/main/java/org/apache/maven/plugins/dependency/analyze/AbstractAnalyzeMojo.java @@ -28,9 +28,9 @@ import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; -import org.apache.commons.lang3.StringUtils; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.resolver.filter.ArtifactFilter; import org.apache.maven.plugin.AbstractMojo; @@ -492,24 +492,22 @@ public abstract class AbstractAnalyzeMojo if ( artifacts.isEmpty() ) { getLog().info( " None" ); + return; } - else + for ( Artifact artifact : artifacts ) { - for ( Artifact artifact : artifacts ) - { - // called because artifact will set the version to -SNAPSHOT only if I do this. MNG-2961 - artifact.isSnapshot(); - - if ( warn ) - { - logDependencyWarning( " " + artifact ); - } - else - { - getLog().info( " " + artifact ); - } + // called because artifact will set the version to -SNAPSHOT only if I do this. MNG-2961 + artifact.isSnapshot(); + if ( warn ) + { + logDependencyWarning( " " + artifact ); + } + else + { + getLog().info( " " + artifact ); } + } } @@ -518,32 +516,31 @@ public abstract class AbstractAnalyzeMojo if ( artifacts.isEmpty() ) { getLog().info( " None" ); + return; } - else + + for ( Map.Entry<Artifact, Set<String>> entry : artifacts.entrySet() ) { - for ( Map.Entry<Artifact, Set<String>> entry : artifacts.entrySet() ) - { - // called because artifact will set the version to -SNAPSHOT only if I do this. MNG-2961 - entry.getKey().isSnapshot(); + // called because artifact will set the version to -SNAPSHOT only if I do this. MNG-2961 + entry.getKey().isSnapshot(); - if ( warn ) + if ( warn ) + { + logDependencyWarning( " " + entry.getKey() ); + for ( String clazz : entry.getValue() ) { - logDependencyWarning( " " + entry.getKey() ); - for ( String clazz : entry.getValue() ) - { - logDependencyWarning( " class " + clazz ); - } + logDependencyWarning( " class " + clazz ); } - else + } + else + { + getLog().info( " " + entry.getKey() ); + for ( String clazz : entry.getValue() ) { - getLog().info( " " + entry.getKey() ); - for ( String clazz : entry.getValue() ) - { - getLog().info( " class " + clazz ); - } + getLog().info( " class " + clazz ); } - } + } } @@ -561,78 +558,83 @@ public abstract class AbstractAnalyzeMojo private void writeDependencyXML( Set<Artifact> artifacts ) { - if ( !artifacts.isEmpty() ) + if ( artifacts.isEmpty() ) { - getLog().info( "Add the following to your pom to correct the missing dependencies: " ); + return; + } - StringWriter out = new StringWriter(); - PrettyPrintXMLWriter writer = new PrettyPrintXMLWriter( out ); + getLog().info( "Add the following to your pom to correct the missing dependencies: " ); - for ( Artifact artifact : artifacts ) - { - // called because artifact will set the version to -SNAPSHOT only if I do this. MNG-2961 - artifact.isSnapshot(); + StringWriter out = new StringWriter(); + PrettyPrintXMLWriter writer = new PrettyPrintXMLWriter( out ); - writer.startElement( "dependency" ); - writer.startElement( "groupId" ); - writer.writeText( artifact.getGroupId() ); - writer.endElement(); - writer.startElement( "artifactId" ); - writer.writeText( artifact.getArtifactId() ); - writer.endElement(); - writer.startElement( "version" ); - writer.writeText( artifact.getBaseVersion() ); - if ( !StringUtils.isBlank( artifact.getClassifier() ) ) - { - writer.startElement( "classifier" ); - writer.writeText( artifact.getClassifier() ); - writer.endElement(); - } + for ( Artifact artifact : artifacts ) + { + // called because artifact will set the version to -SNAPSHOT only if I do this. MNG-2961 + artifact.isSnapshot(); + + writer.startElement( "dependency" ); + writer.startElement( "groupId" ); + writer.writeText( artifact.getGroupId() ); + writer.endElement(); + writer.startElement( "artifactId" ); + writer.writeText( artifact.getArtifactId() ); + writer.endElement(); + writer.startElement( "version" ); + writer.writeText( artifact.getBaseVersion() ); + + if ( Objects.nonNull( artifact.getClassifier() ) && !artifact.getClassifier().isEmpty() ) + { + writer.startElement( "classifier" ); + writer.writeText( artifact.getClassifier() ); writer.endElement(); + } + writer.endElement(); - if ( !Artifact.SCOPE_COMPILE.equals( artifact.getScope() ) ) - { - writer.startElement( "scope" ); - writer.writeText( artifact.getScope() ); - writer.endElement(); - } + if ( !Artifact.SCOPE_COMPILE.equals( artifact.getScope() ) ) + { + writer.startElement( "scope" ); + writer.writeText( artifact.getScope() ); writer.endElement(); } - - getLog().info( System.lineSeparator() + out.getBuffer() ); + writer.endElement(); } + + getLog().info( System.lineSeparator() + out.getBuffer() ); } private void writeScriptableOutput( Set<Artifact> artifacts ) { - if ( !artifacts.isEmpty() ) + if ( artifacts.isEmpty() ) { - getLog().info( "Missing dependencies: " ); - String pomFile = baseDir.getAbsolutePath() + File.separatorChar + "pom.xml"; - StringBuilder buf = new StringBuilder(); + return; + } - for ( Artifact artifact : artifacts ) - { - // called because artifact will set the version to -SNAPSHOT only if I do this. MNG-2961 - artifact.isSnapshot(); - - //CHECKSTYLE_OFF: LineLength - buf.append( scriptableFlag ) - .append( ":" ) - .append( pomFile ) - .append( ":" ) - .append( artifact.getDependencyConflictId() ) - .append( ":" ) - .append( artifact.getClassifier() ) - .append( ":" ) - .append( artifact.getBaseVersion() ) - .append( ":" ) - .append( artifact.getScope() ) - .append( System.lineSeparator() ); - //CHECKSTYLE_ON: LineLength - } - getLog().info( System.lineSeparator() + buf ); + getLog().info( "Missing dependencies: " ); + String pomFile = baseDir.getAbsolutePath() + File.separatorChar + "pom.xml"; + StringBuilder buf = new StringBuilder(); + + for ( Artifact artifact : artifacts ) + { + // called because artifact will set the version to -SNAPSHOT only if I do this. MNG-2961 + artifact.isSnapshot(); + + //CHECKSTYLE_OFF: LineLength + buf.append( scriptableFlag ) + .append( ":" ) + .append( pomFile ) + .append( ":" ) + .append( artifact.getDependencyConflictId() ) + .append( ":" ) + .append( artifact.getClassifier() ) + .append( ":" ) + .append( artifact.getBaseVersion() ) + .append( ":" ) + .append( artifact.getScope() ) + .append( System.lineSeparator() ); + //CHECKSTYLE_ON: LineLength } + getLog().info( System.lineSeparator() + buf ); } private List<Artifact> filterDependencies( Set<Artifact> artifacts, String[] excludes ) diff --git a/src/main/java/org/apache/maven/plugins/dependency/analyze/AnalyzeDuplicateMojo.java b/src/main/java/org/apache/maven/plugins/dependency/analyze/AnalyzeDuplicateMojo.java index 552f4981..5bff63c3 100644 --- a/src/main/java/org/apache/maven/plugins/dependency/analyze/AnalyzeDuplicateMojo.java +++ b/src/main/java/org/apache/maven/plugins/dependency/analyze/AnalyzeDuplicateMojo.java @@ -27,8 +27,8 @@ import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; -import org.apache.commons.collections4.CollectionUtils; import org.apache.maven.model.Dependency; import org.apache.maven.model.Model; import org.apache.maven.model.io.xpp3.MavenXpp3Reader; @@ -49,13 +49,13 @@ import org.codehaus.plexus.util.xml.pull.XmlPullParserException; */ @Mojo( name = "analyze-duplicate", aggregator = false, threadSafe = true ) public class AnalyzeDuplicateMojo - extends AbstractMojo + extends AbstractMojo { public static final String MESSAGE_DUPLICATE_DEP_IN_DEPENDENCIES = - "List of duplicate dependencies defined in <dependencies/> in your pom.xml:\n"; + "List of duplicate dependencies defined in <dependencies/> in your pom.xml:\n"; public static final String MESSAGE_DUPLICATE_DEP_IN_DEPMGMT = - "List of duplicate dependencies defined in <dependencyManagement/> in your pom.xml:\n"; + "List of duplicate dependencies defined in <dependencyManagement/> in your pom.xml:\n"; /** * Skip plugin execution completely. @@ -76,7 +76,7 @@ public class AnalyzeDuplicateMojo */ @Override public void execute() - throws MojoExecutionException, MojoFailureException + throws MojoExecutionException, MojoFailureException { if ( skip ) { @@ -105,7 +105,7 @@ public class AnalyzeDuplicateMojo if ( model.getDependencyManagement() != null && model.getDependencyManagement().getDependencies() != null ) { duplicateDependenciesManagement = - findDuplicateDependencies( model.getDependencyManagement().getDependencies() ); + findDuplicateDependencies( model.getDependencyManagement().getDependencies() ); } if ( getLog().isInfoEnabled() ) @@ -151,15 +151,10 @@ public class AnalyzeDuplicateMojo private Set<String> findDuplicateDependencies( List<Dependency> modelDependencies ) { - List<String> modelDependencies2 = new ArrayList<>(); - for ( Dependency dep : modelDependencies ) - { - modelDependencies2.add( dep.getManagementKey() ); - } - - // @formatter:off + List<String> modelDependencies2 = + modelDependencies.stream().map( Dependency::getManagementKey ).collect( Collectors.toCollection( + ArrayList::new ) ); return new LinkedHashSet<>( - CollectionUtils.disjunction( modelDependencies2, new LinkedHashSet<>( modelDependencies2 ) ) ); - // @formatter:on + Util.symmetricDifference( modelDependencies2, new LinkedHashSet<>( modelDependencies2 ) ) ); } } diff --git a/src/main/java/org/apache/maven/plugins/dependency/analyze/Util.java b/src/main/java/org/apache/maven/plugins/dependency/analyze/Util.java new file mode 100644 index 00000000..84a1e0fc --- /dev/null +++ b/src/main/java/org/apache/maven/plugins/dependency/analyze/Util.java @@ -0,0 +1,58 @@ +package org.apache.maven.plugins.dependency.analyze; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import static java.util.function.Function.identity; +import static java.util.stream.Collectors.collectingAndThen; +import static java.util.stream.Collectors.groupingBy; +import static java.util.stream.Collectors.summingInt; +import static java.util.stream.Collectors.toList; + +class Util +{ + + static <O> Collection<O> symmetricDifference( Collection<O> elementsOne, + Collection<O> elementsTwo ) + { + Set<O> hashSet = new HashSet<>( elementsOne ); + hashSet.addAll( elementsTwo ); + + Map<O, Integer> cardinalityOne = + elementsOne.stream().collect( groupingBy( identity(), summingInt( e -> 1 ) ) ); + Map<O, Integer> cardinalityTwo = + elementsTwo.stream().collect( groupingBy( identity(), summingInt( e -> 1 ) ) ); + + return hashSet.stream().flatMap( item -> + { + int cardOne = cardinalityOne.getOrDefault( item, 0 ); + int cardTwo = cardinalityTwo.getOrDefault( item, 0 ); + int max = Math.max( cardOne, cardTwo ); + int min = Math.min( cardOne, cardTwo ); + return Collections.nCopies( max - min, item ).stream(); + } ).collect( collectingAndThen( toList(), Collections::unmodifiableList ) ); + } + +} diff --git a/src/main/java/org/apache/maven/plugins/dependency/resolvers/ResolveDependencySourcesMojo.java b/src/main/java/org/apache/maven/plugins/dependency/resolvers/ResolveDependencySourcesMojo.java index 95d16880..48bb5639 100644 --- a/src/main/java/org/apache/maven/plugins/dependency/resolvers/ResolveDependencySourcesMojo.java +++ b/src/main/java/org/apache/maven/plugins/dependency/resolvers/ResolveDependencySourcesMojo.java @@ -19,7 +19,8 @@ package org.apache.maven.plugins.dependency.resolvers; * under the License. */ -import org.apache.commons.lang3.StringUtils; +import java.util.Objects; + import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; @@ -49,7 +50,8 @@ public class ResolveDependencySourcesMojo protected void doExecute() throws MojoExecutionException { - if ( StringUtils.isEmpty( this.classifier ) ) + + if ( Objects.isNull( this.classifier ) || this.classifier.isEmpty() ) { this.classifier = SOURCE_CLASSIFIER; } diff --git a/src/test/java/org/apache/maven/plugins/dependency/AbstractDependencyMojoTestCase.java b/src/test/java/org/apache/maven/plugins/dependency/AbstractDependencyMojoTestCase.java index c985594d..f08531b6 100644 --- a/src/test/java/org/apache/maven/plugins/dependency/AbstractDependencyMojoTestCase.java +++ b/src/test/java/org/apache/maven/plugins/dependency/AbstractDependencyMojoTestCase.java @@ -20,18 +20,16 @@ package org.apache.maven.plugins.dependency; */ import java.io.File; -import java.io.IOException; -import org.apache.commons.io.FileUtils; import org.apache.maven.plugin.LegacySupport; import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.testing.AbstractMojoTestCase; import org.apache.maven.plugins.dependency.testUtils.DependencyArtifactStubFactory; import org.codehaus.plexus.component.repository.exception.ComponentLookupException; import org.eclipse.aether.DefaultRepositorySystemSession; import org.eclipse.aether.RepositorySystem; import org.eclipse.aether.repository.LocalRepository; import org.eclipse.aether.repository.LocalRepositoryManager; -import org.apache.maven.plugin.testing.AbstractMojoTestCase; public abstract class AbstractDependencyMojoTestCase extends AbstractMojoTestCase @@ -54,7 +52,7 @@ public abstract class AbstractDependencyMojoTestCase super.setUp(); testDir = new File( getBasedir(), "target" + File.separatorChar + "unit-tests" + File.separatorChar + testDirStr + File.separatorChar ); - FileUtils.deleteDirectory( testDir ); + DirectoryUtil.deleteDirectories( testDir ); assertFalse( testDir.exists() ); stubFactory = new DependencyArtifactStubFactory( this.testDir, createFiles, flattenedPath ); @@ -64,15 +62,7 @@ public abstract class AbstractDependencyMojoTestCase { if ( testDir != null ) { - try - { - FileUtils.deleteDirectory( testDir ); - } - catch ( IOException e ) - { - e.printStackTrace(); - fail( "Trying to remove directory:" + testDir + System.lineSeparator() + e.toString() ); - } + DirectoryUtil.deleteDirectories( testDir ); assertFalse( testDir.exists() ); } } @@ -82,7 +72,7 @@ public abstract class AbstractDependencyMojoTestCase { mojo.copyFile( artifact, destFile ); } - + protected void installLocalRepository( LegacySupport legacySupport ) throws ComponentLookupException diff --git a/src/test/java/org/apache/maven/plugins/dependency/DirectoryUtil.java b/src/test/java/org/apache/maven/plugins/dependency/DirectoryUtil.java new file mode 100644 index 00000000..fa737a63 --- /dev/null +++ b/src/test/java/org/apache/maven/plugins/dependency/DirectoryUtil.java @@ -0,0 +1,59 @@ +package org.apache.maven.plugins.dependency; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Comparator; +import java.util.stream.Stream; + +public final class DirectoryUtil +{ + public static void deleteDirectories( File directory ) + { + Path path = Paths.get( directory.getAbsolutePath() ); + deleteDirectories( path ); + } + + public static void deleteDirectories( Path directory ) + { + if ( !Files.exists( directory ) ) + { + return; + } + + try ( Stream<Path> dirs = Files.walk( directory ) ) + { + dirs.filter( Files::exists ) + .sorted( Comparator.reverseOrder() ) + .map( Path::toFile ) + .forEach( File::delete ); + } + catch ( IOException e ) + { + throw new RuntimeException( e ); + } + + } + +} diff --git a/src/test/java/org/apache/maven/plugins/dependency/analyze/UtilTest.java b/src/test/java/org/apache/maven/plugins/dependency/analyze/UtilTest.java new file mode 100644 index 00000000..c28956af --- /dev/null +++ b/src/test/java/org/apache/maven/plugins/dependency/analyze/UtilTest.java @@ -0,0 +1,113 @@ +package org.apache.maven.plugins.dependency.analyze; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; + +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class UtilTest +{ + + @Test + public void two_lists_one_with_duplicates() + { + List<String> s1 = new ArrayList<>(); + s1.add( "1" ); + s1.add( "2" ); + s1.add( "2" ); + s1.add( "3" ); + List<String> s2 = new ArrayList<>(); + s2.add( "3" ); + s2.add( "4" ); + Collection<String> result = Util.symmetricDifference( s1, s2 ); + + assertThat( result ).containsExactly( "1", "2", "2", "4" ); + } + + @Test + public void two_different_sets_with_commons_elements() + { + Set<String> s1 = new HashSet<>(); + s1.add( "1" ); + s1.add( "2" ); + s1.add( "3" ); + s1.add( "4" ); + s1.add( "5" ); + Set<String> s2 = new HashSet<>(); + s2.add( "2" ); + s2.add( "4" ); + s2.add( "6" ); + Collection<String> result = Util.symmetricDifference( s1, s2 ); + + assertThat( result ).containsExactly( "1", "3", "5", "6" ); + } + + @Test + public void second_set_only() + { + Set<String> s1 = new HashSet<>(); + s1.add( "1" ); + s1.add( "2" ); + s1.add( "3" ); + s1.add( "4" ); + s1.add( "5" ); + Set<String> s2 = new HashSet<>(); + s2.add( "3" ); + s2.add( "5" ); + Collection<String> result = Util.symmetricDifference( s1, s2 ); + + assertThat( result ).containsExactly( "1", "2", "4" ); + } + + @Test + public void list_with_duplicate() + { + List<String> s1 = new ArrayList<>(); + s1.add( "1" ); + s1.add( "2" ); + s1.add( "2" ); + + Collection<String> result = Util.symmetricDifference( s1, new LinkedHashSet<>( s1 ) ); + + assertThat( result ).containsExactly( "2" ); + } + + @Test + public void list_with_tripple_entries() + { + List<String> s1 = new ArrayList<>(); + s1.add( "1" ); + s1.add( "2" ); + s1.add( "2" ); + s1.add( "2" ); + + Collection<String> result = Util.symmetricDifference( s1, new LinkedHashSet<>( s1 ) ); + + assertThat( result ).containsExactly( "2", "2" ); + } +} diff --git a/src/test/java/org/apache/maven/plugins/dependency/fromDependencies/TestCopyDependenciesMojo.java b/src/test/java/org/apache/maven/plugins/dependency/fromDependencies/TestCopyDependenciesMojo.java index 842e6614..9f512f63 100644 --- a/src/test/java/org/apache/maven/plugins/dependency/fromDependencies/TestCopyDependenciesMojo.java +++ b/src/test/java/org/apache/maven/plugins/dependency/fromDependencies/TestCopyDependenciesMojo.java @@ -22,6 +22,7 @@ package org.apache.maven.plugins.dependency.fromDependencies; import java.io.File; import java.io.IOException; import java.util.HashSet; +import java.util.Objects; import java.util.Set; import org.apache.maven.artifact.Artifact; @@ -35,7 +36,6 @@ import org.apache.maven.plugins.dependency.AbstractDependencyMojoTestCase; import org.apache.maven.plugins.dependency.utils.DependencyUtil; import org.apache.maven.plugins.dependency.utils.markers.DefaultFileMarkerHandler; import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.util.StringUtils; public class TestCopyDependenciesMojo extends AbstractDependencyMojoTestCase @@ -455,11 +455,12 @@ public class TestCopyDependenciesMojo String useClassifier = artifact.getClassifier(); String useType = artifact.getType(); - if ( StringUtils.isNotEmpty( testClassifier ) ) + + if ( Objects.nonNull( testClassifier ) && !testClassifier.isEmpty() ) { useClassifier = "-" + testClassifier; // type is only used if classifier is used. - if ( StringUtils.isNotEmpty( testType ) ) + if ( Objects.nonNull( testType ) && !testType.isEmpty() ) { useType = testType; } diff --git a/src/test/java/org/apache/maven/plugins/dependency/utils/filters/TestDestFileFilter.java b/src/test/java/org/apache/maven/plugins/dependency/utils/filters/TestDestFileFilter.java index aacaae2e..19da9e9f 100644 --- a/src/test/java/org/apache/maven/plugins/dependency/utils/filters/TestDestFileFilter.java +++ b/src/test/java/org/apache/maven/plugins/dependency/utils/filters/TestDestFileFilter.java @@ -25,14 +25,13 @@ import java.util.HashSet; import java.util.Set; import junit.framework.TestCase; - -import org.apache.commons.io.FileUtils; import org.apache.maven.artifact.Artifact; import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugins.dependency.testUtils.DependencyArtifactStubFactory; -import org.apache.maven.plugins.dependency.utils.DependencyUtil; import org.apache.maven.plugin.logging.Log; import org.apache.maven.plugin.testing.SilentLog; +import org.apache.maven.plugins.dependency.DirectoryUtil; +import org.apache.maven.plugins.dependency.testUtils.DependencyArtifactStubFactory; +import org.apache.maven.plugins.dependency.utils.DependencyUtil; import org.apache.maven.shared.artifact.filter.collection.ArtifactFilterException; /** @@ -55,7 +54,7 @@ public class TestDestFileFilter super.setUp(); outputFolder = new File( "target/markers/" ); - FileUtils.deleteDirectory( outputFolder ); + DirectoryUtil.deleteDirectories( outputFolder ); assertFalse( outputFolder.exists() ); this.fact = new DependencyArtifactStubFactory( outputFolder, false ); @@ -65,7 +64,7 @@ public class TestDestFileFilter protected void tearDown() throws IOException { - FileUtils.deleteDirectory( outputFolder ); + DirectoryUtil.deleteDirectories( outputFolder ); } public File createFile( Artifact artifact ) diff --git a/src/test/java/org/apache/maven/plugins/dependency/utils/filters/TestMarkerFileFilter.java b/src/test/java/org/apache/maven/plugins/dependency/utils/filters/TestMarkerFileFilter.java index 8069c9d5..3fb414ec 100644 --- a/src/test/java/org/apache/maven/plugins/dependency/utils/filters/TestMarkerFileFilter.java +++ b/src/test/java/org/apache/maven/plugins/dependency/utils/filters/TestMarkerFileFilter.java @@ -26,9 +26,9 @@ import java.util.Set; import junit.framework.TestCase; -import org.apache.commons.io.FileUtils; import org.apache.maven.artifact.Artifact; import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugins.dependency.DirectoryUtil; import org.apache.maven.plugins.dependency.testUtils.DependencyArtifactStubFactory; import org.apache.maven.plugins.dependency.utils.markers.DefaultFileMarkerHandler; import org.apache.maven.plugin.logging.Log; @@ -55,7 +55,7 @@ public class TestMarkerFileFilter super.setUp(); outputFolder = new File( "target/markers/" ); - FileUtils.deleteDirectory( outputFolder ); + DirectoryUtil.deleteDirectories( outputFolder ); assertFalse( outputFolder.exists() ); this.fact = new DependencyArtifactStubFactory( outputFolder, false ); @@ -65,7 +65,7 @@ public class TestMarkerFileFilter protected void tearDown() throws IOException { - FileUtils.deleteDirectory( outputFolder ); + DirectoryUtil.deleteDirectories( outputFolder ); } public void testMarkerFile() @@ -99,7 +99,7 @@ public class TestMarkerFileFilter result = filter.filter( artifacts ); assertEquals( 2, result.size() ); assertTrue( handler.clearMarker() ); - FileUtils.deleteDirectory( outputFolder ); + DirectoryUtil.deleteDirectories( outputFolder ); assertFalse( outputFolder.exists() ); } @@ -119,7 +119,7 @@ public class TestMarkerFileFilter assertEquals( 2, result.size() ); assertTrue( handler.clearMarker() ); - FileUtils.deleteDirectory( outputFolder ); + DirectoryUtil.deleteDirectories( outputFolder ); assertFalse( outputFolder.exists() ); } @@ -157,7 +157,7 @@ public class TestMarkerFileFilter assertFalse( handler.isMarkerSet() ); snap.getFile().delete(); release.getFile().delete(); - FileUtils.deleteDirectory( outputFolder ); + DirectoryUtil.deleteDirectories( outputFolder ); assertFalse( outputFolder.exists() ); } diff --git a/src/test/java/org/apache/maven/plugins/dependency/utils/filters/TestResolveMarkerFileFilter.java b/src/test/java/org/apache/maven/plugins/dependency/utils/filters/TestResolveMarkerFileFilter.java index 4c36fe43..fbf822c9 100644 --- a/src/test/java/org/apache/maven/plugins/dependency/utils/filters/TestResolveMarkerFileFilter.java +++ b/src/test/java/org/apache/maven/plugins/dependency/utils/filters/TestResolveMarkerFileFilter.java @@ -29,9 +29,9 @@ import java.util.Set; import junit.framework.TestCase; -import org.apache.commons.io.FileUtils; import org.apache.maven.artifact.Artifact; import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugins.dependency.DirectoryUtil; import org.apache.maven.plugins.dependency.testUtils.DependencyArtifactStubFactory; import org.apache.maven.plugins.dependency.utils.markers.SourcesFileMarkerHandler; import org.apache.maven.plugin.logging.Log; @@ -58,7 +58,7 @@ public class TestResolveMarkerFileFilter super.setUp(); outputFolder = new File( "target/markers/" ); - FileUtils.deleteDirectory( outputFolder ); + DirectoryUtil.deleteDirectories( outputFolder ); assertFalse( outputFolder.exists() ); this.fact = new DependencyArtifactStubFactory( outputFolder, false ); @@ -68,7 +68,7 @@ public class TestResolveMarkerFileFilter protected void tearDown() throws IOException { - FileUtils.deleteDirectory( outputFolder ); + DirectoryUtil.deleteDirectories( outputFolder ); } public void testResolveFile() diff --git a/src/test/java/org/apache/maven/plugins/dependency/utils/markers/TestDefaultMarkerFileHandler.java b/src/test/java/org/apache/maven/plugins/dependency/utils/markers/TestDefaultMarkerFileHandler.java index 4d328cba..d7e544e2 100644 --- a/src/test/java/org/apache/maven/plugins/dependency/utils/markers/TestDefaultMarkerFileHandler.java +++ b/src/test/java/org/apache/maven/plugins/dependency/utils/markers/TestDefaultMarkerFileHandler.java @@ -25,17 +25,16 @@ import java.util.ArrayList; import java.util.List; import junit.framework.TestCase; - -import org.apache.commons.io.FileUtils; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.DefaultArtifact; import org.apache.maven.artifact.handler.ArtifactHandler; import org.apache.maven.artifact.handler.DefaultArtifactHandler; import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugins.dependency.testUtils.stubs.StubDefaultFileMarkerHandler; import org.apache.maven.plugin.logging.Log; import org.apache.maven.plugin.testing.SilentLog; +import org.apache.maven.plugins.dependency.DirectoryUtil; +import org.apache.maven.plugins.dependency.testUtils.stubs.StubDefaultFileMarkerHandler; /** * @author brianf @@ -66,14 +65,14 @@ public class TestDefaultMarkerFileHandler artifacts.add( artifact ); outputFolder = new File( "target/markers/" ); - FileUtils.deleteDirectory( this.outputFolder ); + DirectoryUtil.deleteDirectories( outputFolder ); assertFalse( outputFolder.exists() ); } protected void tearDown() throws IOException { - FileUtils.deleteDirectory( this.outputFolder ); + DirectoryUtil.deleteDirectories( outputFolder ); } public void testSetMarker() diff --git a/src/test/java/org/apache/maven/plugins/dependency/utils/markers/TestUnpackMarkerFileHandler.java b/src/test/java/org/apache/maven/plugins/dependency/utils/markers/TestUnpackMarkerFileHandler.java index 8501b217..c3a92b9c 100644 --- a/src/test/java/org/apache/maven/plugins/dependency/utils/markers/TestUnpackMarkerFileHandler.java +++ b/src/test/java/org/apache/maven/plugins/dependency/utils/markers/TestUnpackMarkerFileHandler.java @@ -24,15 +24,15 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; -import org.apache.commons.io.FileUtils; import org.apache.maven.artifact.Artifact; import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugins.dependency.fromConfiguration.ArtifactItem; -import org.apache.maven.plugins.dependency.testUtils.DependencyArtifactStubFactory; -import org.apache.maven.plugins.dependency.testUtils.stubs.StubUnpackFileMarkerHandler; import org.apache.maven.plugin.logging.Log; import org.apache.maven.plugin.testing.AbstractMojoTestCase; import org.apache.maven.plugin.testing.SilentLog; +import org.apache.maven.plugins.dependency.DirectoryUtil; +import org.apache.maven.plugins.dependency.fromConfiguration.ArtifactItem; +import org.apache.maven.plugins.dependency.testUtils.DependencyArtifactStubFactory; +import org.apache.maven.plugins.dependency.testUtils.stubs.StubUnpackFileMarkerHandler; public class TestUnpackMarkerFileHandler extends AbstractMojoTestCase @@ -54,7 +54,7 @@ public class TestUnpackMarkerFileHandler testDir = new File( getBasedir(), "target" + File.separatorChar + "unit-tests" + File.separatorChar + "unpack-markers" + File.separatorChar ); - FileUtils.deleteDirectory( testDir ); + DirectoryUtil.deleteDirectories( testDir ); assertFalse( testDir.exists() ); stubFactory = new DependencyArtifactStubFactory( this.testDir, false ); @@ -77,14 +77,14 @@ public class TestUnpackMarkerFileHandler artifactItems.add( artifactItem ); outputFolder = new File( "target/markers/" ); - FileUtils.deleteDirectory( this.outputFolder ); + DirectoryUtil.deleteDirectories( outputFolder ); assertFalse( outputFolder.exists() ); } protected void tearDown() throws IOException { - FileUtils.deleteDirectory( this.outputFolder ); + DirectoryUtil.deleteDirectories( outputFolder ); } /**