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 2007/11/14 15:45:07 UTC

svn commit: r594911 - in /maven/enforcer/trunk: ./ enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/ maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/

Author: brianf
Date: Wed Nov 14 06:45:02 2007
New Revision: 594911

URL: http://svn.apache.org/viewvc?rev=594911&view=rev
Log:
MENFORCER-24 new rule to check active profiles

Added:
    maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java
Modified:
    maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java
    maven/enforcer/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java
    maven/enforcer/trunk/pom.xml

Added: maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java?rev=594911&view=auto
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java (added)
+++ maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java Wed Nov 14 06:45:02 2007
@@ -0,0 +1,157 @@
+package org.apache.maven.plugins.enforcer;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.maven.enforcer.rule.api.EnforcerRule;
+import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
+import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+import org.apache.maven.model.Profile;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
+import org.codehaus.plexus.util.StringUtils;
+
+/**
+ * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
+ * 
+ * This rule checks that the current project is not a
+ * snapshot
+ */
+public class RequireActiveProfile
+    implements EnforcerRule
+{
+
+    /**
+     * Specify a friendly message if the rule fails.
+     * 
+     * @parameter
+     */
+    public String message = null;
+
+    /**
+     * Comma separated list of profiles to check
+     */
+    public String profiles = null;
+
+    /**
+     * If all profiles must be active. If false, only one
+     * must be active
+     */
+    public boolean all = true;
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.maven.enforcer.rule.api.EnforcerRule#execute(org.apache.maven.enforcer.rule.api.EnforcerRuleHelper)
+     */
+    public void execute ( EnforcerRuleHelper theHelper )
+        throws EnforcerRuleException
+    {
+        List missingProfiles = new ArrayList();
+        try
+        {
+            MavenProject project = (MavenProject) theHelper.evaluate( "${project}" );
+            if ( StringUtils.isNotEmpty( profiles ) )
+            {
+                String[] profs = profiles.split( "," );
+                for ( int i = 0; i < profs.length; i++ )
+                {
+                    if ( !isProfileActive( project, profs[i] ) )
+                    {
+                        missingProfiles.add( profs[i] );
+                    }
+                }
+                
+                boolean fail = false;
+                if ( !missingProfiles.isEmpty() )
+                {
+                    if (all && missingProfiles.size() != profs.length)
+                    {
+                        fail = true;
+                    }
+                    else
+                    {
+                        if (!all && missingProfiles.size() >= (profs.length -1))
+                        {
+                            fail = true;
+                        }
+                    }
+                }
+                
+                if ( fail )
+                {
+                    StringBuffer buf = new StringBuffer();
+                    if ( message != null )
+                    {
+                        buf.append( message + "\n" );
+                    }
+
+                    Iterator iter = missingProfiles.iterator();
+                    while ( iter.hasNext() )
+                    {
+                        buf.append( "Profile \"" + iter.next().toString() + "\" is not activated.\n" );
+                    }
+
+                    throw new EnforcerRuleException( buf.toString() );
+                }
+
+            }
+
+        }
+        catch ( ExpressionEvaluationException e )
+        {
+            throw new EnforcerRuleException( "Unable to retrieve the project.", e );
+        }
+
+    }
+
+    protected boolean isProfileActive ( MavenProject project, String profileName )
+    {
+        List activeProfiles = project.getActiveProfiles();
+        if ( activeProfiles != null && !activeProfiles.isEmpty() )
+        {
+            for ( Iterator it = activeProfiles.iterator(); it.hasNext(); )
+            {
+                Profile profile = (Profile) it.next();
+                if ( profile.getId().equals( profileName ) )
+                {
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.maven.enforcer.rule.api.EnforcerRule#getCacheId()
+     */
+    public String getCacheId ()
+    {
+        return "0";
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.maven.enforcer.rule.api.EnforcerRule#isCacheable()
+     */
+    public boolean isCacheable ()
+    {
+        return false;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.maven.enforcer.rule.api.EnforcerRule#isResultValid(org.apache.maven.enforcer.rule.api.EnforcerRule)
+     */
+    public boolean isResultValid ( EnforcerRule theCachedRule )
+    {
+        return false;
+    }
+
+}

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=594911&r1=594910&r2=594911&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 Wed Nov 14 06:45:02 2007
@@ -1,5 +1,8 @@
 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;
@@ -16,6 +19,13 @@
     implements EnforcerRule
 {
 
+    /**
+     * Specify a friendly message if the rule fails.
+     * 
+     * @parameter
+     */
+    public String message = null;
+
     /*
      * (non-Javadoc)
      * 
@@ -27,10 +37,16 @@
         try
         {
             MavenProject project = (MavenProject) theHelper.evaluate( "${project}" );
-            
-            if(project.getArtifact().isSnapshot())
+
+            if ( project.getArtifact().isSnapshot() )
             {
-                throw new EnforcerRuleException("This project cannot be a snapshot:"+project.getArtifact().getId());
+                StringBuffer buf = new StringBuffer();
+                if ( message != null )
+                {
+                    buf.append( message + "\n" );
+                }
+                buf.append( "This project cannot be a snapshot:" + project.getArtifact().getId() );
+                throw new EnforcerRuleException( buf.toString() );
             }
         }
         catch ( ExpressionEvaluationException e )

Modified: maven/enforcer/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java?rev=594911&r1=594910&r2=594911&view=diff
==============================================================================
--- maven/enforcer/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java (original)
+++ maven/enforcer/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java Wed Nov 14 06:45:02 2007
@@ -193,12 +193,12 @@
                             // false if fail is false.
                             if ( failFast )
                             {
-                                throw new MojoExecutionException( currentRule + " failed with message: "
+                                throw new MojoExecutionException( currentRule + " failed with message:\n"
                                     + e.getMessage(), e );
                             }
                             else
                             {
-                                list.add( "Rule " + i + ": " + currentRule + " failed with message: " + e.getMessage() );
+                                list.add( "Rule " + i + ": " + currentRule + " failed with message:\n" + e.getMessage() );
                             }
                         }
                     }

Modified: maven/enforcer/trunk/pom.xml
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/pom.xml?rev=594911&r1=594910&r2=594911&view=diff
==============================================================================
--- maven/enforcer/trunk/pom.xml (original)
+++ maven/enforcer/trunk/pom.xml Wed Nov 14 06:45:02 2007
@@ -176,16 +176,6 @@
       <url>scp://people.apache.org/www/maven.apache.org/enforcer/</url>
     </site>
   </distributionManagement>
-  <repositories>
-    <repository>
-      <releases>
-        <enabled>false</enabled>
-      </releases>
-      <id>codehaus.snapshots</id>
-      <name>Codehaus Snapshot Development Repository</name>
-      <url>http://snapshots.repository.codehaus.org</url>
-    </repository>
-  </repositories>
   
   	<dependencyManagement>
 	  <dependencies>