Author: brianf
Date: Wed Nov  7 14:20:15 2007
New Revision: 592925

URL: http://svn.apache.org/viewvc?rev=592925&view=rev
Log:
MENFORCER-10: refactored api to allow better access to the container. Also 
added contextualize to get the real plugin container to load plugin 
dependencies.

Modified:
    
maven/enforcer/trunk/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleHelper.java
    
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DefaultEnforcementRuleHelper.java
    
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java
    
maven/enforcer/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java
    
maven/enforcer/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java
    
maven/enforcer/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/EnforcerTestUtils.java

Modified: 
maven/enforcer/trunk/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleHelper.java
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleHelper.java?rev=592925&r1=592924&r2=592925&view=diff
==============================================================================
--- 
maven/enforcer/trunk/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleHelper.java
 (original)
+++ 
maven/enforcer/trunk/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleHelper.java
 Wed Nov  7 14:20:15 2007
@@ -19,27 +19,47 @@
  * under the License.
  */
 
+import java.util.List;
+import java.util.Map;
+
 import org.apache.maven.plugin.logging.Log;
+import org.codehaus.plexus.PlexusContainer;
 import 
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
 import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
 /**
- * This is the interface that all helpers will use. This provides access to the
- * log, session and components to the rules.
+ * This is the interface that all helpers will use. This
+ * provides access to the log, session and components to the
+ * rules.
  * 
  * @author <a href="mailto:[EMAIL PROTECTED]">Brian Fox</a>
- * @version $Id$
+ * @version $Id: EnforcerRuleHelper.java 571673 2007-09-01
+ *          03:04:24Z brianf $
  */
 public interface EnforcerRuleHelper
     extends ExpressionEvaluator
 {
-    public Log getLog();
+    public Log getLog ();
 
     /*
      * (non-Javadoc)
      * 
      * @see 
org.apache.maven.shared.enforcer.rule.api.EnforcerRuleHelper#getRuntimeInformation()
      */
-    public Object getComponent( Class clazz )
+    public Object getComponent ( Class clazz )
+        throws ComponentLookupException;
+
+    public Object getComponent ( String componentKey )
+        throws ComponentLookupException;
+
+    public Object getComponent ( String role, String roleHint )
+        throws ComponentLookupException;
+
+    public Map getComponentMap ( String role )
+        throws ComponentLookupException;
+
+    public List getComponentList ( String role )
         throws ComponentLookupException;
+    
+    public PlexusContainer getContainer(); 
 }

Modified: 
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DefaultEnforcementRuleHelper.java
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DefaultEnforcementRuleHelper.java?rev=592925&r1=592924&r2=592925&view=diff
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DefaultEnforcementRuleHelper.java
 (original)
+++ 
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DefaultEnforcementRuleHelper.java
 Wed Nov  7 14:20:15 2007
@@ -20,22 +20,25 @@
  */
 
 import java.io.File;
+import java.util.List;
+import java.util.Map;
 
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.logging.Log;
+import org.codehaus.plexus.PlexusContainer;
 import 
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 import 
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
 import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
 /**
- * Default implementation of the EnforcementRuleHelper interface. This is used
- * to help retreive information from the session and provide usefull elements
- * like the log.
+ * Default implementation of the EnforcementRuleHelper
+ * interface. This is used to help retreive information from
+ * the session and provide usefull elements like the log.
  * 
  * @author <a href="mailto:[EMAIL PROTECTED]">Brian Fox</a>
- * @version $Id: DefaultEnforcementRuleHelper.java 523141 2007-03-28 02:11:47Z
- *          brianf $
+ * @version $Id: DefaultEnforcementRuleHelper.java 523141
+ *          2007-03-28 02:11:47Z brianf $
  */
 public class DefaultEnforcementRuleHelper
     implements EnforcerRuleHelper
@@ -46,14 +49,25 @@
 
     MavenSession session;
 
-    public DefaultEnforcementRuleHelper( MavenSession session, 
ExpressionEvaluator evaluator, Log log )
+    PlexusContainer container;
+
+    public DefaultEnforcementRuleHelper( MavenSession session, 
ExpressionEvaluator evaluator, Log log,
+                                         PlexusContainer container )
     {
         this.evaluator = evaluator;
         this.log = log;
         this.session = session;
+        if (container != null)
+        {
+            this.container = container;
+        }
+        else
+        {
+            this.container = session.getContainer();
+        }
     }
 
