You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2014/05/19 14:38:46 UTC

svn commit: r1595871 - in /maven/shared/trunk/maven-dependency-tree: ./ src/it/multi-module-plugin/src/main/java/org/apache/maven/its/deptree/ src/main/java/org/apache/maven/shared/dependency/graph/ src/main/java/org/apache/maven/shared/dependency/grap...

Author: jvanzyl
Date: Mon May 19 12:38:45 2014
New Revision: 1595871

URL: http://svn.apache.org/r1595871
Log:
MSHARED-336: Create a method in the DependencyGraphBuilder that accepts the reactor projects and resolves dependencies from within the reactor
Changes from code review: https://github.com/apache/maven-shared/pull/6 with commit squashed
Submitted by: William Ferguson <wi...@xandar.com.au>

Added:
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/ArtifactKey.java
Removed:
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/ProjectReferenceKeyGenerator.java
Modified:
    maven/shared/trunk/maven-dependency-tree/pom.xml
    maven/shared/trunk/maven-dependency-tree/src/it/multi-module-plugin/src/main/java/org/apache/maven/its/deptree/ResolveDependenciesLifecycleParticipant.java
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilderException.java
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilder.java
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java

Modified: maven/shared/trunk/maven-dependency-tree/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/pom.xml?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/pom.xml (original)
+++ maven/shared/trunk/maven-dependency-tree/pom.xml Mon May 19 12:38:45 2014
@@ -150,11 +150,7 @@
             <goal>install</goal> <!-- So that the multi-module-plugin is installed into the integration-test repo -->
           </goals>
           <pomIncludes>
-            <!--pomInclude>*/pom.xml</pomInclude-->
-            <pomInclude>maven-version/pom.xml</pomInclude>
-            <pomInclude>mshared-167/pom.xml</pomInclude>
-            <pomInclude>multi-module-plugin/pom.xml</pomInclude>
-            <pomInclude>multi-module-test/pom.xml</pomInclude>
+            <pomInclude>*/pom.xml</pomInclude>
           </pomIncludes>
         </configuration>
         <executions>
@@ -171,23 +167,6 @@
       <plugin>
         <groupId>org.apache.rat</groupId>
         <artifactId>apache-rat-plugin</artifactId>
-        <version>0.10</version>
-        <configuration>
-          <excludes>
-            <!--
-              These files contains the expected output of this component and can not contain a license header.
-            -->
-            <exclude>src/it/maven-version/expected.txt</exclude>
-            <exclude>src/it/mshared-167/expected-M2.txt</exclude>
-            <exclude>src/it/mshared-167/expected-M3.txt</exclude>
-            <exclude>src/it/verbose/expected-default.txt</exclude>
-            <exclude>src/it/verbose/expected-verbose.txt</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.rat</groupId>
-        <artifactId>apache-rat-plugin</artifactId>
         <configuration>
           <excludes>
             <exclude>src/test/resources*/**</exclude>

Modified: maven/shared/trunk/maven-dependency-tree/src/it/multi-module-plugin/src/main/java/org/apache/maven/its/deptree/ResolveDependenciesLifecycleParticipant.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/it/multi-module-plugin/src/main/java/org/apache/maven/its/deptree/ResolveDependenciesLifecycleParticipant.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/it/multi-module-plugin/src/main/java/org/apache/maven/its/deptree/ResolveDependenciesLifecycleParticipant.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/it/multi-module-plugin/src/main/java/org/apache/maven/its/deptree/ResolveDependenciesLifecycleParticipant.java Mon May 19 12:38:45 2014
@@ -25,14 +25,11 @@ import org.apache.maven.execution.MavenS
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
-import org.apache.maven.shared.dependency.graph.ProjectReferenceKeyGenerator;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.logging.Logger;
 
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * Resolves all the dependencies in the project immediately after the Project has been read.
@@ -64,18 +61,6 @@ public final class ResolveDependenciesLi
 
         final List<MavenProject> projects = session.getProjects();
 
-        // NB We could get this from session.getProjectMap() but it doesn't exist in Maven-2.2.1 or 3.0.4
-        final Map<String, MavenProject> reactorProjects = new HashMap<String, MavenProject>();
-        final ProjectReferenceKeyGenerator keyGenerator = new ProjectReferenceKeyGenerator();
-
-        log.debug( "Reactor projects:" );
-        for ( MavenProject project : projects )
-        {
-            log.debug( " - " + project );
-            reactorProjects.put( keyGenerator.getProjectReferenceKey( project ), project );
-        }
-        log.debug( "" );
-
         for ( MavenProject project : projects )
         {
             log.debug( "" );
@@ -84,7 +69,7 @@ public final class ResolveDependenciesLi
             try
             {
                 // No need to filter our search. We want to resolve all artifacts.
-                dependencyGraphBuilder.buildDependencyGraph( project, null, reactorProjects );
+                dependencyGraphBuilder.buildDependencyGraph( project, null, projects );
             }
             catch ( DependencyGraphBuilderException e )
             {

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java Mon May 19 12:38:45 2014
@@ -22,7 +22,7 @@ package org.apache.maven.shared.dependen
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.project.MavenProject;
 
-import java.util.Map;
+import java.util.Collection;
 
 /**
  * Maven project dependency graph builder API, neutral against Maven 2 or Maven 3.
@@ -34,13 +34,14 @@ public interface DependencyGraphBuilder
 {
     /**
      * Build the dependency graph from the repository. This is the same as
-     * {@link #buildDependencyGraph(org.apache.maven.project.MavenProject, org.apache.maven.artifact.resolver.filter.ArtifactFilter, java.util.Map)}
+     * {@link #buildDependencyGraph(org.apache.maven.project.MavenProject,
+     *  org.apache.maven.artifact.resolver.filter.ArtifactFilter, java.util.Collection)}
      * with an empty reactorProjects Map.
      *
      * @param project the project
      * @param filter artifact filter (can be <code>null</code>)
      * @return the dependency graph
-     * @throws DependencyGraphBuilderException
+     * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
      */
     DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
         throws DependencyGraphBuilderException;
