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.


Reply via email to