MDEP-77 created new method to exclude from the sets.
git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@522155 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java b/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java
index 942b42a..3f1e187 100644
--- a/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java
+++ b/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java
@@ -29,7 +29,9 @@
import java.util.Set;
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DefaultArtifact;
import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.util.StringUtils;
/**
*
@@ -89,10 +91,10 @@
usedDeclaredArtifacts.retainAll( usedArtifacts );
Set usedUndeclaredArtifacts = new HashSet( usedArtifacts );
- usedUndeclaredArtifacts.removeAll( declaredArtifacts );
+ usedUndeclaredArtifacts = removeAll( usedUndeclaredArtifacts, declaredArtifacts );
Set unusedDeclaredArtifacts = new HashSet( declaredArtifacts );
- unusedDeclaredArtifacts.removeAll( usedArtifacts );
+ unusedDeclaredArtifacts = removeAll( unusedDeclaredArtifacts, usedArtifacts );
return new ProjectDependencyAnalysis( usedDeclaredArtifacts, usedUndeclaredArtifacts,
unusedDeclaredArtifacts );
@@ -103,6 +105,43 @@
}
}
+ /**
+ * This method defines a new way to remove the artifacts by using the
+ * conflict id. We don't care about the version here because there can be
+ * only 1 for a given artifact anyway.
+ *
+ * @param start
+ * initial set
+ * @param remove
+ * set to exclude
+ * @return set with remove excluded
+ */
+ private Set removeAll( Set start, Set remove )
+ {
+ Set results = new HashSet( start.size() );
+ Iterator iter = start.iterator();
+ while ( iter.hasNext() )
+ {
+ Artifact artifact = (Artifact) iter.next();
+ Iterator iter2 = remove.iterator();
+ boolean found = false;
+ while ( iter2.hasNext() )
+ {
+ Artifact artifact2 = (Artifact) iter2.next();
+ DefaultArtifact a;
+ if ( artifact.getDependencyConflictId().equals( artifact2.getDependencyConflictId() ) )
+ {
+ found = true;
+ }
+ }
+ if ( !found )
+ {
+ results.add( artifact );
+ }
+ }
+ return results;
+ }
+
// private methods --------------------------------------------------------
private Map buildArtifactClassMap( MavenProject project )
@@ -115,10 +154,10 @@
for ( Iterator iterator = dependencyArtifacts.iterator(); iterator.hasNext(); )
{
Artifact artifact = (Artifact) iterator.next();
-
+
File file = artifact.getFile();
- if ( file != null && file.getName().endsWith( ".jar" ))
+ if ( file != null && file.getName().endsWith( ".jar" ) )
{
URL url = file.toURL();