You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2009/04/01 19:32:19 UTC

svn commit: r760975 - in /maven/components/branches/MNG-2766/maven-core/src: main/java/org/apache/maven/plugin/ test/java/org/apache/maven/ test/java/org/apache/maven/lifecycle/ test/java/org/apache/maven/plugin/ test/resources/org/apache/maven/plugin/

Author: jvanzyl
Date: Wed Apr  1 17:32:18 2009
New Revision: 760975

URL: http://svn.apache.org/viewvc?rev=760975&view=rev
Log:
o aligning the plugin parameter expression evaluator with the new test code

Added:
    maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java   (contents, props changed)
      - copied, changed from r760747, maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTest.java
Removed:
    maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTest.java
    maven/components/branches/MNG-2766/maven-core/src/test/resources/org/apache/maven/plugin/
Modified:
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
    maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/MavenTest.java
    maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java
    maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java
    maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java

Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=760975&r1=760974&r2=760975&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Wed Apr  1 17:32:18 2009
@@ -44,7 +44,6 @@
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.execution.RuntimeInformation;
 import org.apache.maven.model.Dependency;
-import org.apache.maven.model.Model;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.PluginExecution;
 import org.apache.maven.monitor.logging.DefaultLog;
@@ -56,7 +55,6 @@
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
 import org.apache.maven.project.artifact.InvalidDependencyVersionException;
-import org.apache.maven.project.path.PathTranslator;
 import org.apache.maven.repository.RepositorySystem;
 import org.apache.maven.repository.VersionNotFoundException;
 import org.codehaus.plexus.PlexusContainer;
@@ -91,8 +89,8 @@
     @Requirement
     protected ArtifactFilterManager coreArtifactFilterManager;
 
-    @Requirement
-    protected PathTranslator pathTranslator;
+    //@Requirement
+    //protected PathTranslator pathTranslator;
 
     @Requirement
     protected MavenPluginCollector pluginCollector;
@@ -351,16 +349,18 @@
             logger.warn( "Mojo: " + mojoDescriptor.getGoal() + " is deprecated.\n" + mojoDescriptor.getDeprecated() );
         }
 
