Author: brianf Date: Thu Feb 14 22:24:35 2008 New Revision: 627958 URL: http://svn.apache.org/viewvc?rev=627958&view=rev Log: a new filter to keep only things that are dependencies of the selected dependency/artifact
Added: maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/collection/ArtifactTransitivityFilter.java maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/collection/ProjectTransitivityFilter.java - copied, changed from r607996, maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/collection/TransitivityFilter.java maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/collection/TestProjectTransitivityFilter.java - copied, changed from r607996, maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/collection/TestTransitivityFilter.java Removed: maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/collection/TransitivityFilter.java maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/collection/TestTransitivityFilter.java Modified: maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/collection/TestFilterArtifacts.java Added: maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/collection/ArtifactTransitivityFilter.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/collection/ArtifactTransitivityFilter.java?rev=627958&view=auto ============================================================================== --- maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/collection/ArtifactTransitivityFilter.java (added) +++ maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/collection/ArtifactTransitivityFilter.java Thu Feb 14 22:24:35 2008 @@ -0,0 +1,137 @@ +package org.apache.maven.shared.artifact.filter.collection; + +/* + * 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.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.factory.ArtifactFactory; +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter; +import org.apache.maven.model.Dependency; +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.MavenProjectBuilder; +import org.apache.maven.project.ProjectBuildingException; +import org.apache.maven.project.artifact.InvalidDependencyVersionException; + +/** + * This filter will exclude everything that is not a dependency of the selected artifact. + * + * @author <a href="mailto:[EMAIL PROTECTED]">Brian Fox</a> + * @version $Id: TransitivityFilter.java 607996 2008-01-02 04:01:32Z brianf $ + */ +public class ArtifactTransitivityFilter + extends AbstractArtifactsFilter +{ + + Collection transitiveArtifacts; + + ArtifactFactory factory; + + ArtifactRepository local; + + List remote; + + public ArtifactTransitivityFilter( Artifact artifact, ArtifactFactory factory, ArtifactRepository local, + List remote, MavenProjectBuilder builder ) + throws ProjectBuildingException, InvalidDependencyVersionException + { + this.factory = factory; + this.local = local; + this.remote = remote; + + Artifact rootArtifactPom = + factory.createArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), "", "pom" ); + + MavenProject rootArtifactProject = builder.buildFromRepository( rootArtifactPom, remote, local ); + + // load all the artifacts. + transitiveArtifacts = + rootArtifactProject.createArtifacts( this.factory, Artifact.SCOPE_TEST, + new ScopeArtifactFilter( Artifact.SCOPE_TEST ) ); + + } + + public ArtifactTransitivityFilter( Dependency dependency, ArtifactFactory factory, ArtifactRepository local, + List remote, MavenProjectBuilder builder ) + throws ProjectBuildingException, InvalidDependencyVersionException + { + + this.factory = factory; + this.local = local; + this.remote = remote; + + Artifact rootArtifactPom = + factory.createArtifact( dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion(), "", + "pom" ); + + MavenProject rootArtifactProject = builder.buildFromRepository( rootArtifactPom, remote, local ); + + // load all the artifacts. + transitiveArtifacts = + rootArtifactProject.createArtifacts( this.factory, Artifact.SCOPE_TEST, + new ScopeArtifactFilter( Artifact.SCOPE_TEST ) ); + + } + + public Set filter( Set artifacts ) + { + + Set result = new HashSet(); + Iterator iterator = artifacts.iterator(); + while ( iterator.hasNext() ) + { + Artifact artifact = (Artifact) iterator.next(); + if ( artifactIsATransitiveDependency( artifact ) ) + { + result.add( artifact ); + } + } + return result; + } + + /** + * Compares the artifact to the list of dependencies to see if it is directly included by this project + * + * @param artifact representing the item to compare. + * @return true if artifact is a transitive dependency + */ + public boolean artifactIsATransitiveDependency( Artifact artifact ) + { + boolean result = false; + Iterator iterator = transitiveArtifacts.iterator(); + while ( iterator.hasNext() ) + { + Artifact trans = (Artifact) iterator.next(); + if ( trans.getGroupId().equals( artifact.getGroupId() ) && + trans.getArtifactId().equals( artifact.getArtifactId() ) ) + { + result = true; + break; + } + } + return result; + } +} Copied: maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/collection/ProjectTransitivityFilter.java (from r607996, maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/collection/TransitivityFilter.java) URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/collection/ProjectTransitivityFilter.java?p2=maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/collection/ProjectTransitivityFilter.java&p1=maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/collection/TransitivityFilter.java&r1=607996&r2=627958&rev=627958&view=diff ============================================================================== --- maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/collection/TransitivityFilter.java (original) +++ maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/collection/ProjectTransitivityFilter.java Thu Feb 14 22:24:35 2008 @@ -29,7 +29,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Brian Fox</a> * @version $Id$ */ -public class TransitivityFilter +public class ProjectTransitivityFilter extends AbstractArtifactsFilter { @@ -37,7 +37,7 @@ private Set directDependencies; - public TransitivityFilter( Set directDependencies, boolean excludeTransitive ) + public ProjectTransitivityFilter( Set directDependencies, boolean excludeTransitive ) { this.excludeTransitive = excludeTransitive; this.directDependencies = directDependencies; Modified: maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/collection/TestFilterArtifacts.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/collection/TestFilterArtifacts.java?rev=627958&r1=627957&r2=627958&view=diff ============================================================================== --- maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/collection/TestFilterArtifacts.java (original) +++ maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/collection/TestFilterArtifacts.java Thu Feb 14 22:24:35 2008 @@ -84,7 +84,7 @@ FilterArtifacts fa = new FilterArtifacts(); ArtifactsFilter scope = new ScopeFilter( "compile", "system" ); ArtifactsFilter type = new TypeFilter( "jar", "war" ); - ArtifactsFilter trans = new TransitivityFilter( a, true ); + ArtifactsFilter trans = new ProjectTransitivityFilter( a, true ); assertEquals( 0, fa.getFilters().size() ); fa.addFilter( scope ); @@ -96,7 +96,7 @@ fa.addFilter( 1, trans ); assertEquals( 3, fa.getFilters().size() ); assertTrue( fa.getFilters().get( 0 ) instanceof ScopeFilter ); - assertTrue( fa.getFilters().get( 1 ) instanceof TransitivityFilter ); + assertTrue( fa.getFilters().get( 1 ) instanceof ProjectTransitivityFilter ); assertTrue( fa.getFilters().get( 2 ) instanceof TypeFilter ); ArrayList list = new ArrayList(); @@ -108,7 +108,7 @@ fa.setFilters( list ); assertEquals( 3, fa.getFilters().size() ); assertTrue( fa.getFilters().get( 0 ) instanceof ScopeFilter ); - assertTrue( fa.getFilters().get( 1 ) instanceof TransitivityFilter ); + assertTrue( fa.getFilters().get( 1 ) instanceof ProjectTransitivityFilter ); assertTrue( fa.getFilters().get( 2 ) instanceof TypeFilter ); } Copied: maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/collection/TestProjectTransitivityFilter.java (from r607996, maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/collection/TestTransitivityFilter.java) URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/collection/TestProjectTransitivityFilter.java?p2=maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/collection/TestProjectTransitivityFilter.java&p1=maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/collection/TestTransitivityFilter.java&r1=607996&r2=627958&rev=627958&view=diff ============================================================================== --- maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/collection/TestTransitivityFilter.java (original) +++ maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/collection/TestProjectTransitivityFilter.java Thu Feb 14 22:24:35 2008 @@ -34,7 +34,7 @@ /** * @author <a href="mailto:[EMAIL PROTECTED]">Brian Fox</a> */ -public class TestTransitivityFilter +public class TestProjectTransitivityFilter extends TestCase { Set artifacts = new HashSet(); @@ -56,7 +56,7 @@ public void testAll() { - TransitivityFilter filter = new TransitivityFilter( directArtifacts, false ); + ProjectTransitivityFilter filter = new ProjectTransitivityFilter( directArtifacts, false ); Set result = filter.filter( artifacts ); @@ -65,7 +65,7 @@ public void testExclude() { - TransitivityFilter filter = new TransitivityFilter( directArtifacts, false ); + ProjectTransitivityFilter filter = new ProjectTransitivityFilter( directArtifacts, false ); assertFalse( filter.isExcludeTransitive() ); filter.setExcludeTransitive( true ); assertTrue( filter.isExcludeTransitive() );