Modified: 
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java?rev=604897&r1=604896&r2=604897&view=diff
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java
 (original)
+++ 
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java
 Mon Dec 17 07:24:43 2007
@@ -1,8 +1,5 @@
 package org.apache.maven.plugins.enforcer;
 
-import java.util.Iterator;
-
-import org.apache.maven.artifact.Artifact;
 import org.apache.maven.enforcer.rule.api.EnforcerRule;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
@@ -10,28 +7,18 @@
 import 
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 
 /**
- * @author <a href="mailto:[EMAIL PROTECTED]">Brian Fox</a>
- * 
- * This rule checks that the current project is not a
- * snapshot
+ * @author <a href="mailto:[EMAIL PROTECTED]">Brian Fox</a> This rule checks 
that the current project is not a snapshot
  */
 public class RequireReleaseVersion
-    implements EnforcerRule
+    extends AbstractStandardEnforcerRule
 {
 
-    /**
-     * Specify a friendly message if the rule fails.
-     * 
-     * @parameter
-     */
-    public String message = null;
-
     /*
      * (non-Javadoc)
      * 
      * @see 
org.apache.maven.enforcer.rule.api.EnforcerRule#execute(org.apache.maven.enforcer.rule.api.EnforcerRuleHelper)
      */
-    public void execute ( EnforcerRuleHelper theHelper )
+    public void execute( EnforcerRuleHelper theHelper )
         throws EnforcerRuleException
     {
         try
@@ -61,7 +48,7 @@
      * 
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#getCacheId()
      */
-    public String getCacheId ()
+    public String getCacheId()
     {
         return "0";
     }
@@ -71,7 +58,7 @@
      * 
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#isCacheable()
      */
-    public boolean isCacheable ()
+    public boolean isCacheable()
     {
         return false;
     }
@@ -81,7 +68,7 @@
      * 
      * @see 
org.apache.maven.enforcer.rule.api.EnforcerRule#isResultValid(org.apache.maven.enforcer.rule.api.EnforcerRule)
      */
-    public boolean isResultValid ( EnforcerRule theCachedRule )
+    public boolean isResultValid( EnforcerRule theCachedRule )
     {
         return false;
     }

Modified: 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/bannedDependencies.apt
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/bannedDependencies.apt?rev=604897&r1=598486&r2=604897&view=diff
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/bannedDependencies.apt 
(original)
+++ 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/bannedDependencies.apt 
Mon Dec 17 07:24:43 2007
@@ -64,6 +64,7 @@
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
+        <version>1.0</version>
         <executions>
           <execution>
             <id>enforce-banned-dependencies</id>

Modified: 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/evaluateBeanshell.apt
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/evaluateBeanshell.apt?rev=604897&r1=598486&r2=604897&view=diff
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/evaluateBeanshell.apt 
(original)
+++ 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/evaluateBeanshell.apt 
Mon Dec 17 07:24:43 2007
@@ -47,6 +47,7 @@
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
+        <version>1.0</version>
         <executions>
           <execution>
             <id>enforce-beanshell</id>

Modified: maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/index.apt
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/index.apt?rev=604897&r1=598486&r2=604897&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/index.apt (original)
+++ maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/index.apt Mon Dec 17 
07:24:43 2007
@@ -32,7 +32,7 @@
 
        * {{{evaluateBeanshell.html}evaluateBeanshell}} - evaluates a beanshell 
script.
 
-       * {{{noSnapshots.html}noSnapshots}} - enforces that no snapshots are 
included.
+       * {{{requireReleaseDeps.html}requireReleaseDeps}} - enforces that no 
snapshots are included as dependencies.
 
        * {{{requireMavenVersion.html}requireMavenVersion}} - enforces the 
Maven version.
        

Modified: maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/noSnapshots.apt
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/noSnapshots.apt?rev=604897&r1=598486&r2=604897&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/noSnapshots.apt 
(original)
+++ maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/noSnapshots.apt Mon 
Dec 17 07:24:43 2007
@@ -47,6 +47,7 @@
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
+        <version>1.0</version>
         <executions>
           <execution>
             <id>enforce-no-snapshots</id>

Modified: 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireJavaVersion.apt
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireJavaVersion.apt?rev=604897&r1=598486&r2=604897&view=diff
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireJavaVersion.apt 
(original)
+++ 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireJavaVersion.apt 
Mon Dec 17 07:24:43 2007
@@ -54,7 +54,7 @@
    mvn enforcer:display-info
    ...
    [enforcer:display-info]
-       Maven Version: 2.0.6
+       Maven Version: 2.0.8
        JDK Version: 1.5.0_11 normalized as: 1.5.0-11
        OS Info: Arch: x86 Family: windows Name: windows xp Version: 5.1
 +---+
@@ -69,6 +69,7 @@
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
+        <version>1.0</version>
         <executions>
           <execution>
             <id>enforce-java</id>

Modified: 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireMavenVersion.apt
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireMavenVersion.apt?rev=604897&r1=598486&r2=604897&view=diff
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireMavenVersion.apt 
(original)
+++ 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireMavenVersion.apt 
Mon Dec 17 07:24:43 2007
@@ -45,6 +45,7 @@
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
+        <version>1.0</version>
         <executions>
           <execution>
             <id>enforce-java</id>

Modified: 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireNoRepositories.apt
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireNoRepositories.apt?rev=604897&r1=598486&r2=604897&view=diff
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireNoRepositories.apt
 (original)
+++ 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireNoRepositories.apt
 Mon Dec 17 07:24:43 2007
@@ -57,6 +57,7 @@
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
+        <version>1.0</version>
         <executions>
           <execution>
             <id>enforce-plugin-versions</id>

Modified: maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireOS.apt
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireOS.apt?rev=604897&r1=598486&r2=604897&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireOS.apt 
(original)
+++ maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireOS.apt Mon 
Dec 17 07:24:43 2007
@@ -114,6 +114,7 @@
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
+        <version>1.0</version>
         <executions>
           <execution>
             <id>enforce-os</id>

Modified: 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requirePluginVersions.apt
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requirePluginVersions.apt?rev=604897&r1=598486&r2=604897&view=diff
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requirePluginVersions.apt
 (original)
+++ 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requirePluginVersions.apt
 Mon Dec 17 07:24:43 2007
@@ -57,6 +57,7 @@
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
+        <version>1.0</version>
         <executions>
           <execution>
             <id>enforce-plugin-versions</id>

Modified: 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireProperty.apt
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireProperty.apt?rev=604897&r1=598486&r2=604897&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireProperty.apt 
(original)
+++ maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireProperty.apt 
Mon Dec 17 07:24:43 2007
@@ -50,6 +50,7 @@
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
+        <version>1.0</version>
         <executions>
           <execution>
             <id>enforce-property</id>

Added: 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireReleaseDeps.apt
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireReleaseDeps.apt?rev=604897&view=auto
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireReleaseDeps.apt 
(added)
+++ 
maven/enforcer/trunk/enforcer-rules/src/site/apt/rules/requireReleaseDeps.apt 
Mon Dec 17 07:24:43 2007
@@ -0,0 +1,72 @@
+~~ 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.    
+ 
+  ------
+  Require Release Dependencies
+  ------
+  Brian Fox
+  ------
+  November 2007
+  ------
+
+Require Release Dependencies
+
+  This rule checks the dependencies and fails if any snapshots are found.
+
+
+   The following parameters are supported by this rule:
+   
+   * searchTransitive - if transitive dependencies should be checked.
+   
+   * message - an optional message to the user if the rule fails.
+   
+   []
+
+   
+  Sample Plugin Configuration:
+  
++---+
+<project>
+  [...]
+  <build>
+   <plugins>
+     <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>1.0</version>
+        <executions>
+          <execution>
+            <id>enforce-no-snapshots</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+               <requireReleaseDeps>
+                  <message>No Snapshots Allowed!</message>
+               </requireReleaseDeps>
+             </rules>  
+            <fail>true</fail>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  [...]
+</project>
++---+
\ No newline at end of file

Modified: maven/enforcer/trunk/enforcer-rules/src/site/site.xml
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/site.xml?rev=604897&r1=598486&r2=604897&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/site/site.xml (original)
+++ maven/enforcer/trunk/enforcer-rules/src/site/site.xml Mon Dec 17 07:24:43 
2007
@@ -1,23 +1,19 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <!--
- * 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. 
- *
--->
+  ~ Copyright 2006 The Apache Software Foundation.
+  ~
+  ~ Licensed 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.
+  -->
 
 <project>
   <body>

Modified: 
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java?rev=604897&r1=604896&r2=604897&view=diff
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java
 (original)
+++ 
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java
 Mon Dec 17 07:24:43 2007
@@ -26,12 +26,12 @@
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.logging.SystemStreamLog;
+import org.apache.maven.plugins.enforcer.utils.MockEnforcerExpressionEvaluator;
 import org.apache.maven.project.MavenProject;
 import 
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
 
 /**
  * @author <a href="mailto:[EMAIL PROTECTED]">Brian Fox</a>
- * 
  */
 public class EnforcerTestUtils
 {
@@ -43,20 +43,35 @@
 
     public static EnforcerRuleHelper getHelper()
     {
-        MavenSession session = getMavenSession();
-        ExpressionEvaluator eval = new EnforcerExpressionEvaluator( session, 
new MockPathTranslator(),
-                                                                    new 
MockProject() );
-        return new DefaultEnforcementRuleHelper( session, eval, new 
SystemStreamLog(), null );
+        return getHelper( new MockProject(), false );
+    }
+
+    public static EnforcerRuleHelper getHelper( boolean mockExpression )
+    {
+        return getHelper( new MockProject(), mockExpression );
+    }
+
+    public static EnforcerRuleHelper getHelper( MavenProject project )
+    {
+        return getHelper( project, false );
     }
     
-    public static EnforcerRuleHelper getHelper(MavenProject project) {
+    public static EnforcerRuleHelper getHelper( MavenProject project, boolean 
mockExpression )
+    {
         MavenSession session = getMavenSession();
-        ExpressionEvaluator eval = new EnforcerExpressionEvaluator( session, 
new MockPathTranslator(),
-                                                                               
                                                project );
-        return new DefaultEnforcementRuleHelper( session, eval, new 
SystemStreamLog(),null );
+        ExpressionEvaluator eval;
+        if ( mockExpression )
+        {
+            eval = new MockEnforcerExpressionEvaluator( session, new 
MockPathTranslator(), project );
+        }
+        else
+        {
+            eval = new EnforcerExpressionEvaluator( session, new 
MockPathTranslator(), project );
+        }
+        return new DefaultEnforcementRuleHelper( session, eval, new 
SystemStreamLog(), null );
     }
-    
-    public static Plugin newPlugin(String groupId, String artifactId, String 
version)
+
+    public static Plugin newPlugin( String groupId, String artifactId, String 
version )
     {
         Plugin plugin = new Plugin();
         plugin.setArtifactId( artifactId );

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=604897&r1=604896&r2=604897&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
 Mon Dec 17 07:24:43 2007
@@ -23,7 +23,6 @@
 
 import junit.framework.TestCase;
 
-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.plugins.enforcer.utils.TestEnforcerRuleUtils;
@@ -45,8 +44,7 @@
         EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
         project.setArtifacts( factory.getMixedArtifacts() );
         project.setDependencyArtifacts( factory.getScopedArtifacts() );
-        NoSnapshots rule = new NoSnapshots();
-
+        RequireReleaseDeps rule = new RequireReleaseDeps();
         rule.setSearchTransitive( false );
 
         TestEnforcerRuleUtils.execute( rule, helper, false );
@@ -60,7 +58,7 @@
    
     public void testId ()
     {
-        NoSnapshots rule = new NoSnapshots();
+        RequireReleaseDeps rule = new RequireReleaseDeps();
         rule.getCacheId();
     }
 }

Modified: 
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequirePluginVersions.java
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequirePluginVersions.java?rev=604897&r1=604896&r2=604897&view=diff
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequirePluginVersions.java
 (original)
+++ 
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequirePluginVersions.java
 Mon Dec 17 07:24:43 2007
@@ -28,7 +28,6 @@
 
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.MojoExecutionException;
@@ -38,15 +37,13 @@
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 /**
- * 
  * @author <a href="mailto:[EMAIL PROTECTED]">Brian Fox</a>
- * 
  */
 public class TestRequirePluginVersions
     extends AbstractMojoTestCase
 {
 
-    public void testHasVersionSpecified ()
+    public void testHasVersionSpecified()
     {
         Plugin source = new Plugin();
         source.setArtifactId( "foo" );
@@ -79,39 +76,102 @@
         rule.setBanRelease( false );
         rule.setBanSnapshots( false );
 
-        assertTrue( rule.hasVersionSpecified( source, plugins ) );
+        EnforcerRuleHelper helper = EnforcerTestUtils.getHelper();
+
+        assertTrue( rule.hasValidVersionSpecified( helper, source, plugins ) );
 
         // check that LATEST is allowed
         source.setArtifactId( "c-artifact" );
-        assertTrue( rule.hasVersionSpecified( source, plugins ) );
+        assertTrue( rule.hasValidVersionSpecified( helper, source, plugins ) );
 
         // check that LATEST is banned
         rule.setBanLatest( true );
-        assertFalse( rule.hasVersionSpecified( source, plugins ) );
+        assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) 
);
 
         // check that LATEST is exhausively checked
         rule.setBanSnapshots( false );
         source.setArtifactId( "f-artifact" );
-        assertFalse( rule.hasVersionSpecified( source, plugins ) );
+        assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) 
);
 
         rule.setBanLatest( false );
         rule.setBanSnapshots( true );
-        assertFalse( rule.hasVersionSpecified( source, plugins ) );
+        assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) 
);
 
         // check that RELEASE is allowed
         source.setArtifactId( "d-artifact" );
