Author: hboutemy Date: Mon Jul 2 17:14:16 2012 New Revision: 1356361 URL: http://svn.apache.org/viewvc?rev=1356361&view=rev Log: replaced DependencyNode implementations with DefaultDependencyNode
Added: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java - copied, changed from r1353122, maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/AbstractDependencyNode.java Removed: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/AbstractDependencyNode.java maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyNode.java maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyNode.java Modified: 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/Maven3DependencyGraphBuilder.java Copied: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java (from r1353122, maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/AbstractDependencyNode.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?p2=maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java&p1=maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/AbstractDependencyNode.java&r1=1353122&r2=1356361&rev=1356361&view=diff ============================================================================== --- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/AbstractDependencyNode.java (original) +++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java Mon Jul 2 17:14:16 2012 @@ -1,11 +1,26 @@ package org.apache.maven.shared.dependency.graph.internal; +import java.util.List; + +import org.apache.maven.artifact.Artifact; import org.apache.maven.shared.dependency.graph.DependencyNode; import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor; -public abstract class AbstractDependencyNode +public class DefaultDependencyNode implements DependencyNode { + private final Artifact artifact; + + private final DependencyNode parent; + + private List<DependencyNode> children; + + public DefaultDependencyNode( DependencyNode parent, Artifact artifact ) + { + this.parent = parent; + this.artifact = artifact; + } + /** * Applies the specified dependency node visitor to this dependency node and its children. * @@ -29,4 +44,24 @@ public abstract class AbstractDependency return visitor.endVisit( this ); } + + public Artifact getArtifact() + { + return artifact; + } + + public void setChildren( List<DependencyNode> children ) + { + this.children = children; + } + + public List<DependencyNode> getChildren() + { + return children; + } + + public DependencyNode getParent() + { + return parent; + } } 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=1356361&r1=1356360&r2=1356361&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 Jul 2 17:14:16 2012 @@ -19,6 +19,10 @@ package org.apache.maven.shared.dependen * under the License. */ +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + import org.apache.maven.artifact.resolver.filter.ArtifactFilter; import org.apache.maven.project.MavenProject; import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder; @@ -48,11 +52,37 @@ public class Maven2DependencyGraphBuilde { try { - return new Maven2DependencyNode( null, treeBuilder.buildDependencyTree( project ), filter ); + return buildDependencyNode( null, treeBuilder.buildDependencyTree( project ), filter ); } catch ( DependencyTreeBuilderException e ) { throw new DependencyGraphBuilderException( e.getMessage(), e ); } } + + private DependencyNode buildDependencyNode( DependencyNode parent, + org.apache.maven.shared.dependency.tree.DependencyNode node, + ArtifactFilter filter ) + { + DefaultDependencyNode current = new DefaultDependencyNode( parent, node.getArtifact() ); + + List<DependencyNode> nodes = new ArrayList<DependencyNode>( node.getChildren().size() ); + for ( org.apache.maven.shared.dependency.tree.DependencyNode child : node.getChildren() ) + { + if ( child.getState() != org.apache.maven.shared.dependency.tree.DependencyNode.INCLUDED ) + { + // only included nodes are supported in the graph API + continue; + } + + if ( ( filter == null ) || filter.include( child.getArtifact() ) ) + { + nodes.add( buildDependencyNode( current, child, filter ) ); + } + } + + current.setChildren( Collections.unmodifiableList( nodes ) ); + + return current; + } } 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=1356361&r1=1356360&r2=1356361&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 Jul 2 17:14:16 2012 @@ -20,9 +20,14 @@ package org.apache.maven.shared.dependen */ import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.resolver.filter.ArtifactFilter; +import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.project.DefaultDependencyResolutionRequest; import org.apache.maven.project.DependencyResolutionException; import org.apache.maven.project.DependencyResolutionRequest; @@ -35,6 +40,7 @@ import org.apache.maven.shared.dependenc import org.apache.maven.shared.dependency.graph.DependencyNode; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; +import org.sonatype.aether.graph.Dependency; /** * Wrapper around Maven 3 dependency resolver. @@ -66,7 +72,7 @@ public class Maven3DependencyGraphBuilde DependencyResolutionResult result = resolver.resolve( request ); - return new Maven3DependencyNode( null, factory, result.getDependencyGraph(), project.getArtifact(), filter ); + return buildDependencyNode( null, result.getDependencyGraph(), project.getArtifact(), filter ); } catch ( DependencyResolutionException e ) { @@ -91,4 +97,35 @@ public class Maven3DependencyGraphBuilde { return object.getClass().getMethod( method ).invoke( object ); } + + private Artifact getDependencyArtifact( Dependency dep ) + { + org.sonatype.aether.artifact.Artifact artifact = dep.getArtifact(); + + return factory.createDependencyArtifact( artifact.getGroupId(), artifact.getArtifactId(), + VersionRange.createFromVersion( artifact.getVersion() ), + artifact.getExtension(), artifact.getClassifier(), dep.getScope(), + dep.isOptional() ); + } + + private DependencyNode buildDependencyNode( DependencyNode parent, org.sonatype.aether.graph.DependencyNode node, + Artifact artifact, ArtifactFilter filter ) + { + DefaultDependencyNode current = new DefaultDependencyNode( parent, artifact ); + + List<DependencyNode> nodes = new ArrayList<DependencyNode>( node.getChildren().size() ); + for ( org.sonatype.aether.graph.DependencyNode child : node.getChildren() ) + { + Artifact childArtifact = getDependencyArtifact( child.getDependency() ); + + if ( ( filter == null ) || filter.include( childArtifact ) ) + { + nodes.add( buildDependencyNode( current, child, childArtifact, filter ) ); + } + } + + current.setChildren( Collections.unmodifiableList( nodes ) ); + + return current; + } }