+        /*
         Model model = project.getModel();
         pathTranslator.alignToBaseDirectory( model, project.getBasedir() );
         project.setBuild( model.getBuild() );
+        */
 
         if ( mojoDescriptor.isDependencyResolutionRequired() != null )
         {            
             try
             {
                 // mojoDescriptor.isDependencyResolutionRequired() is actually the scope of the dependency resolution required, not a boolean ... yah.
-                downloadDependencies( session, mojoDescriptor.isDependencyResolutionRequired() );
+                downloadProjectDependencies( session, mojoDescriptor.isDependencyResolutionRequired() );
             }
             catch ( ArtifactResolutionException e )
             {
@@ -550,11 +550,7 @@
 
             PlexusConfiguration mergedConfiguration = mergeMojoConfiguration( pomConfiguration, mojoDescriptor );
 
-            // TODO: plexus changes to make this more like the component descriptor so this can be used instead
-            //            PlexusConfiguration mergedConfiguration = mergeConfiguration( pomConfiguration,
-            //                                                                          mojoDescriptor.getConfiguration() );
-
-            ExpressionEvaluator expressionEvaluator = new PluginParameterExpressionEvaluator( session, mojoExecution, pathTranslator, logger, session.getExecutionProperties() );
+            ExpressionEvaluator expressionEvaluator = new PluginParameterExpressionEvaluator( session, mojoExecution );
 
             PlexusConfiguration extractedMojoConfiguration = extractMojoConfiguration( mergedConfiguration, mojoDescriptor );
 
@@ -1092,17 +1088,54 @@
     // Artifact downloading
     // ----------------------------------------------------------------------
 
-    private void downloadDependencies( MavenSession session, String scope )
+    //TODO: This needs to be moved out of here, and there needs to be some interplay between the lifecycle executor and the plugin manager.   
+    private void downloadProjectDependencies( MavenSession session, String scope )
         throws ArtifactResolutionException, ArtifactNotFoundException, InvalidDependencyVersionException
-    {        
-        resolveTransitiveDependencies( session, scope );
+    {                
+        MavenProject project = session.getCurrentProject();
+        
+        // TODO: such a call in MavenMetadataSource too - packaging not really the intention of type
+        Artifact artifact = repositorySystem.createArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion(), null, project.getPackaging() );
+
+        // TODO: we don't need to resolve over and over again, as long as we are sure that the parameters are the same
+        // check this with yourkit as a hot spot.
+        // Don't recreate if already created - for effeciency, and because clover plugin adds to it
+        if ( project.getDependencyArtifacts() == null )
+        {
+            // NOTE: Don't worry about covering this case with the error-reporter bindings...it's already handled by the project error reporter.
+            try
+            {
+                project.setDependencyArtifacts( repositorySystem.createArtifacts( project.getDependencies(), null, null, project ) );
+            }
+            catch ( VersionNotFoundException e )
+            {
+                throw new InvalidDependencyVersionException( e.getProjectId(), e.getDependency(), e.getPomFile(), e.getCauseException() );
+            }
+        }
+
+        ArtifactFilter filter = new ScopeArtifactFilter( scope );
+
+        ArtifactResolutionRequest request = new ArtifactResolutionRequest()
+            .setArtifact( artifact )
+            .setResolveRoot( false )
+            .setArtifactDependencies( project.getDependencyArtifacts() )
+            .setLocalRepository( session.getLocalRepository() )
+            .setRemoteRepostories( project.getRemoteArtifactRepositories() )
+            .setManagedVersionMap( project.getManagedVersionMap() )
+            .setFilter( filter );
+
+        ArtifactResolutionResult result = repositorySystem.resolve( request );
+        
+        resolutionErrorHandler.throwErrors( request, result );
+
+        project.setArtifacts( result.getArtifacts() );                
         
         ArtifactRepository localRepository = session.getLocalRepository();
         List<ArtifactRepository> remoteArtifactRepositories = session.getCurrentProject().getRemoteArtifactRepositories();
 
-        for ( Artifact artifact : session.getCurrentProject().getArtifacts() )
+        for ( Artifact projectArtifact : session.getCurrentProject().getArtifacts() )
         {            
-            repositorySystem.resolve( new ArtifactResolutionRequest( artifact, localRepository, remoteArtifactRepositories ) );
+            repositorySystem.resolve( new ArtifactResolutionRequest( projectArtifact, localRepository, remoteArtifactRepositories ) );
         }
     }
    

Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java?rev=760975&r1=760974&r2=760975&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java Wed Apr  1 17:32:18 2009
@@ -26,46 +26,32 @@
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.path.PathTranslator;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
-import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.introspection.ReflectionValueExtractor;
 
 /**
  * @author Jason van Zyl
- * @version $Id$
- * @todo belong in MavenSession, so it only gets created once?
  */
 public class PluginParameterExpressionEvaluator
     implements ExpressionEvaluator
 {
-    private final PathTranslator pathTranslator;
+    private MavenSession session;
 
-    private final MavenSession context;
+    private MojoExecution mojoExecution;
 
-    private final Logger logger;
+    private MavenProject project;
 
-    private final MojoExecution mojoExecution;
+    private String basedir;
 
-    private final MavenProject project;
-
-    private final String basedir;
-
-    private final Properties properties;
-
-    public PluginParameterExpressionEvaluator( MavenSession context,
-                                               MojoExecution mojoExecution,
-                                               PathTranslator pathTranslator,
-                                               Logger logger,
-                                               Properties properties )
+    private Properties properties;    
+    
+    public PluginParameterExpressionEvaluator( MavenSession session, MojoExecution mojoExecution )
     {
-        this.context = context;
+        this.session = session;
         this.mojoExecution = mojoExecution;
-        this.pathTranslator = pathTranslator;
-        this.logger = logger;
-        this.properties = properties;
-        project = context.getCurrentProject();
+        this.properties = session.getExecutionProperties();
+        project = session.getCurrentProject();
 
         String basedir = null;
 
@@ -80,50 +66,9 @@
             }
         }
 
-        if ( ( basedir == null ) && ( context != null ) )
-        {
-            basedir = context.getExecutionRootDirectory();
-        }
-
-        if ( basedir == null )
-        {
-            basedir = System.getProperty( "user.dir" );
-        }
-
-        this.basedir = basedir;
-    }
-
-    /**
-     * @deprecated Use {@link PluginParameterExpressionEvaluator#PluginParameterExpressionEvaluator(MavenSession, MojoExecution, PathTranslator, LifecycleExecutionContext, Logger, Properties)}
-     * instead.
-     */
-    @Deprecated
-    public PluginParameterExpressionEvaluator( MavenSession context,
-                                               MojoExecution mojoExecution,
-                                               PathTranslator pathTranslator,
-                                               Logger logger,
-                                               MavenProject project,
-                                               Properties properties )
-    {
-        this.context = context;
-        this.mojoExecution = mojoExecution;
-        this.pathTranslator = pathTranslator;
-        this.logger = logger;
-        this.properties = properties;
-
-        this.project = project;
-
-        String basedir = null;
-
-        if ( project != null )
+        if ( ( basedir == null ) && ( session != null ) )
         {
-            File projectFile = project.getFile();
-
-            // this should always be the case for non-super POM instances...
-            if ( projectFile != null )
-            {
-                basedir = projectFile.getParentFile().getAbsolutePath();
-            }
+            basedir = session.getExecutionRootDirectory();
         }
 
         if ( basedir == null )
@@ -193,15 +138,15 @@
 
         if ( "localRepository".equals( expression ) )
         {
-            value = context.getLocalRepository();
+            value = session.getLocalRepository();
         }
         else if ( "session".equals( expression ) )
         {
-            value = context;
+            value = session;
         }
         else if ( "reactorProjects".equals( expression ) )
         {
-            value = context.getSortedProjects();
+            value = session.getSortedProjects();
         }
         else if ("mojoExecution".equals(expression))
         {
@@ -299,7 +244,7 @@
         }
         else if ( "settings".equals( expression ) )
         {
-            value = context.getSettings();
+            value = session.getSettings();
         }
         else if ( expression.startsWith( "settings" ) )
         {
@@ -310,12 +255,12 @@
                 if ( pathSeparator > 0 )
                 {
                     String pathExpression = expression.substring( 1, pathSeparator );
-                    value = ReflectionValueExtractor.evaluate( pathExpression, context.getSettings() );
+                    value = ReflectionValueExtractor.evaluate( pathExpression, session.getSettings() );
                     value = value + expression.substring( pathSeparator );
                 }
                 else
                 {
-                    value = ReflectionValueExtractor.evaluate( expression.substring( 1 ), context.getSettings() );
+                    value = ReflectionValueExtractor.evaluate( expression.substring( 1 ), session.getSettings() );
                 }
             }
             catch ( Exception e )
@@ -337,10 +282,6 @@
             {
                 value = basedir + expression.substring( pathSeparator );
             }
-            else
-            {
-                logger.error( "Got expression '" + expression + "' that was not recognised" );
-            }
         }
 
         if ( value == null )
@@ -399,22 +340,6 @@
 
     public File alignToBaseDirectory( File file )
     {
-        File basedir;
-
-        if ( ( project != null ) && ( project.getFile() != null ) )
-        {
-            basedir = project.getFile().getParentFile();
-        }
-        else if ( ( context != null ) && ( context.getExecutionRootDirectory() != null ) )
-        {
-            basedir = new File( context.getExecutionRootDirectory() ).getAbsoluteFile();
-        }
-        else
-        {
-            basedir = new File( "." ).getAbsoluteFile().getParentFile();
-        }
-
-        return new File( pathTranslator.alignToBaseDirectory( file.getPath(), basedir ) );
+        return file;
     }
-
 }

