added filter to DependencyGraphBuilder
git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1348667 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java b/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java
index d43f4a0..8112aec 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java
@@ -19,6 +19,7 @@
* under the License.
*/
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.project.MavenProject;
/**
@@ -29,6 +30,6 @@
*/
public interface DependencyGraphBuilder
{
- public DependencyNode buildDependencyGraph( MavenProject project )
+ public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
throws DependencyGraphBuilderException;
}
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java b/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java
index dd05b78..16bb1e5 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java
@@ -19,6 +19,7 @@
* under the License.
*/
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
@@ -46,7 +47,7 @@
{
protected PlexusContainer container;
- public DependencyNode buildDependencyGraph( MavenProject project )
+ public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
throws DependencyGraphBuilderException
{
try
@@ -56,7 +57,7 @@
DependencyGraphBuilder effectiveGraphBuilder =
(DependencyGraphBuilder) container.lookup( DependencyGraphBuilder.class.getCanonicalName(), hint );
- return effectiveGraphBuilder.buildDependencyGraph( project );
+ return effectiveGraphBuilder.buildDependencyGraph( project, filter );
}
catch ( ComponentLookupException e )
{
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 b487013..63a03c2 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,7 @@
* under the License.
*/
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
@@ -42,12 +43,12 @@
@Requirement
private DependencyTreeBuilder treeBuilder;
- public DependencyNode buildDependencyGraph( MavenProject project )
+ public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
throws DependencyGraphBuilderException
{
try
{
- return new Maven2DependencyNode( treeBuilder.buildDependencyTree( project ) );
+ return new Maven2DependencyNode( treeBuilder.buildDependencyTree( project ), filter );
}
catch ( DependencyTreeBuilderException e )
{
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
index ac3a34a..614846b 100644
--- 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
@@ -24,6 +24,7 @@
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;
/**
@@ -40,14 +41,17 @@
private final List<DependencyNode> children;
- public Maven2DependencyNode( org.apache.maven.shared.dependency.tree.DependencyNode node )
+ public Maven2DependencyNode( org.apache.maven.shared.dependency.tree.DependencyNode node, ArtifactFilter filter )
{
this.artifact = node.getArtifact();
List<DependencyNode> nodes = new ArrayList<DependencyNode>( node.getChildren().size() );
for ( org.apache.maven.shared.dependency.tree.DependencyNode child : node.getChildren() )
{
- nodes.add( new Maven2DependencyNode( child ) );
+ if ( filter.include( child.getArtifact() ) )
+ {
+ nodes.add( new Maven2DependencyNode( child, filter ) );
+ }
}
children = Collections.unmodifiableList( nodes );
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 c582b66..cd1b111 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
@@ -22,6 +22,7 @@
import java.lang.reflect.InvocationTargetException;
import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.project.DefaultDependencyResolutionRequest;
import org.apache.maven.project.DependencyResolutionException;
import org.apache.maven.project.DependencyResolutionRequest;
@@ -52,7 +53,7 @@
@Requirement
private ArtifactFactory factory;
- public DependencyNode buildDependencyGraph( MavenProject project )
+ public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
throws DependencyGraphBuilderException
{
try
@@ -65,7 +66,7 @@
DependencyResolutionResult result = resolver.resolve( request );
- return new Maven3DependencyNode( factory, result.getDependencyGraph(), project.getArtifact() );
+ return new Maven3DependencyNode( factory, result.getDependencyGraph(), project.getArtifact(), filter );
}
catch ( DependencyResolutionException e )
{
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
index fdffc16..48ef43b 100644
--- 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
@@ -25,6 +25,7 @@
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;
@@ -43,7 +44,8 @@
private final List<DependencyNode> children;
- public Maven3DependencyNode( ArtifactFactory factory, org.sonatype.aether.graph.DependencyNode node, final Artifact artifact )
+ public Maven3DependencyNode( ArtifactFactory factory, org.sonatype.aether.graph.DependencyNode node,
+ final Artifact artifact, ArtifactFilter filter )
{
if ( artifact != null )
{
@@ -54,16 +56,30 @@
Dependency dep = node.getDependency();
org.sonatype.aether.artifact.Artifact art = dep.getArtifact();
- this.artifact =
+ Artifact tmpArtifact =
factory.createDependencyArtifact( art.getGroupId(), art.getArtifactId(),
VersionRange.createFromVersion( art.getVersion() ),
art.getExtension(), art.getClassifier(), dep.getScope() );
+
+ if ( !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() )
{
- nodes.add( new Maven3DependencyNode( factory, child, null ) );
+ DependencyNode tmpNode = new Maven3DependencyNode( factory, child, null, filter );
+
+ if ( tmpNode.getArtifact() != null )
+ {
+ nodes.add( tmpNode );
+ }
}
children = Collections.unmodifiableList( nodes );
}