@@ -50,12 +51,11 @@ public interface DependencyGraphBuilder
      *
      * @param project the project
      * @param filter artifact filter (can be <code>null</code>)
-     * @param reactorProjects Map of those projects contained in the reactor. Key is made up of
-     *            groupId-artifactId-version.
+     * @param reactorProjects Collection of those projects contained in the reactor.
      * @return the dependency graph
-     * @throws DependencyGraphBuilderException
+     * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
      */
     DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter,
-                                         Map<String, MavenProject> reactorProjects )
+                                         Collection<MavenProject> reactorProjects )
         throws DependencyGraphBuilderException;
 }

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilderException.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilderException.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilderException.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilderException.java Mon May 19 12:38:45 2014
@@ -32,11 +32,18 @@ public class DependencyGraphBuilderExcep
 
     // constructors -----------------------------------------------------------
 
+    /**
+     * @param message   Message indicating why dependency graph could not be resolved.
+     */
     public DependencyGraphBuilderException( String message )
     {
         super( message );
     }
 
+    /**
+     * @param message   Message indicating why dependency graph could not be resolved.
+     * @param cause     Throwable indicating at which point the graph failed to be resolved.
+     */
     public DependencyGraphBuilderException( String message, Throwable cause )
     {
         super( message, cause );

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java Mon May 19 12:38:45 2014
@@ -33,8 +33,14 @@ import org.apache.maven.shared.dependenc
  */
 public interface DependencyNode
 {
+    /**
+     * @return Artifact for this DependencyNode.
+     */
     Artifact getArtifact();
 
+    /**
+     * @return children of this DependencyNode.
+     */
     List<DependencyNode> getChildren();
 
     /**

Added: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/ArtifactKey.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/ArtifactKey.java?rev=1595871&view=auto
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/ArtifactKey.java (added)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/ArtifactKey.java Mon May 19 12:38:45 2014
@@ -0,0 +1,85 @@
+package org.apache.maven.shared.dependency.graph.internal;
+
+/*
+ * 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 org.apache.maven.project.MavenProject;
+
+/**
+ * Uniquely defines an artifact by groupId, artifactId and version.
+ */
+final class ArtifactKey
+{
+    private static final int HASH_PRIME = 31;
+
+    private final String groupId;
+    private final String artifactId;
+    private final String version;
+
+    ArtifactKey( String groupId, String artifactId, String version )
+    {
+        this.groupId = groupId;
+        this.artifactId = artifactId;
+        this.version = version;
+    }
+
+    public ArtifactKey( MavenProject project )
+    {
+        this ( project.getGroupId(), project.getArtifactId(), project.getVersion() );
+    }
+
+    @Override
+    public boolean equals( Object o )
+    {
+        if ( this == o )
+        {
+            return true;
+        }
+        if ( !( o instanceof ArtifactKey ) )
+        {
+            return false;
+        }
+
+        ArtifactKey that = ( ArtifactKey ) o;
+
+        if ( !artifactId.equals( that.artifactId ) )
+        {
+            return false;
+        }
+        if ( !groupId.equals( that.groupId ) )
+        {
+            return false;
+        }
+        if ( !version.equals( that.version ) )
+        {
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    public int hashCode()
+    {
+        int result = groupId.hashCode();
+        result = HASH_PRIME * result + artifactId.hashCode();
+        result = HASH_PRIME * result + version.hashCode();
+        return result;
+    }
+}

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java Mon May 19 12:38:45 2014
@@ -33,8 +33,8 @@ import org.codehaus.plexus.context.Conte
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
 
+import java.util.Collection;
 import java.util.Collections;
-import java.util.Map;
 
 /**
  * Default dependency graph builder that detects current Maven version to delegate to either Maven 2 or Maven 3 specific
@@ -52,14 +52,31 @@ public class DefaultDependencyGraphBuild
 {
     protected PlexusContainer container;
 
+    /**
+     * Builds a dependency graph.
+     *
+     * @param project the project
+     * @param filter artifact filter (can be <code>null</code>)
+     * @return DependencyNode containing the dependency graph.
+     * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+     */
     public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
         throws DependencyGraphBuilderException
     {
-        return buildDependencyGraph( project, filter, Collections.EMPTY_MAP );
+        return buildDependencyGraph( project, filter, Collections.EMPTY_LIST );
     }
 
+    /**
+     * Builds a dependency graph.
+     *
+     * @param project the project
+     * @param filter artifact filter (can be <code>null</code>)
+     * @param reactorProjects Collection of those projects contained in the reactor.
+     * @return DependencyNode containing the dependency graph.
+     * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+     */
     public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter,
-                                                Map<String, MavenProject> reactorProjects )
+                                                Collection<MavenProject> reactorProjects )
         throws DependencyGraphBuilderException
     {
         try
@@ -80,7 +97,7 @@ public class DefaultDependencyGraphBuild
     }
 
     /**
-     * Check the current Maven version to see if it's Maven 2.x.
+     * @return true if the current Maven is Maven 2.x.
      */
     protected static boolean isMaven2x()
     {
@@ -88,7 +105,7 @@ public class DefaultDependencyGraphBuild
     }
 
     /**
-     * Check the current Maven version to see if it's Maven 3.1.
+     * @return true if the current Maven version is Maven 3.1.
      */
     protected static boolean isMaven31()
     {
@@ -109,6 +126,12 @@ public class DefaultDependencyGraphBuild
         }
     }
 
+    /**
+     * Injects the Plexus content.
+     *
+     * @param context   Plexus context to inject.
+     * @throws ContextException if the PlexusContainer could not be located.
+     */
     public void contextualize( Context context )
         throws ContextException
     {

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java Mon May 19 12:38:45 2014
@@ -25,8 +25,10 @@ import org.apache.maven.artifact.Artifac
 import org.apache.maven.shared.dependency.graph.DependencyNode;
 import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
 
-public class DefaultDependencyNode
-    implements DependencyNode
+/**
+ * Default implementation of a DependencyNode.
+ */
+public class DefaultDependencyNode implements DependencyNode
 {
     private final Artifact artifact;
 
@@ -40,6 +42,15 @@ public class DefaultDependencyNode
 
     private List<DependencyNode> children;
 
+    /**
+     * Constructs the DefaultDependencyNode.
+     *
+     * @param parent            Parent node.
+     * @param artifact          Artifact associated with this dependency.
+     * @param premanagedVersion
+     * @param premanagedScope
+     * @param versionConstraint
+     */
     public DefaultDependencyNode( DependencyNode parent, Artifact artifact, String premanagedVersion,
                                   String premanagedScope, String versionConstraint )
     {
@@ -73,21 +84,34 @@ public class DefaultDependencyNode
         return visitor.endVisit( this );
     }
 
+    /**
+     * @return Artifact for this DependencyNode.
+     */
     public Artifact getArtifact()
     {
         return artifact;
     }
 
+    /**
+     *
+     * @param children  List of DependencyNode to set as child nodes.
+     */
     public void setChildren( List<DependencyNode> children )
     {
         this.children = children;
     }
 
+    /**
+     * @return List of child nodes for this DependencyNode.
+     */
     public List<DependencyNode> getChildren()
     {
         return children;
     }
 
+    /**
+     * @return Parent of this DependencyNode.
+     */
     public DependencyNode getParent()
     {
         return parent;
@@ -108,6 +132,9 @@ public class DefaultDependencyNode
         return versionConstraint;
     }
 
+    /**
+     * @return Stringified representation of this DependencyNode.
+     */
     public String toNodeString()
     {
         StringBuffer buffer = new StringBuffer();

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java Mon May 19 12:38:45 2014
@@ -19,11 +19,6 @@ package org.apache.maven.shared.dependen
  * under the License.
  */
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
@@ -35,6 +30,11 @@ import org.codehaus.plexus.component.ann
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
 /**
  * Wrapper around Maven 2 dependency tree builder.
  *
@@ -50,6 +50,14 @@ public class Maven2DependencyGraphBuilde
     @Requirement
     private DependencyTreeBuilder treeBuilder;
 
+    /**
+     * Builds the dependency graph for Maven 2.
+     *
+     * @param project the project
+     * @param filter artifact filter (can be <code>null</code>)
+     * @return DependencyNode containing the dependency graph.
+     * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+     */
     public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
         throws DependencyGraphBuilderException
     {
@@ -63,8 +71,19 @@ public class Maven2DependencyGraphBuilde
         }
     }
 
+    /**
+     * Builds the dependency graph for Maven 2.
+     *
+     * NB the reactor projects are ignored as Maven 2 is not able to resolve projects from the reactor.
+     *
+     * @param project           the project
+     * @param filter            artifact filter (can be <code>null</code>)
+     * @param reactorProjects   Ignored.
+     * @return DependencyNode containing the dependency graph.
+     * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+     */
     public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter,
-                                                Map<String, MavenProject> reactorProjects )
+                                                Collection<MavenProject> reactorProjects )
         throws DependencyGraphBuilderException
     {
         getLogger().warn( "Reactor projects ignored - reactor dependencies cannot be resolved in Maven2" );

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java Mon May 19 12:38:45 2014
@@ -33,7 +33,6 @@ import org.apache.maven.project.ProjectD
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
 import org.apache.maven.shared.dependency.graph.DependencyNode;
-import org.apache.maven.shared.dependency.graph.ProjectReferenceKeyGenerator;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
@@ -44,6 +43,7 @@ import org.eclipse.aether.version.Versio
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -67,16 +67,31 @@ public class Maven31DependencyGraphBuild
 
     private final Invoker invoker = new Invoker();
 
-    private final ProjectReferenceKeyGenerator keyGenerator = new ProjectReferenceKeyGenerator();
-
+    /**
+     * Builds the dependency graph for Maven 3 point 1+.
+     *
+     * @param project the project
+     * @param filter artifact filter (can be <code>null</code>)
+     * @return DependencyNode containing the dependency graph.
+     * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+     */
     public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
         throws DependencyGraphBuilderException
     {
-        return buildDependencyGraph( project, filter, Collections.EMPTY_MAP );
+        return buildDependencyGraph( project, filter, Collections.EMPTY_LIST );
     }
 
+    /**
+     * Builds the dependency graph for Maven 3 point 1+ including any dependencies from any projects in the reactor.
+     *
+     * @param project the project
+     * @param filter artifact filter (can be <code>null</code>)
+     * @param reactorProjects Collection of those projects contained in the reactor.
+     * @return DependencyNode containing the dependency graph.
+     * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+     */
     public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter,
-                                                Map<String, MavenProject> reactorProjects )
+                                                Collection<MavenProject> reactorProjects )
         throws DependencyGraphBuilderException
     {
         ProjectBuildingRequest projectBuildingRequest =
@@ -106,7 +121,7 @@ public class Maven31DependencyGraphBuild
     }
 
     private DependencyResolutionResult resolveDependencies( DependencyResolutionRequest request,
-                                                            Map<String, MavenProject> reactorProjects )
+                                                            Collection<MavenProject> reactorProjects )
         throws DependencyGraphBuilderException
     {
         try
@@ -142,17 +157,24 @@ public class Maven31DependencyGraphBuild
         }
     }
 
