You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2013/06/22 12:05:58 UTC

svn commit: r1495697 - in /maven/enforcer/trunk/enforcer-rules/src: main/java/org/apache/maven/plugins/enforcer/ test/java/org/apache/maven/plugins/enforcer/

Author: rfscholte
Date: Sat Jun 22 10:05:58 2013
New Revision: 1495697

URL: http://svn.apache.org/r1495697
Log:
Always use DependencyGraphBuilder to get the dependencies
Default lookup fails with M2, so when component lookup fails, fall back to Maven2DependencyGraphBuilder

Modified:
    maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
    maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestBannedDependencies.java
    maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java
    maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java

Modified: maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java?rev=1495697&r1=1495696&r2=1495697&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java (original)
+++ maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java Sat Jun 22 10:05:58 2013
@@ -19,17 +19,14 @@ package org.apache.maven.plugins.enforce
  * under the License.
  */
 
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Set;
 
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.MavenProjectHelper;
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
 import org.apache.maven.shared.dependency.graph.DependencyNode;
@@ -48,8 +45,8 @@ public abstract class AbstractBanDepende
 
     /** Specify if transitive dependencies should be searched (default) or only look at direct dependencies. */
     private boolean searchTransitive = true;
-
-    private DependencyGraphBuilder graphBuilder;
+    
+    private transient DependencyGraphBuilder graphBuilder;
 
     /**
      * Execute the rule.
@@ -78,7 +75,15 @@ public abstract class AbstractBanDepende
         }
         catch ( ComponentLookupException e )
         {
-            throw new EnforcerRuleException( "Unable to lookup DependencyGraphBuilder: ", e );
+            // real cause is probably that one of the Maven3 graph builder could not be initiated and fails with a ClassNotFoundException
+            try
+            {
+                graphBuilder = (DependencyGraphBuilder) helper.getComponent( DependencyGraphBuilder.class.getName(), "maven2" );
+            }
+            catch ( ComponentLookupException e1 )
+            {
+                throw new EnforcerRuleException( "Unable to lookup DependencyGraphBuilder: ", e );
+            }
         }
         
         // get the correct list of dependencies
@@ -113,44 +118,30 @@ public abstract class AbstractBanDepende
         return "Found Banned Dependency: " + artifact.getId() + "\n";
     }
 
-    @SuppressWarnings( "unchecked" )
     protected Set<Artifact> getDependenciesToCheck( MavenProject project )
     {
         Set<Artifact> dependencies = null;
-        if ( searchTransitive )
-        {
-            dependencies = project.getArtifacts();
-        }
-        else
-        {
-            dependencies = project.getDependencyArtifacts();
-        }
-        
-        // requiresDependencyCollection doesn't work for M2, this is the fallback
-        if( dependencies == null )
+        try
         {
-            try
+            DependencyNode node = graphBuilder.buildDependencyGraph( project, null );
+            if( searchTransitive )
             {
-                DependencyNode node = graphBuilder.buildDependencyGraph( project, null );
-                if( searchTransitive )
-                {
-                    dependencies  = getAllDescendants( node );
-                }
-                else if ( node.getChildren() != null )
-                {
-                    dependencies = new HashSet<Artifact>();
-                    for( DependencyNode depNode : node.getChildren() )
-                    {
-                        dependencies.add( depNode.getArtifact() );
-                    }
-                }
+                dependencies  = getAllDescendants( node );
             }
-            catch ( DependencyGraphBuilderException e )
+            else if ( node.getChildren() != null )
             {
-                // otherwise we need to change the signature of this protected method
-                throw new RuntimeException( e );
+                dependencies = new HashSet<Artifact>();
+                for( DependencyNode depNode : node.getChildren() )
+                {
+                    dependencies.add( depNode.getArtifact() );
+                }
             }
         }
+        catch ( DependencyGraphBuilderException e )
+        {
+            // otherwise we need to change the signature of this protected method
+            throw new RuntimeException( e );
+        }
         return dependencies;
     }
 
@@ -162,6 +153,7 @@ public abstract class AbstractBanDepende
             children = new HashSet<Artifact>();
             for( DependencyNode depNode : node.getChildren() )
             {
+                children.add( depNode.getArtifact() );
                 Set<Artifact> subNodes = getAllDescendants( depNode );
                 if( subNodes != null )
                 {

Modified: maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestBannedDependencies.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestBannedDependencies.java?rev=1495697&r1=1495696&r2=1495697&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestBannedDependencies.java (original)
+++ maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestBannedDependencies.java Sat Jun 22 10:05:58 2013
@@ -22,12 +22,15 @@ package org.apache.maven.plugins.enforce
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 
 import junit.framework.TestCase;
 
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.plugin.testing.ArtifactStubFactory;
+import org.apache.maven.project.MavenProject;
 
 // TODO: Auto-generated Javadoc
 /**
@@ -52,7 +55,8 @@ public class TestBannedDependencies
         EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
         project.setArtifacts( factory.getMixedArtifacts() );
         project.setDependencyArtifacts( factory.getScopedArtifacts() );
-        BannedDependencies rule = new BannedDependencies();
+        
+        BannedDependencies rule = newBannedDependenciesRule();
 
         List<String> excludes = new ArrayList<String>();
         rule.setSearchTransitive( false );
@@ -143,7 +147,7 @@ public class TestBannedDependencies
         EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
         project.setArtifacts( factory.getMixedArtifacts() );
         project.setDependencyArtifacts( factory.getScopedArtifacts() );
-        BannedDependencies rule = new BannedDependencies();
+        BannedDependencies rule = newBannedDependenciesRule();
 
         List<String> excludes = new ArrayList<String>();
         List<String> includes = new ArrayList<String>();
@@ -170,6 +174,21 @@ public class TestBannedDependencies
         execute( rule, helper, true );
     }
 
+    private BannedDependencies newBannedDependenciesRule()
+    {
+        BannedDependencies rule = new BannedDependencies()
+        {
+            @Override
+            protected Set<Artifact> getDependenciesToCheck( MavenProject project )
+            {
+                // the integration with dependencyGraphTree is verified with the integration tests
+                // for unit-testing 
+                return isSearchTransitive() ? project.getArtifacts() : project.getDependencyArtifacts();
+            }
+        };
+        return rule;
+    }
+
     /**
      * Simpler wrapper to execute and deal with the expected result.
      *

Modified: maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java?rev=1495697&r1=1495696&r2=1495697&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java (original)
+++ maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java Sat Jun 22 10:05:58 2013
@@ -20,12 +20,15 @@ package org.apache.maven.plugins.enforce
  */
 
 import java.io.IOException;
