You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2008/02/15 07:24:38 UTC

svn commit: r627958 - in /maven/shared/trunk/maven-common-artifact-filters/src: main/java/org/apache/maven/shared/artifact/filter/collection/ test/java/org/apache/maven/shared/artifact/filter/collection/

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:brianf@apache.org">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:brianf@apache.org">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:brianf@apache.org">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() );