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();