+import java.util.Set;
 
 import junit.framework.TestCase;
 
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.plugin.testing.ArtifactStubFactory;
 import org.apache.maven.plugins.enforcer.utils.TestEnforcerRuleUtils;
+import org.apache.maven.project.MavenProject;
 
 /**
  * The Class TestNoSnapshots.
@@ -50,7 +53,7 @@ public class TestNoSnapshots
         EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
         project.setArtifacts( factory.getMixedArtifacts() );
         project.setDependencyArtifacts( factory.getScopedArtifacts() );
-        NoSnapshots rule = new NoSnapshots();
+        NoSnapshots rule = newNoSnapshots();
         rule.setSearchTransitive( false );
 
         TestEnforcerRuleUtils.execute( rule, helper, false );
@@ -64,12 +67,26 @@ public class TestNoSnapshots
         TestEnforcerRuleUtils.execute( rule, helper, true );
     }
 
+    private NoSnapshots newNoSnapshots()
+    {
+        NoSnapshots rule = new NoSnapshots()
+        {
+            protected Set<Artifact> getDependenciesToCheck( MavenProject project )
+            {
+                // the integration with dependencyGraphTree is verified with the integration tests
+                // for unit-testing 
+                return isSearchTransitive() ? project.getArtifacts() : project.getDependencyArtifacts();
+            }
+        };
+        return rule;
+    }
+
     /**
      * Test id.
      */
     public void testId()
     {
-        NoSnapshots rule = new NoSnapshots();
+        NoSnapshots rule = newNoSnapshots();
         rule.getCacheId();
     }
 }

Modified: maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java?rev=1495697&r1=1495696&r2=1495697&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java (original)
+++ maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java Sat Jun 22 10:05:58 2013
@@ -20,12 +20,15 @@ package org.apache.maven.plugins.enforce
  */
 
 import java.io.IOException;
+import java.util.Set;
 
 import junit.framework.TestCase;
 
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.plugin.testing.ArtifactStubFactory;
 import org.apache.maven.plugins.enforcer.utils.TestEnforcerRuleUtils;
+import org.apache.maven.project.MavenProject;
 
 // TODO: Auto-generated Javadoc
 /**
@@ -51,7 +54,7 @@ public class TestRequireReleaseDeps
         EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
         project.setArtifacts( factory.getMixedArtifacts() );
         project.setDependencyArtifacts( factory.getScopedArtifacts() );
-        RequireReleaseDeps rule = new RequireReleaseDeps();
+        RequireReleaseDeps rule = newRequireReleaseDeps();
         rule.setSearchTransitive( false );
 
         TestEnforcerRuleUtils.execute( rule, helper, false );
@@ -90,12 +93,26 @@ public class TestRequireReleaseDeps
 
     }
 
+    private RequireReleaseDeps newRequireReleaseDeps()
+    {
+        RequireReleaseDeps rule = new RequireReleaseDeps()
+        {
+            protected Set<Artifact> getDependenciesToCheck( MavenProject project )
+            {
+                // the integration with dependencyGraphTree is verified with the integration tests
+                // for unit-testing 
+                return isSearchTransitive() ? project.getArtifacts() : project.getDependencyArtifacts();
+            }
+        };        
+        return rule;
+    }
+
     /**
      * Test id.
      */
     public void testId()
     {
-        RequireReleaseDeps rule = new RequireReleaseDeps();
+        RequireReleaseDeps rule = newRequireReleaseDeps();
         rule.getCacheId();
     }
 }