-        assertTrue( rule.hasVersionSpecified( source, plugins ) );
+        assertTrue( rule.hasValidVersionSpecified( helper, source, plugins ) );
 
         // check that RELEASE is banned
         rule.setBanRelease( true );
-        assertFalse( rule.hasVersionSpecified( source, plugins ) );
+        assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) 
);
 
-        // check that RELEASE is exhausively checked
+        // check that RELEASE is exhaustively checked
         source.setArtifactId( "e-artifact" );
-        assertFalse( rule.hasVersionSpecified( source, plugins ) );
+        assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) 
);
     }
 
-    public void testGetAllPlugins ()
+    
+    public void testHasVersionSpecifiedWithProperties()
+    {
+        Plugin source = new Plugin();
+        source.setGroupId( "group" );
+
+        // setup the plugins. 
+        List plugins = new ArrayList();
+        plugins.add( EnforcerTestUtils.newPlugin( "group", "a-artifact", 
"1.0-${SNAPSHOT}" ) );
+        plugins.add( EnforcerTestUtils.newPlugin( "group", "b-artifact", 
"${1.0}" ) );
+        plugins.add( EnforcerTestUtils.newPlugin( "group", "c-artifact", 
"${LATEST}" ) );
+        plugins.add( EnforcerTestUtils.newPlugin( "group", "d-artifact", 
"${RELEASE}" ) );
+        plugins.add( EnforcerTestUtils.newPlugin( "group", "e-artifact", "${}" 
) );
+        plugins.add( EnforcerTestUtils.newPlugin( "group", "f-artifact", "${   
}" ) );
+        
+
+        RequirePluginVersions rule = new RequirePluginVersions();
+        rule.setBanLatest( false );
+        rule.setBanRelease( false );
+        rule.setBanSnapshots( false );
+
+        EnforcerRuleHelper helper = EnforcerTestUtils.getHelper(true);
+
+        source.setArtifactId( "a-artifact" );
+        assertTrue( rule.hasValidVersionSpecified( helper, source, plugins ) );
+
+        source.setArtifactId( "b-artifact" );
+        assertTrue( rule.hasValidVersionSpecified( helper, source, plugins ) );
+        
+        source.setArtifactId( "c-artifact" );
+        assertTrue( rule.hasValidVersionSpecified( helper, source, plugins ) );
+        
+        source.setArtifactId( "d-artifact" );
+        assertTrue( rule.hasValidVersionSpecified( helper, source, plugins ) );
+
+        //this one checks empty property values
+        source.setArtifactId( "e-artifact" );
+        assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) 
);
+        
+        // this one checks empty property values
+        source.setArtifactId( "f-artifact" );
+        assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) 
);
+        
+        rule.setBanLatest( true );
+        source.setArtifactId( "c-artifact" );
+        assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) 
);
+        
+        rule.setBanRelease( true );
+        source.setArtifactId( "d-artifact" );
+        assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) 
);
+        
+        rule.setBanSnapshots( true );
+        source.setArtifactId( "a-artifact" );
+        assertFalse( rule.hasValidVersionSpecified( helper, source, plugins ) 
);
+        
+        //release versions should pass everything
+        source.setArtifactId( "b-artifact" );
+        assertTrue( rule.hasValidVersionSpecified( helper, source, plugins ) );
+    }
+
+    
+    public void testGetAllPlugins()
         throws ArtifactResolutionException, ArtifactNotFoundException, 