-    private List<Dependency> getReactorDependencies( Map<String, MavenProject> reactorProjects, List<?> dependencies )
+    private List<Dependency> getReactorDependencies( Collection<MavenProject> reactorProjects, List<?> dependencies )
     {
+        // Create ProjectMap
+        final Map<ArtifactKey, MavenProject> projectMap = new HashMap<ArtifactKey, MavenProject>();
+        for ( final MavenProject project : reactorProjects )
+        {
+            projectMap.put( new ArtifactKey( project ), project );
+        }
+
         final List<Dependency> reactorDeps = new ArrayList<Dependency>();
         for ( final Object untypedDependency : dependencies )
         {
             final Dependency dependency = (Dependency) untypedDependency;
             final org.eclipse.aether.artifact.Artifact depArtifact = dependency.getArtifact();
-            final String projectRefId =
-                keyGenerator.getProjectReferenceKey( depArtifact.getGroupId(), depArtifact.getArtifactId(),
-                                                     depArtifact.getVersion() );
-            if ( reactorProjects.containsKey( projectRefId ) )
+            final ArtifactKey key = new ArtifactKey(
+                    depArtifact.getGroupId(), depArtifact.getArtifactId(), depArtifact.getVersion()
+            );
+            if ( projectMap.containsKey( key ) )
             {
                 reactorDeps.add( dependency );
             }

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java Mon May 19 12:38:45 2014
@@ -19,13 +19,6 @@ package org.apache.maven.shared.dependen
  * under the License.
  */
 
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
@@ -40,13 +33,20 @@ import org.apache.maven.project.ProjectD
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
 import org.apache.maven.shared.dependency.graph.DependencyNode;
-import org.apache.maven.shared.dependency.graph.ProjectReferenceKeyGenerator;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.sonatype.aether.graph.Dependency;
 import org.sonatype.aether.version.VersionConstraint;
 
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
  * Wrapper around Maven 3 dependency resolver.
  *
@@ -67,16 +67,31 @@ public class Maven3DependencyGraphBuilde
 
     private final Invoker invoker = new Invoker();
 
-    private final ProjectReferenceKeyGenerator keyGenerator = new ProjectReferenceKeyGenerator();
-
+    /**
+     * Builds the dependency graph for Maven 3.
+     *
+     * @param project the project
+     * @param filter artifact filter (can be <code>null</code>)
+     * @return DependencyNode containing the dependency graph.
+     * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+     */
     public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
         throws DependencyGraphBuilderException
     {
-        return buildDependencyGraph( project, filter, Collections.EMPTY_MAP );
+        return buildDependencyGraph( project, filter, Collections.EMPTY_LIST );
     }
 
+    /**
+     * Builds the dependency graph for Maven 3 including any dependencies from any projects in the reactor.
+     *
+     * @param project the project
+     * @param filter artifact filter (can be <code>null</code>)
+     * @param reactorProjects Collection of those projects contained in the reactor.
+     * @return DependencyNode containing the dependency graph.
+     * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+     */
     public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter,
-                                                Map<String, MavenProject> reactorProjects )
+                                                Collection<MavenProject> reactorProjects )
         throws DependencyGraphBuilderException
     {
         ProjectBuildingRequest projectBuildingRequest =
@@ -91,7 +106,7 @@ public class Maven3DependencyGraphBuilde
     }
 
     private DependencyResolutionResult resolveDependencies( DependencyResolutionRequest request,
-                                                            Map<String, MavenProject> reactorProjects )
+                                                            Collection<MavenProject> reactorProjects )
         throws DependencyGraphBuilderException
     {
         try
@@ -127,9 +142,16 @@ public class Maven3DependencyGraphBuilde
         }
     }
 
