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/05/29 04:46:41 UTC

svn commit: r661187 - in /maven/enforcer/trunk/enforcer-rules/src: main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java

Author: brianf
Date: Wed May 28 19:46:40 2008
New Revision: 661187

URL: http://svn.apache.org/viewvc?rev=661187&view=rev
Log:
MENFORCER-43 patch from Jacob Robertson to make the snapshots rule able to be applied when the main artifact is a release only.

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

Modified: maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java?rev=661187&r1=661186&r2=661187&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java (original)
+++ maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java Wed May 28 19:46:40 2008
@@ -24,7 +24,10 @@
 
 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.logging.Log;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 
 // TODO: Auto-generated Javadoc
 /**
@@ -38,7 +41,47 @@
 {
 
     /**
-     * Checks the set of dependencies to see if any snapshots are included.
+     * Allows this rule to execute only when this project is a release.
+     * 
+     * @parameter
+     */
+    public boolean onlyWhenRelease = false;
+
+    /**
+     * Override parent to allow optional ignore of this rule.
+     */
+    public void execute( EnforcerRuleHelper helper )
+        throws EnforcerRuleException
+    {
+    	boolean callSuper;
+    	if ( onlyWhenRelease )
+    	{
+            // get the project
+            MavenProject project = null;
+            try
+            {
+                project = (MavenProject) helper.evaluate( "${project}" );
+            }
+            catch ( ExpressionEvaluationException eee )
+            {
+                throw new EnforcerRuleException( "Unable to retrieve the MavenProject: ", eee );
+            }
+
+            // only call super if this project is a release
+            callSuper = !project.getArtifact().isSnapshot();
+    	}
+    	else
+    	{
+    		callSuper = true;
+    	}
+    	if ( callSuper )
+    	{
+    		super.execute(helper);
+    	}
+    }
+	
+    /**
+     * Checks the set of dependencies to see if any snapshots are included
      * 
      * @param dependencies the dependencies
      * @param log the log

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=661187&r1=661186&r2=661187&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 Wed May 28 19:46:40 2008
@@ -58,7 +58,20 @@
 
         TestEnforcerRuleUtils.execute( rule, helper, true );
 
-    }
+        // test onlyWhenRelease in each case
+        
+        project.setArtifact( factory.getSnapshotArtifact() );
+        
+        TestEnforcerRuleUtils.execute( rule, helper, true );
+        
+        rule.onlyWhenRelease = true;
+
+        TestEnforcerRuleUtils.execute( rule, helper, false );
+
+        project.setArtifact( factory.getReleaseArtifact() );
+        
+        TestEnforcerRuleUtils.execute( rule, helper, true );
+    } 
 
     /**
      * Test id.