IOException, XmlPullParserException
     {
         RequirePluginVersions rule = new RequirePluginVersions();
@@ -134,13 +194,14 @@
         assertEquals( 3, plugins.size() );
     }
 
-    public void testGetAdditionalPluginsNull () throws MojoExecutionException
+    public void testGetAdditionalPluginsNull()
+        throws MojoExecutionException
     {
         RequirePluginVersions rule = new RequirePluginVersions();
         rule.addAdditionalPlugins( null, null );
     }
-    
-    public void testGetAdditionalPluginsInvalidFormat ()
+
+    public void testGetAdditionalPluginsInvalidFormat()
     {
         RequirePluginVersions rule = new RequirePluginVersions();
 
@@ -173,7 +234,7 @@
 
     }
 
-    public void testGetAdditionalPluginsEmptySet ()
+    public void testGetAdditionalPluginsEmptySet()
         throws MojoExecutionException
     {
         RequirePluginVersions rule = new RequirePluginVersions();
@@ -188,7 +249,7 @@
         additional.add( "group:another-artifact" );
 
         // make sure a null set can be handled
-        Set results = rule.addAdditionalPlugins( null , additional);
+        Set results = rule.addAdditionalPlugins( null, additional );
 
         assertNotNull( results );
         assertContainsPlugin( "group", "a-artifact", results );
@@ -196,7 +257,7 @@
 
     }
 