Copied: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java (from r760747, maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTest.java)
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java?p2=maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java&p1=maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTest.java&r1=760747&r2=760975&rev=760975&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTest.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java Wed Apr  1 17:32:18 2009
@@ -8,6 +8,7 @@
 import org.apache.maven.execution.DefaultMavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.model.Model;
 import org.apache.maven.plugin.MavenPluginCollector;
 import org.apache.maven.plugin.MavenPluginDiscoverer;
 import org.apache.maven.project.DefaultProjectBuilderConfiguration;
@@ -20,7 +21,7 @@
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.util.FileUtils;
 
-public abstract class AbstractCoreMavenComponentTest
+public abstract class AbstractCoreMavenComponentTestCase
     extends PlexusTestCase
 {
     @Requirement
@@ -34,11 +35,11 @@
     {
         super.setUp();
         repositorySystem = lookup( RepositorySystem.class );
-        projectBuilder = lookup( MavenProjectBuilder.class );        
+        projectBuilder = lookup( MavenProjectBuilder.class );                
     }
 
     abstract protected String getProjectsDirectory();
-    
+        
     protected File getProject( String name )
         throws Exception
     {
@@ -96,11 +97,28 @@
             .setLocalRepository( request.getLocalRepository() )
             .setRemoteRepositories( request.getRemoteRepositories() );
 
-        // We just need to use the configuration, and get the POM from that.
-        MavenProject project = projectBuilder.build( pom, configuration );        
+        MavenProject project = null;
+        
+        if ( pom != null )
+        {
+            project = projectBuilder.build( pom, configuration );
+        }
+        else
+        {
+            project = createStubMavenProject();
+        }
                         
         MavenSession session = new MavenSession( getContainer(), request, project );
         
         return session;
+    }      
+    
+    protected MavenProject createStubMavenProject()
+    {
+        Model model = new Model();
+        model.setGroupId( "org.apache.maven.test" );
+        model.setArtifactId( "maven-test" );
+        model.setVersion( "1.0" );
+        return new MavenProject( model );        
     }
 }