-    private List<org.sonatype.aether.graph.Dependency> getReactorDependencies( Map<String, MavenProject> reactorProjects,
+    private List<org.sonatype.aether.graph.Dependency> getReactorDependencies( Collection<MavenProject> reactorProjects,
                                                                                List<?> dependencies )
     {
+        // Create ProjectMap
+        final Map<ArtifactKey, MavenProject> projectMap = new HashMap<ArtifactKey, MavenProject>();
+        for ( final MavenProject project : reactorProjects )
+        {
+            projectMap.put( new ArtifactKey( project ), project );
+        }
+
         final List<org.sonatype.aether.graph.Dependency> reactorDeps =
             new ArrayList<org.sonatype.aether.graph.Dependency>();
         for ( final Object untypedDependency : dependencies )
@@ -137,10 +159,10 @@ public class Maven3DependencyGraphBuilde
             final org.sonatype.aether.graph.Dependency dependency =
                 (org.sonatype.aether.graph.Dependency) untypedDependency;
             final org.sonatype.aether.artifact.Artifact depArtifact = dependency.getArtifact();
-            final String projectRefId =
-                keyGenerator.getProjectReferenceKey( depArtifact.getGroupId(), depArtifact.getArtifactId(),
-                                                     depArtifact.getVersion() );
-            if ( reactorProjects.containsKey( projectRefId ) )
+            final ArtifactKey key = new ArtifactKey(
+                    depArtifact.getGroupId(), depArtifact.getArtifactId(), depArtifact.getVersion()
+            );
+            if ( projectMap.containsKey( key ) )
             {
                 reactorDeps.add( dependency );
             }
@@ -183,11 +205,9 @@ public class Maven3DependencyGraphBuilde
                                                 Artifact artifact, ArtifactFilter filter )
     {
         DefaultDependencyNode current =
-            new DefaultDependencyNode( parent, artifact, null /* node.getPremanagedVersion() */, null /*
-                                                                                                       * node.
-                                                                                                       * getPremanagedScope
-                                                                                                       * ()
-                                                                                                       */,
+            new DefaultDependencyNode( parent, artifact,
+                                       null /* node.getPremanagedVersion() */,
+                                       null /* node.getPremanagedScope() */,
                                        getVersionSelectedFromRange( node.getVersionConstraint() ) );
 
         List<DependencyNode> nodes = new ArrayList<DependencyNode>( node.getChildren().size() );

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java Mon May 19 12:38:45 2014
@@ -133,6 +133,13 @@ public class DefaultDependencyTreeBuilde
         }
     }
 
+    /**
+     * Builds a dependency tree.
+     *
+     * @param project   MavenProject for which ot build the dependency tree.
+     * @return DependencyNode containing the dependency tree for the project.
+     * @throws DependencyTreeBuilderException if the dependency tree could not be built.
+     */
     public DependencyNode buildDependencyTree( MavenProject project )
         throws DependencyTreeBuilderException
     {
@@ -140,6 +147,15 @@ public class DefaultDependencyTreeBuilde
                                     metadataSource, null, collector );
     }
 
