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)