-    public Log getLog()
+    public Log getLog ()
     {
         return log;
     }
@@ -63,7 +77,7 @@
      * 
      * @see 
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator#alignToBaseDirectory(java.io.File)
      */
-    public File alignToBaseDirectory( File theFile )
+    public File alignToBaseDirectory ( File theFile )
     {
         return evaluator.alignToBaseDirectory( theFile );
     }
@@ -73,7 +87,7 @@
      * 
      * @see 
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator#evaluate(java.lang.String)
      */
-    public Object evaluate( String theExpression )
+    public Object evaluate ( String theExpression )
         throws ExpressionEvaluationException
     {
         return evaluator.evaluate( theExpression );
@@ -84,10 +98,62 @@
      * 
      * @see 
org.apache.maven.shared.enforcer.rule.api.EnforcerRuleHelper#getRuntimeInformation()
      */
-    public Object getComponent( Class clazz )
+    public Object getComponent ( Class clazz )
+        throws ComponentLookupException
+    {
+        return getComponent( clazz.getName() );
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see 
org.apache.maven.enforcer.rule.api.EnforcerRuleHelper#lookup(java.lang.String)
+     */
+    public Object getComponent ( String theComponentKey )
+        throws ComponentLookupException
+    {
+        return container.lookup( theComponentKey );
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see 
org.apache.maven.enforcer.rule.api.EnforcerRuleHelper#lookup(java.lang.String,
+     *      java.lang.String)
+     */
+    public Object getComponent ( String theRole, String theRoleHint )
+        throws ComponentLookupException
+    {
+        return container.lookup( theRole, theRoleHint );
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see 
org.apache.maven.enforcer.rule.api.EnforcerRuleHelper#lookupList(java.lang.String)
+     */
+    public List getComponentList ( String theRole )
+        throws ComponentLookupException
+    {
+        return container.lookupList( theRole );
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see 
org.apache.maven.enforcer.rule.api.EnforcerRuleHelper#lookupMap(java.lang.String)
+     */
+    public Map getComponentMap ( String theRole )
         throws ComponentLookupException
     {
-        return session.lookup( clazz.getName() );
+        return container.lookupMap( theRole );
     }
 
+    /* (non-Javadoc)
+     * @see 
org.apache.maven.enforcer.rule.api.EnforcerRuleHelper#getContainer()
+     */
+    public PlexusContainer getContainer ()
+    {
+        return container;
+    }
 }

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=592925&r1=592924&r2=592925&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
 Wed Nov  7 14:20:15 2007
@@ -46,14 +46,14 @@
         MavenSession session = getMavenSession();
         ExpressionEvaluator eval = new EnforcerExpressionEvaluator( session, 
new MockPathTranslator(),
                                                                     new 
MockProject() );
-        return new DefaultEnforcementRuleHelper( session, eval, new 
SystemStreamLog() );
+        return new DefaultEnforcementRuleHelper( session, eval, new 
SystemStreamLog(), null );
     }
     
     public static EnforcerRuleHelper getHelper(MavenProject project) {
         MavenSession session = getMavenSession();
         ExpressionEvaluator eval = new EnforcerExpressionEvaluator( session, 
new MockPathTranslator(),
                                                                                
                                                project );
-        return new DefaultEnforcementRuleHelper( session, eval, new 
SystemStreamLog() );
+        return new DefaultEnforcementRuleHelper( session, eval, new 
SystemStreamLog(),null );
     }
     
     public static Plugin newPlugin(String groupId, String artifactId, String 
version)

Modified: 
maven/enforcer/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java?rev=592925&r1=592924&r2=592925&view=diff
==============================================================================
--- 
maven/enforcer/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java
 (original)
+++ 
maven/enforcer/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java
 Wed Nov  7 14:20:15 2007
@@ -26,17 +26,24 @@
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.path.PathTranslator;
+import org.codehaus.plexus.PlexusConstants;
+import org.codehaus.plexus.PlexusContainer;
 import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.codehaus.plexus.context.Context;
+import org.codehaus.plexus.context.ContextException;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
 
 /**
  * This goal displays the current platform information
  * 
  * @goal display-info
  * @author <a href="mailto:[EMAIL PROTECTED]">Brian Fox</a>
- * @version $Id: EnforceMojo.java 523156 2007-03-28 03:53:54Z brianf $
+ * @version $Id: EnforceMojo.java 523156 2007-03-28
+ *          03:53:54Z brianf $
  */
 public class DisplayInfoMojo
     extends AbstractMojo
+    implements Contextualizable
 {
 
     /**
@@ -62,16 +69,27 @@
      */
     protected MavenProject project;
 
+    // set by the contextualize method. Only way to get the
+    // plugin's container in 2.0.x
+    protected PlexusContainer container;
+
+    public void contextualize ( Context context )
+        throws ContextException
+    {
+        container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY 
);
+    }
+
     /**
      * Entry point to the mojo
      */
-    public void execute()
+    public void execute ()
         throws MojoExecutionException
     {
         try
         {
             EnforcerExpressionEvaluator evaluator = new 
EnforcerExpressionEvaluator( session, translator, project );
-            DefaultEnforcementRuleHelper helper = new 
DefaultEnforcementRuleHelper( session, evaluator, getLog() );
+            DefaultEnforcementRuleHelper helper = new 
DefaultEnforcementRuleHelper( session, evaluator, getLog(),
+                                                                               
     container );
             RuntimeInformation rti = (RuntimeInformation) helper.getComponent( 
RuntimeInformation.class );
             getLog().info( "Maven Version: " + rti.getApplicationVersion() );
             getLog().info(

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=592925&r1=592924&r2=592925&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  7 14:20:15 2007
@@ -32,6 +32,11 @@
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.path.PathTranslator;
+import org.codehaus.plexus.PlexusConstants;
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.context.Context;
+import org.codehaus.plexus.context.ContextException;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
 
 /**
  * This goal executes the defined enforcer-rules once per
@@ -46,6 +51,7 @@
  */
 public class EnforceMojo
     extends AbstractMojo
+    implements Contextualizable
 {
 
     /**
@@ -113,8 +119,22 @@
      */
      protected boolean ignoreCache = false;
     
-    protected static Hashtable cache = new Hashtable();
+    /**
+     * This is a static variable used to persist the cached results across 
plugin invocations.
+     */
+     protected static Hashtable cache = new Hashtable();
+
+    
+    // set by the contextualize method. Only way to get the
+    // plugin's container in 2.0.x
+    protected PlexusContainer container;
 
+    public void contextualize ( Context context )
+        throws ContextException
+    {
+        container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY 
);
+    }
+    
     /**
      * Entry point to the mojo
      */
@@ -137,7 +157,7 @@
                 String currentRule = "Unknown";
 
                 // create my helper
-                EnforcerRuleHelper helper = new DefaultEnforcementRuleHelper( 
session, evaluator, log );
+                EnforcerRuleHelper helper = new DefaultEnforcementRuleHelper( 
session, evaluator, log, container );
 
                 // if we are only warning, then disable
                 // failFast

Modified: 
maven/enforcer/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/EnforcerTestUtils.java
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/EnforcerTestUtils.java?rev=592925&r1=592924&r2=592925&view=diff
==============================================================================
--- 
maven/enforcer/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/EnforcerTestUtils.java
 (original)
+++ 
maven/enforcer/trunk/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/EnforcerTestUtils.java
 Wed Nov  7 14:20:15 2007
@@ -51,14 +51,14 @@
         MavenSession session = getMavenSession();
         ExpressionEvaluator eval = new EnforcerExpressionEvaluator( session, 
new MockPathTranslator(),
                                                                     new 
MockProject() );
-        return new DefaultEnforcementRuleHelper( session, eval, new 
SystemStreamLog() );
+        return new DefaultEnforcementRuleHelper( session, eval, new 
SystemStreamLog(), session.getContainer() );
     }
     
     public static EnforcerRuleHelper getHelper(MavenProject project) {
         MavenSession session = getMavenSession();
         ExpressionEvaluator eval = new EnforcerExpressionEvaluator( session, 
new MockPathTranslator(),
                                                                                
                                                project );
-        return new DefaultEnforcementRuleHelper( session, eval, new 
SystemStreamLog() );
+        return new DefaultEnforcementRuleHelper( session, eval, new 
SystemStreamLog(),session.getContainer() );
     }
     
     public static Plugin newPlugin(String groupId, String artifactId, String 
version)


Reply via email to