+    /**
+     * Builds a dependency tree.
+     *
+     * @param project       MavenProject for which ot build the dependency tree.
+     * @param repository    ArtifactRepository to search fro dependencies.
+     * @param filter        Filter to apply when searching for dependencies.
+     * @return DependencyNode containing the dependency tree for the project.
+     * @throws DependencyTreeBuilderException if the dependency tree could not be built.
+     */
     public DependencyNode buildDependencyTree( MavenProject project, ArtifactRepository repository,
                                                ArtifactFilter filter )
         throws DependencyTreeBuilderException

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java Mon May 19 12:38:45 2014
@@ -42,6 +42,8 @@ public class DependencyNode
 {
     // constants --------------------------------------------------------------
 
+    private static final int HASH_PRIME = 31;
+
     /**
      * State that represents an included dependency node.
      * 
@@ -714,6 +716,9 @@ public class DependencyNode
             case OMITTED_FOR_CYCLE:
                 appender.append( "omitted for cycle" );
                 break;
+
+            default:
+                break;
         }
 
         appender.flush();
@@ -752,22 +757,22 @@ public class DependencyNode
 
         int hashCode = 1;
 
-        hashCode = hashCode * 31 + getArtifact().hashCode();
+        hashCode = hashCode * HASH_PRIME + getArtifact().hashCode();
         // DefaultArtifact.hashCode does not consider scope
-        hashCode = hashCode * 31 + nullHashCode( getArtifact().getScope() );
+        hashCode = hashCode * HASH_PRIME + nullHashCode( getArtifact().getScope() );
 
         // TODO: use parent's artifact to prevent recursion - how can we improve this?
-        hashCode = hashCode * 31 + nullHashCode( nullGetArtifact( getParent() ) );
+        hashCode = hashCode * HASH_PRIME + nullHashCode( nullGetArtifact( getParent() ) );
 
-        hashCode = hashCode * 31 + getChildren().hashCode();
-        hashCode = hashCode * 31 + getState();
-        hashCode = hashCode * 31 + nullHashCode( getRelatedArtifact() );
-        hashCode = hashCode * 31 + nullHashCode( getPremanagedVersion() );
-        hashCode = hashCode * 31 + nullHashCode( getPremanagedScope() );
-        hashCode = hashCode * 31 + nullHashCode( getOriginalScope() );
-        hashCode = hashCode * 31 + nullHashCode( getFailedUpdateScope() );
-        hashCode = hashCode * 31 + nullHashCode( getVersionSelectedFromRange() );
-        hashCode = hashCode * 31 + nullHashCode( getAvailableVersions() );
+        hashCode = hashCode * HASH_PRIME + getChildren().hashCode();
+        hashCode = hashCode * HASH_PRIME + getState();
+        hashCode = hashCode * HASH_PRIME + nullHashCode( getRelatedArtifact() );
+        hashCode = hashCode * HASH_PRIME + nullHashCode( getPremanagedVersion() );
+        hashCode = hashCode * HASH_PRIME + nullHashCode( getPremanagedScope() );
+        hashCode = hashCode * HASH_PRIME + nullHashCode( getOriginalScope() );
+        hashCode = hashCode * HASH_PRIME + nullHashCode( getFailedUpdateScope() );
+        hashCode = hashCode * HASH_PRIME + nullHashCode( getVersionSelectedFromRange() );
+        hashCode = hashCode * HASH_PRIME + nullHashCode( getAvailableVersions() );
 
         return hashCode;
     }

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilder.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilder.java Mon May 19 12:38:45 2014
@@ -57,7 +57,8 @@ public interface DependencyTreeBuilder
      * @return the dependency tree of the specified Maven project
      * @throws DependencyTreeBuilderException if the dependency tree cannot be resolved
      * @deprecated As of 1.1, replaced by
-     *             {@link #buildDependencyTree(MavenProject, ArtifactRepository, ArtifactFactory, ArtifactMetadataSource, ArtifactFilter, ArtifactCollector)}
+     * {@link #buildDependencyTree(MavenProject, ArtifactRepository, ArtifactFactory, ArtifactMetadataSource,
+     * ArtifactFilter, ArtifactCollector)}
      */
     DependencyTree buildDependencyTree( MavenProject project, ArtifactRepository repository, ArtifactFactory factory,
                                         ArtifactMetadataSource metadataSource, ArtifactCollector collector )

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java Mon May 19 12:38:45 2014
@@ -30,7 +30,6 @@ import org.apache.maven.artifact.Artifac
 import org.apache.maven.artifact.resolver.ResolutionListener;
 import org.apache.maven.artifact.resolver.ResolutionListenerForDepMgmt;
 import org.apache.maven.artifact.versioning.VersionRange;
-import org.apache.maven.shared.dependency.tree.traversal.CollectingDependencyNodeVisitor;
 import org.codehaus.plexus.logging.Logger;
 
 /**
@@ -313,7 +312,8 @@ public class DependencyTreeResolutionLis
      */
     public void restrictRange( Artifact artifact, Artifact replacement, VersionRange versionRange )
     {
-        log( "restrictRange: artifact=" + artifact + ", replacement=" + replacement + ", versionRange=" + versionRange );
+        log( "restrictRange: artifact=" + artifact + ", replacement=" + replacement
+                 + ", versionRange=" + versionRange );
 
         // TODO: track range restriction in node (MNG-3093)
     }
@@ -368,7 +368,9 @@ public class DependencyTreeResolutionLis
      * Gets a list of all dependency nodes in the computed dependency tree.
      * 
      * @return a list of dependency nodes
-     * @deprecated As of 1.1, use a {@link CollectingDependencyNodeVisitor} on the root dependency node
+     * @deprecated As of 1.1, use a
+     * {@link org.apache.maven.shared.dependency.tree.traversal.CollectingDependencyNodeVisitor}
+     * on the root dependency node
      */
     public Collection<DependencyNode> getNodes()
     {