replaced DependencyNode implementations with DefaultDependencyNode
git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1356361 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/internal/AbstractDependencyNode.java b/src/main/java/org/apache/maven/shared/dependency/graph/internal/AbstractDependencyNode.java
deleted file mode 100644
index cbb550e..0000000
--- a/src/main/java/org/apache/maven/shared/dependency/graph/internal/AbstractDependencyNode.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.apache.maven.shared.dependency.graph.internal;
-
-import org.apache.maven.shared.dependency.graph.DependencyNode;
-import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
-
-public abstract class AbstractDependencyNode
- implements DependencyNode
-{
- /**
- * Applies the specified dependency node visitor to this dependency node and its children.
- *
- * @param visitor
- * the dependency node visitor to use
- * @return the visitor result of ending the visit to this node
- * @since 1.1
- */
- public boolean accept( DependencyNodeVisitor visitor )
- {
- if ( visitor.visit( this ) )
- {
- for ( DependencyNode child : getChildren() )
- {
- if ( !child.accept( visitor ) )
- {
- break;
- }
- }
- }
-
- return visitor.endVisit( this );
- }
-}
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java b/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java
new file mode 100644
index 0000000..7cd1fd2
--- /dev/null
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java
@@ -0,0 +1,67 @@
+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 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.
+ *
+ * @param visitor
+ * the dependency node visitor to use
+ * @return the visitor result of ending the visit to this node
+ * @since 1.1
+ */
+ public boolean accept( DependencyNodeVisitor visitor )
+ {
+ if ( visitor.visit( this ) )
+ {
+ for ( DependencyNode child : getChildren() )
+ {
+ if ( !child.accept( visitor ) )
+ {
+ break;
+ }
+ }
+ }
+
+ 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;
+ }
+}
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java
index d0fb71a..d40b56d 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java
@@ -19,6 +19,10 @@
* 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 @@
{
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;
+ }
}
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyNode.java b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyNode.java
deleted file mode 100644
index 8a4382a..0000000
--- a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyNode.java
+++ /dev/null
@@ -1,84 +0,0 @@
-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 java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.shared.dependency.graph.DependencyNode;
-
-/**
- * Wrapper for Maven 2's dependency node.
- *
- * @see org.apache.maven.shared.dependency.tree.DependencyNode
- * @author Hervé Boutemy
- * @since 2.0
- */
-public class Maven2DependencyNode
- extends AbstractDependencyNode
-{
- private final Artifact artifact;
-
- private final List<DependencyNode> children;
-
- private final DependencyNode parent;
-
- public Maven2DependencyNode( DependencyNode parent, org.apache.maven.shared.dependency.tree.DependencyNode node,
- ArtifactFilter filter )
- {
- this.parent = parent;
- this.artifact = 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( new Maven2DependencyNode( this, child, filter ) );
- }
- }
-
- children = Collections.unmodifiableList( nodes );
- }
-
- public Artifact getArtifact()
- {
- return artifact;
- }
-
- public List<DependencyNode> getChildren()
- {
- return children;
- }
-
- public DependencyNode getParent()
- {
- return parent;
- }
-}
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
index f59d984..315fa85 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
@@ -20,9 +20,14 @@
*/
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.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 @@
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 @@
{
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;
+ }
}
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyNode.java b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyNode.java
deleted file mode 100644
index ce10269..0000000
--- a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyNode.java
+++ /dev/null
@@ -1,107 +0,0 @@
-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 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.shared.dependency.graph.DependencyNode;
-import org.sonatype.aether.graph.Dependency;
-
-/**
- * Wrapper for Maven 3's dependency node, which is provided by Aether.
- *
- * @see org.sonatype.aether.graph.DependencyNode
- * @author Hervé Boutemy
- * @since 2.0
- */
-public class Maven3DependencyNode
- extends AbstractDependencyNode
-{
- private final Artifact artifact;
-
- private final List<DependencyNode> children;
-
- private final DependencyNode parent;
-
- public Maven3DependencyNode( DependencyNode parent, ArtifactFactory factory,
- org.sonatype.aether.graph.DependencyNode node, final Artifact artifact,
- ArtifactFilter filter )
- {
- this.parent = parent;
-
- if ( artifact != null )
- {
- this.artifact = artifact;
- }
- else
- {
- Dependency dep = node.getDependency();
- org.sonatype.aether.artifact.Artifact art = dep.getArtifact();
-
- Artifact tmpArtifact =
- factory.createDependencyArtifact( art.getGroupId(), art.getArtifactId(),
- VersionRange.createFromVersion( art.getVersion() ),
- art.getExtension(), art.getClassifier(), dep.getScope(),
- dep.isOptional() );
-
- if ( ( filter != null ) && !filter.include( tmpArtifact ) )
- {
- this.artifact = null;
- children = null;
- return;
- }
-
- this.artifact = tmpArtifact;
- }
-
- List<DependencyNode> nodes = new ArrayList<DependencyNode>( node.getChildren().size() );
- for ( org.sonatype.aether.graph.DependencyNode child : node.getChildren() )
- {
- DependencyNode tmpNode = new Maven3DependencyNode( this, factory, child, null, filter );
-
- if ( tmpNode.getArtifact() != null )
- {
- nodes.add( tmpNode );
- }
- }
- children = Collections.unmodifiableList( nodes );
- }
-
- public Artifact getArtifact()
- {
- return artifact;
- }
-
- public List<DependencyNode> getChildren()
- {
- return children;
- }
-
- public DependencyNode getParent()
- {
- return parent;
- }
-}