-    public void testGetAdditionalPlugins ()
+    public void testGetAdditionalPlugins()
         throws MojoExecutionException
     {
         RequirePluginVersions rule = new RequirePluginVersions();
@@ -220,7 +281,7 @@
 
     }
 
-    private void assertContainsPlugin ( String group, String artifact, Set 
theSet )
+    private void assertContainsPlugin( String group, String artifact, Set 
theSet )
     {
         Plugin p = new Plugin();
         p.setGroupId( group );
@@ -228,7 +289,7 @@
         assertTrue( theSet.contains( p ) );
     }
 
-    public void testId ()
+    public void testId()
     {
         RequirePluginVersions rule = new RequirePluginVersions();
         rule.getCacheId();

Added: 
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java?rev=604897&view=auto
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java
 (added)
+++ 
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java
 Mon Dec 17 07:24:43 2007
@@ -0,0 +1,35 @@
+package org.apache.maven.plugins.enforcer.utils;
+
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.plugins.enforcer.EnforcerExpressionEvaluator;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.path.PathTranslator;
+import 
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
+
+public class MockEnforcerExpressionEvaluator
+    extends EnforcerExpressionEvaluator
+{
+
+    public MockEnforcerExpressionEvaluator( MavenSession theContext, 
PathTranslator thePathTranslator,
+                                            MavenProject theProject )
+    {
+        super( theContext, thePathTranslator, theProject );
+        // TODO Auto-generated constructor stub
+    }
+
+    public Object evaluate( String expr )
+        throws ExpressionEvaluationException
+    {
+        if (expr !=null)
+        {
+        //just remove the ${ } and return the name as the value
+        return expr.replaceAll( "\\$\\{|}", "" );
+        }
+        else
+        {
+            return expr;
+        }
+    }
+    
+
+}

Added: 
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestMockEnforcerExpressionEvaluator.java
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestMockEnforcerExpressionEvaluator.java?rev=604897&view=auto
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestMockEnforcerExpressionEvaluator.java
 (added)
+++ 
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestMockEnforcerExpressionEvaluator.java
 Mon Dec 17 07:24:43 2007
@@ -0,0 +1,41 @@
+package org.apache.maven.plugins.enforcer.utils;
+
+import junit.framework.TestCase;
+
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.plugins.enforcer.EnforcerExpressionEvaluator;
+import org.apache.maven.plugins.enforcer.EnforcerTestUtils;
+import org.apache.maven.plugins.enforcer.MockPathTranslator;
+import org.apache.maven.plugins.enforcer.MockProject;
+import 
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
+
+public class TestMockEnforcerExpressionEvaluator
+    extends TestCase
+{
+
+    public void testEvaluate()
+    {
+        MavenSession session = EnforcerTestUtils.getMavenSession();
+
+        EnforcerExpressionEvaluator ev =
+            new MockEnforcerExpressionEvaluator( session, new 
MockPathTranslator(), new MockProject() );
+        assertMatch( ev, "SNAPSHOT" );
+        assertMatch( ev, "RELEASE" );
+        assertMatch( ev, "SNAPSHOT" );
+        assertMatch( ev, "LATEST" );
+        assertMatch( ev, "1.0" );
+    }
+
+    public void assertMatch( EnforcerExpressionEvaluator ev, String exp )
+    {
+        // the mock enforcer should return the name of the expression as the 
value.
+        try
+        {
+            assertEquals( exp, ev.evaluate( "${" + exp + "}") );
+        }
+        catch ( ExpressionEvaluationException e )
+        {
+            fail(e.getLocalizedMessage());
+        }
+    }
+}

Added: 
maven/enforcer/trunk/enforcer-rules/src/test/resources/requirePluginVersions/checkPluginPropertyVersion/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/resources/requirePluginVersions/checkPluginPropertyVersion/pom.xml?rev=604897&view=auto
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/test/resources/requirePluginVersions/checkPluginPropertyVersion/pom.xml
 (added)
+++ 
maven/enforcer/trunk/enforcer-rules/src/test/resources/requirePluginVersions/checkPluginPropertyVersion/pom.xml
 Mon Dec 17 07:24:43 2007
@@ -0,0 +1,53 @@
+<project>
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>a</artifactId>
+    <groupId>group</groupId>
+    <version>1.0</version>
+    <properties>
+        <my.version>2.2-SNAPSHOT</my.version>
+        <my.release>RELEASE</my.release>
+        <my.latest>LATEST</my.latest>
+        <my.snap>SNAPSHOT</my.snap>
+    </properties>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-install-plugin</artifactId>
+                <version>${my.latest}</version>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-clean-plugin</artifactId>
+                <version>${my.release}</version>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <version>${my.version}</version>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-enforcer-plugin</artifactId>
+                <version>1.0-${my.snap}</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>enforce</goal>
+                        </goals>
+                        <configuration>
+                            <rules>
+                                <requirePluginVersions>
+                                    <additionalPlugins>
+                                        
<additionalPlugin>org.apache.maven.plugins:maven-enforcer-plugin</additionalPlugin>
+
+                                    </additionalPlugins>
+                                </requirePluginVersions>
+                            </rules>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file

Added: 
maven/enforcer/trunk/enforcer-rules/src/test/resources/requirePluginVersions/checkPluginVersionProfile/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/resources/requirePluginVersions/checkPluginVersionProfile/pom.xml?rev=604897&view=auto
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/test/resources/requirePluginVersions/checkPluginVersionProfile/pom.xml
 (added)
+++ 
maven/enforcer/trunk/enforcer-rules/src/test/resources/requirePluginVersions/checkPluginVersionProfile/pom.xml
 Mon Dec 17 07:24:43 2007
@@ -0,0 +1,55 @@
+<project>
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>a</artifactId>
+    <groupId>group</groupId>
+    <version>1.0</version>
+    <properties>
+        <my.version>2.2-SNAPSHOT</my.version>
+        <my.release>RELEASE</my.release>
+        <my.latest>LATEST</my.latest>
+        <my.snap>SNAPSHOT</my.snap>
+    </properties>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-enforcer-plugin</artifactId>
+                <version>1.0-${my.snap}</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>enforce</goal>
+                        </goals>
+                        <configuration>
+                            <rules>
+                                <requirePluginVersions>
+                                  <phases>none</phases>
+                                </requirePluginVersions>
+                            </rules>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+    <profiles>
+        <profile>
+            <id>prof</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-site-plugin</artifactId>
+                        <version>RELEASE</version>
+                        <executions>
+                          <execution>
+                            <goals><goal>site</goal></goals>
+                          </execution>
+                          <phase>validate</phase>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile> 
+    </profiles>
+</project>
\ No newline at end of file


Reply via email to