Propchange: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Wed Apr  1 17:32:18 2009
@@ -0,0 +1,7 @@
+/maven/components/branches/MNG-3932-1/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTest.java:746145-746157
+/maven/components/branches/maven-2.0.10-RC/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTest.java:680477
+/maven/components/branches/maven-2.0.x/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTest.java:679206,708871,720042,726541,727548,727998,728264,728940,729060,729738,729785,730631
+/maven/components/branches/maven-2.1.x/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTest.java:739385,741841,747468,748815,749612
+/maven/components/branches/sisbell-plugin-manager/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTest.java:738973-739966
+/maven/components/sisbell-plugin-manager/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTest.java:738757-738972
+/maven/components/trunk/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTest.java:688587-696625,696644-699681

Modified: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/MavenTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/MavenTest.java?rev=760975&r1=760974&r2=760975&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/MavenTest.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/MavenTest.java Wed Apr  1 17:32:18 2009
@@ -7,7 +7,7 @@
 import org.codehaus.plexus.component.annotations.Requirement;
 
 public class MavenTest
-    extends AbstractCoreMavenComponentTest
+    extends AbstractCoreMavenComponentTestCase
 {
     @Requirement
     private Maven maven;

Modified: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java?rev=760975&r1=760974&r2=760975&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java Wed Apr  1 17:32:18 2009
@@ -3,7 +3,7 @@
 import java.io.File;
 import java.util.List;
 
-import org.apache.maven.AbstractCoreMavenComponentTest;
+import org.apache.maven.AbstractCoreMavenComponentTestCase;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.MojoExecution;
 import org.apache.maven.plugin.PluginManager;
@@ -12,7 +12,7 @@
 import org.codehaus.plexus.component.annotations.Requirement;
 
 public class LifecycleExecutorTest
-    extends AbstractCoreMavenComponentTest
+    extends AbstractCoreMavenComponentTestCase
 {
     @Requirement
     private DefaultLifecycleExecutor lifecycleExecutor;

Modified: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java?rev=760975&r1=760974&r2=760975&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java Wed Apr  1 17:32:18 2009
@@ -1,6 +1,6 @@
 package org.apache.maven.plugin;
 
-import org.apache.maven.AbstractCoreMavenComponentTest;
+import org.apache.maven.AbstractCoreMavenComponentTestCase;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
@@ -8,7 +8,7 @@
 import org.codehaus.plexus.component.annotations.Requirement;
 
 public class PluginManagerTest
-    extends AbstractCoreMavenComponentTest
+    extends AbstractCoreMavenComponentTestCase
 {
     @Requirement
     private PluginManager pluginManager;
@@ -153,6 +153,8 @@
     
     // test interpolation of basedir values in mojo configuration
     
+    // test a build where projects use different versions of the same plugin
+    
     // -----------------------------------------------------------------------------------------------
     // Testing help
     // -----------------------------------------------------------------------------------------------

Modified: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java?rev=760975&r1=760974&r2=760975&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java Wed Apr  1 17:32:18 2009
@@ -27,6 +27,7 @@
 import java.util.Map;
 import java.util.Properties;
 
+import org.apache.maven.AbstractCoreMavenComponentTestCase;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.artifact.factory.ArtifactFactory;
@@ -38,22 +39,15 @@
 import org.apache.maven.execution.DuplicateProjectException;
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.execution.MavenSession;
-import org.apache.maven.execution.ReactorManager;
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Model;
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.path.PathTranslator;
 import org.codehaus.plexus.MutablePlexusContainer;
 import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.PlexusTestCase;
-import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.codehaus.plexus.util.dag.CycleDetectedException;
-import org.easymock.MockControl;
 
 
 /**
@@ -62,33 +56,27 @@
  *          06:06:21 jdcasey Exp $
  */
 public class PluginParameterExpressionEvaluatorTest
-    extends PlexusTestCase
+    extends AbstractCoreMavenComponentTestCase
 {
     private static final String FS = System.getProperty( "file.separator" );
 
     private ArtifactFactory factory;
 
-    private PathTranslator pathTranslator;
-
     public void setUp()
         throws Exception
     {
         super.setUp();
-        factory = lookup( ArtifactFactory.class );
-        pathTranslator = lookup( PathTranslator.class );
+        factory = lookup( ArtifactFactory.class );        
     }
-
+    
     public void testPluginDescriptorExpressionReference()
-        throws ExpressionEvaluationException, CycleDetectedException, DuplicateProjectException
+        throws Exception
     {
         MojoExecution exec = newMojoExecution();
 
         MavenSession session = newMavenSession();
 
-        Logger logger = new ConsoleLogger( Logger.LEVEL_INFO, "test" );
-
-        Object result = new PluginParameterExpressionEvaluator( session, exec, pathTranslator,
-                                                                logger, new Properties() ).evaluate( "${plugin}" );
+        Object result = new PluginParameterExpressionEvaluator( session, exec ).evaluate( "${plugin}" );
 
         System.out.println( "Result: " + result );
 
@@ -98,7 +86,7 @@
     }
 
     public void testPluginArtifactsExpressionReference()
-        throws ExpressionEvaluationException, CycleDetectedException, DuplicateProjectException
+        throws Exception
     {
         MojoExecution exec = newMojoExecution();
 
@@ -116,10 +104,7 @@
 
         MavenSession session = newMavenSession();
 
-        Logger logger = new ConsoleLogger( Logger.LEVEL_INFO, "test" );
-
-        List depResults = (List) new PluginParameterExpressionEvaluator( session, exec, pathTranslator,
-                                                                logger, new Properties() ).evaluate( "${plugin.artifacts}" );
+        List depResults = (List) new PluginParameterExpressionEvaluator( session, exec ).evaluate( "${plugin.artifacts}" );
 
         System.out.println( "Result: " + depResults );
 
@@ -129,7 +114,7 @@
     }
 
     public void testPluginArtifactMapExpressionReference()
-        throws ExpressionEvaluationException, CycleDetectedException, DuplicateProjectException
+        throws Exception
     {
         MojoExecution exec = newMojoExecution();
 
@@ -147,11 +132,7 @@
 
         MavenSession session = newMavenSession();
 
-        Logger logger = new ConsoleLogger( Logger.LEVEL_INFO, "test" );
-
-        Map depResults = (Map) new PluginParameterExpressionEvaluator( session, exec,
-                                                                         pathTranslator, logger,
-                                                                         new Properties() ).evaluate( "${plugin.artifactMap}" );
+        Map depResults = (Map) new PluginParameterExpressionEvaluator( session, exec ).evaluate( "${plugin.artifactMap}" );
 
         System.out.println( "Result: " + depResults );
 
@@ -163,16 +144,13 @@
     }
 
     public void testPluginArtifactIdExpressionReference()
-        throws ExpressionEvaluationException, CycleDetectedException, DuplicateProjectException
+        throws Exception
     {
         MojoExecution exec = newMojoExecution();
 
         MavenSession session = newMavenSession();
 
-        Logger logger = new ConsoleLogger( Logger.LEVEL_INFO, "test" );
-
-        Object result = new PluginParameterExpressionEvaluator( session, exec, pathTranslator,
-                                                                logger, new Properties() ).evaluate( "${plugin.artifactId}" );
+        Object result = new PluginParameterExpressionEvaluator( session, exec ).evaluate( "${plugin.artifactId}" );
 
         System.out.println( "Result: " + result );
 
@@ -339,11 +317,11 @@
         assertEquals( "value", value );
     }
 
-    private static MavenSession createSession( PlexusContainer container, ArtifactRepository repo )
+    private static MavenSession createSession( PlexusContainer container, ArtifactRepository repo, Properties properties )
         throws CycleDetectedException, DuplicateProjectException
     {
         MavenExecutionRequest request = new DefaultMavenExecutionRequest()
-            .setProperties( new Properties() )
+            .setProperties( properties )
             .setGoals( Collections.EMPTY_LIST )
             .setBaseDirectory( new File( "" ) )
             .setLocalRepository( repo );
@@ -416,7 +394,8 @@
         ArtifactRepository repo = new DefaultArtifactRepository( "local", "target/repo", repoLayout );
 
         MutablePlexusContainer container = (MutablePlexusContainer) getContainer();
-        MavenSession session = createSession( container, repo );
+        MavenSession session = createSession( container, repo, executionProperties );
+        session.setCurrentProject( project );
 
         MojoDescriptor mojo = new MojoDescriptor();
         mojo.setPluginDescriptor( pluginDescriptor );
@@ -424,7 +403,7 @@
 
         MojoExecution mojoExecution = new MojoExecution( mojo );
 
-        return new PluginParameterExpressionEvaluator( session, mojoExecution, null, container.getLogger(), project, executionProperties );
+        return new PluginParameterExpressionEvaluator( session, mojoExecution );
     }
 
     protected Artifact createArtifact( String groupId,
@@ -454,19 +433,15 @@
     }
 
     private MavenSession newMavenSession()
-        throws CycleDetectedException, DuplicateProjectException
+        throws Exception
     {
-        Model model = new Model();
-        model.setGroupId( "group" );
-        model.setArtifactId( "artifact" );
-        model.setVersion( "1" );
-
-        MavenProject project = new MavenProject( model );
-        ReactorManager rm = new ReactorManager( Collections.singletonList( project ), ReactorManager.FAIL_FAST );
-        MockControl mockMavenExecutionRequest = MockControl.createControl( MavenExecutionRequest.class );
-        MavenExecutionRequest req = (MavenExecutionRequest) mockMavenExecutionRequest.getMock();
-        MavenSession session = new MavenSession( req );
+        return createMavenSession( null );        
+    }
 
-        return session;
+    @Override
+    protected String getProjectsDirectory()
+    {
+        // TODO Auto-generated method stub
+        return null;
     }
 }