You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2008/07/24 20:04:51 UTC

svn commit: r679476 - in /maven/sandbox/branches/SI_MAVEN_2_1_A: ./ maven-core/src/main/java/org/apache/maven/lifecycle/ maven-core/src/main/java/org/apache/maven/lifecycle/binding/ maven-embedder/src/main/resources/META-INF/plexus/ maven-embedder/src/...

Author: sisbell
Date: Thu Jul 24 11:04:50 2008
New Revision: 679476

URL: http://svn.apache.org/viewvc?rev=679476&view=rev
Log:
Merge from trunk.

Added:
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/interpolation/PathTranslatingPostProcessor.java
      - copied unchanged from r679474, maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/PathTranslatingPostProcessor.java
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/test/resources/project-dynamism/plugin-level-dep.pom.xml
      - copied unchanged from r679474, maven/components/trunk/maven-project/src/test/resources/project-dynamism/plugin-level-dep.pom.xml
Removed:
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/interpolation/PathTranslatingValueSource.java
Modified:
    maven/sandbox/branches/SI_MAVEN_2_1_A/   (props changed)
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/binding/LifecycleBindingManager.java
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/main/resources/META-INF/plexus/components.xml
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractEmbedderTestCase.java
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/embedder/validation/MavenEmbedderCrappySettingsConfigurationTest.java
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/error/ErrorReporterPointcutTest.java
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java
    maven/sandbox/branches/SI_MAVEN_2_1_A/pom.xml

Propchange: maven/sandbox/branches/SI_MAVEN_2_1_A/
------------------------------------------------------------------------------
    svn:mergeinfo = /maven/components/branches/maven-2.0.x:679206

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=679476&r1=679475&r2=679476&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Thu Jul 24 11:04:50 2008
@@ -28,6 +28,7 @@
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.execution.ReactorManager;
+import org.apache.maven.lifecycle.binding.LifecycleBindingManager;
 import org.apache.maven.lifecycle.binding.MojoBindingFactory;
 import org.apache.maven.lifecycle.model.MojoBinding;
 import org.apache.maven.lifecycle.plan.BuildPlan;
@@ -91,6 +92,8 @@
     private BuildPlanner buildPlanner;
 
     private MojoBindingFactory mojoBindingFactory;
+    
+    private LifecycleBindingManager lifecycleBindingManager;
 
     // this is needed for setting the lookup realm before we start building a project.
     private PlexusContainer container;
@@ -959,4 +962,9 @@
     {
         container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
     }
+    
+    public List getLifecycles()
+    {
+        return lifecycleBindingManager.getLifecycles();
+    }
 }

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java?rev=679476&r1=679475&r2=679476&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java Thu Jul 24 11:04:50 2008
@@ -19,6 +19,8 @@
  * under the License.
  */
 
+import java.util.List;
+
 import org.apache.maven.BuildFailureException;
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.execution.MavenSession;
@@ -56,4 +58,9 @@
     void execute( MavenSession session, ReactorManager rm, EventDispatcher dispatcher )
         throws LifecycleExecutionException, BuildFailureException;
 
+    /**
+     * @since 2.0.10
+     */
+    List getLifecycles();
+
 }

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java?rev=679476&r1=679475&r2=679476&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java Thu Jul 24 11:04:50 2008
@@ -64,13 +64,18 @@
     private Logger logger;
 
     // configured. Moved out of DefaultLifecycleExecutor...
-    private List lifecycles;
+    private List<org.apache.maven.lifecycle.binding.Lifecycle> lifecycles;
 
     // configured. Moved out of DefaultLifecycleExecutor...
     private List defaultReports;
 
     // contextualized, used for setting lookup realm before retrieving lifecycle bindings for packaging.
     private PlexusContainer container;
+    
+    public List<org.apache.maven.lifecycle.binding.Lifecycle> getLifecycles()
+    {
+        return lifecycles;
+    }
 
     /**
      * {@inheritDoc}

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/binding/LifecycleBindingManager.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/binding/LifecycleBindingManager.java?rev=679476&r1=679475&r2=679476&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/binding/LifecycleBindingManager.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-core/src/main/java/org/apache/maven/lifecycle/binding/LifecycleBindingManager.java Thu Jul 24 11:04:50 2008
@@ -82,4 +82,6 @@
                                         final LifecycleBindings lifecycleBindings )
         throws LifecycleSpecificationException;
 
+    List<org.apache.maven.lifecycle.binding.Lifecycle> getLifecycles();
+
 }

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/main/resources/META-INF/plexus/components.xml?rev=679476&r1=679475&r2=679476&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/main/resources/META-INF/plexus/components.xml Thu Jul 24 11:04:50 2008
@@ -54,7 +54,7 @@
         <httpHeaders>
           <property>
             <name>User-Agent</name>
-            <value>Apache Maven/${project.version}</value>
+            <value>Apache-Maven/${project.version} maven-artifact/${artifactVersion}</value>
           </property>
         </httpHeaders>
       </configuration>
@@ -70,7 +70,7 @@
         <httpHeaders>
           <property>
             <name>User-Agent</name>
-            <value>Apache Maven/${project.version}</value>
+            <value>Apache-Maven/${project.version} maven-artifact/${artifactVersion}</value>
           </property>
         </httpHeaders>
       </configuration>

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractEmbedderTestCase.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractEmbedderTestCase.java?rev=679476&r1=679475&r2=679476&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractEmbedderTestCase.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractEmbedderTestCase.java Thu Jul 24 11:04:50 2008
@@ -16,13 +16,16 @@
  */
 
 import java.io.File;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Properties;
 import java.util.StringTokenizer;
 
 import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.util.Os;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.cli.CommandLineUtils;
 
@@ -31,10 +34,13 @@
 {
     protected MavenEmbedder maven;
 
-    private String defaultPath;
-
     private List defaultPathList;
 
+    /**
+     * The file extensions used to resolve command names to executables. Each extension must have a leading period.
+     */
+    private List commandExtensions;
+
     protected void setUp()
         throws Exception
     {
@@ -43,6 +49,7 @@
         ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
 
         Configuration configuration = new DefaultConfiguration().setClassLoader( classLoader ).setMavenEmbedderLogger( new MavenEmbedderConsoleLogger() );
+        configuration.setUserSettingsFile( MavenEmbedder.DEFAULT_USER_SETTINGS_FILE );
 
         maven = new MavenEmbedder( configuration );
         
@@ -50,7 +57,9 @@
         // but if they are not present on the machine we don't want tests to fail. Case in point would be using SVN via the SCM plugin. We'll
         // run it if we can, pass through gracefully otherwise.
 
-        defaultPath = CommandLineUtils.getSystemEnvVars().getProperty( "PATH" );
+        Properties env = CommandLineUtils.getSystemEnvVars( !Os.isFamily( Os.FAMILY_WINDOWS ) );
+
+        String defaultPath = env.getProperty( "PATH" );
 
         if ( defaultPath == null )
         {
@@ -58,9 +67,7 @@
         }
         else
         {
-            String separator = System.getProperty( "path.separator" );
-
-            StringTokenizer tokenizer = new StringTokenizer( defaultPath, separator );
+            StringTokenizer tokenizer = new StringTokenizer( defaultPath, File.pathSeparator );
 
             defaultPathList = new LinkedList();
 
@@ -71,6 +78,17 @@
                 defaultPathList.add( element );
             }
         }        
+
+        String pathExt = env.getProperty( "PATHEXT" );
+
+        if ( pathExt == null )
+        {
+            commandExtensions = Collections.EMPTY_LIST;
+        }
+        else
+        {
+            commandExtensions = Arrays.asList( pathExt.split( "\\" + File.pathSeparatorChar + "+" ) );
+        }        
     }
 
     protected void tearDown()
@@ -117,12 +135,22 @@
             return null;
         }
 
-        // TODO: Need to resolve it with defaults extension of system
-        // ie. if executable is 'mvn', we must search 'mvn.bat'
         for ( Iterator it = path.iterator(); it.hasNext(); )
         {
             String s = (String) it.next();
 
+            for ( Iterator ite = commandExtensions.iterator(); ite.hasNext(); )
+            {
+                String ext = (String) ite.next();
+
+                f = new File( s, executable + ext );
+
+                if ( f.isFile() )
+                {
+                    return f;
+                }
+            }
+
             f = new File( s, executable );
 
             if ( f.isFile() )

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java?rev=679476&r1=679475&r2=679476&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java Thu Jul 24 11:04:50 2008
@@ -74,6 +74,7 @@
         Configuration configuration = new DefaultConfiguration()
             .setClassLoader( classLoader )
             .setMavenEmbedderLogger( new MavenEmbedderConsoleLogger() );
+        configuration.setUserSettingsFile( MavenEmbedder.DEFAULT_USER_SETTINGS_FILE );
 
         maven = new MavenEmbedder( configuration );
     }

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/embedder/validation/MavenEmbedderCrappySettingsConfigurationTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/embedder/validation/MavenEmbedderCrappySettingsConfigurationTest.java?rev=679476&r1=679475&r2=679476&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/embedder/validation/MavenEmbedderCrappySettingsConfigurationTest.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/embedder/validation/MavenEmbedderCrappySettingsConfigurationTest.java Thu Jul 24 11:04:50 2008
@@ -31,6 +31,7 @@
 
 import java.io.File;
 import java.util.Arrays;
+import java.util.Iterator;
 
 public class MavenEmbedderCrappySettingsConfigurationTest
     extends PlexusTestCase
@@ -40,7 +41,7 @@
     {
         // START SNIPPET: simple-embedder-example
 
-        File projectDirectory = new File( getBasedir(), "src/examples/simple-project" );
+        File projectDirectory = getTestFile( "src/examples/simple-project" );
 
         File user = new File( projectDirectory, "invalid-settings.xml" );
 
@@ -58,9 +59,17 @@
 
         MavenExecutionRequest request = new DefaultMavenExecutionRequest()
             .setBaseDirectory( projectDirectory )
-            .setGoals( Arrays.asList( new String[]{"clean", "install"} ) );
+            .setGoals( Arrays.asList( new String[]{"validate"} ) );
 
         MavenExecutionResult result = embedder.execute( request );
+        
+        for ( Iterator i = result.getExceptions().iterator(); i.hasNext(); )
+        {
+            Exception e = (Exception) i.next();
+            e.printStackTrace();
+        }
+        
+        assertFalse( result.hasExceptions() );
 
         assertNotNull( result.getProject() );
 

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/error/ErrorReporterPointcutTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/error/ErrorReporterPointcutTest.java?rev=679476&r1=679475&r2=679476&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/error/ErrorReporterPointcutTest.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-embedder/src/test/java/org/apache/maven/error/ErrorReporterPointcutTest.java Thu Jul 24 11:04:50 2008
@@ -78,7 +78,8 @@
 
         Configuration configuration = new DefaultConfiguration().setClassLoader( classLoader )
                                                                 .setMavenEmbedderLogger( new MavenEmbedderConsoleLogger() );
-
+        configuration.setUserSettingsFile( MavenEmbedder.DEFAULT_USER_SETTINGS_FILE );       
+        
         maven = new MavenEmbedder( configuration );
     }
 

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=679476&r1=679475&r2=679476&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Thu Jul 24 11:04:50 2008
@@ -1071,6 +1071,8 @@
                 dPlugin.setGroupId( iPlugin.getGroupId() );
                 dPlugin.setArtifactId( iPlugin.getArtifactId() );
                 dPlugin.setVersion( iPlugin.getVersion() );
+                
+                dPlugin.setDependencies( iPlugin.getDependencies() );
             }
         }
 
@@ -1092,6 +1094,8 @@
                     dPlugin.setGroupId( iPlugin.getGroupId() );
                     dPlugin.setArtifactId( iPlugin.getArtifactId() );
                     dPlugin.setVersion( iPlugin.getVersion() );
+                    
+                    dPlugin.setDependencies( iPlugin.getDependencies() );
                 }
             }
         }

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java?rev=679476&r1=679475&r2=679476&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java Thu Jul 24 11:04:50 2008
@@ -562,6 +562,8 @@
     public static Model cloneModel( Model model )
     {
         // TODO: would be nice for the modello:java code to generate this as a copy constructor
+        // FIXME: Fix deep cloning issues with existing plugin instances (setting 
+        //       a version when resolved will pollute the original model instance)
         Model newModel = new Model();
         ModelInheritanceAssembler assembler = new DefaultModelInheritanceAssembler();
         newModel.setModelVersion( model.getModelVersion() );

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=679476&r1=679475&r2=679476&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Thu Jul 24 11:04:50 2008
@@ -101,22 +101,34 @@
             return artifact;
         }
 
-        ProjectRelocation res = retrieveRelocatedProject( artifact, localRepository, remoteRepositories );
-        MavenProject project = res.project;
-
+        ProjectRelocation rel = retrieveRelocatedProject( artifact, localRepository, remoteRepositories );
+        
+        if ( rel == null )
+        {
+            return artifact;
+        }
+        
+        MavenProject project = rel.project;
         if ( project == null || getRelocationKey( artifact ).equals( getRelocationKey( project.getArtifact() ) ) )
         {
             return artifact;
         }
 
+        
+        // NOTE: Using artifact information here, since some POMs are deployed 
+        // to central with one version in the filename, but another in the <version> string!
+        // Case in point: org.apache.ws.commons:XmlSchema:1.1:pom.
+        //
+        // Since relocation triggers a reconfiguration of the artifact's information
+        // in retrieveRelocatedProject(..), this is safe to do.
         Artifact result = null;
         if ( artifact.getClassifier() != null )
         {
-            result = artifactFactory.createArtifactWithClassifier( project.getGroupId(), project.getArtifactId(), project.getVersion(), artifact.getType(), artifact.getClassifier() );
+            result = artifactFactory.createArtifactWithClassifier( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), artifact.getClassifier() );
         }
         else
         {
-            result = artifactFactory.createArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion(), artifact.getScope(), artifact.getType() );
+            result = artifactFactory.createArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getScope(), artifact.getType() );
         }
 
         result.setScope( artifact.getScope() );

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java?rev=679476&r1=679475&r2=679476&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java Thu Jul 24 11:04:50 2008
@@ -88,6 +88,12 @@
         throws IOException
     {
     }
+    
+    // for testing.
+    protected RegexBasedModelInterpolator( PathTranslator pathTranslator )
+    {
+        this.pathTranslator = pathTranslator;
+    }
 
     public Model interpolate( Model model, Map<String, ?> context )
         throws ModelInterpolationException
@@ -199,15 +205,8 @@
             timestampFormat = modelProperties.getProperty( BUILD_TIMESTAMP_FORMAT_PROPERTY, timestampFormat );
         }
 
-        ValueSource baseModelValueSource1 = new PrefixedObjectValueSource( PROJECT_PREFIXES, model, false );
-        ValueSource modelValueSource1 = new PathTranslatingValueSource( baseModelValueSource1,
-                                                                       TRANSLATED_PATH_EXPRESSIONS,
-                                                                       projectDir, pathTranslator );
-
-        ValueSource baseModelValueSource2 = new ObjectBasedValueSource( model );
-        ValueSource modelValueSource2 = new PathTranslatingValueSource( baseModelValueSource2,
-                                                                       TRANSLATED_PATH_EXPRESSIONS,
-                                                                       projectDir, pathTranslator );
+        ValueSource modelValueSource1 = new PrefixedObjectValueSource( PROJECT_PREFIXES, model, false );
+        ValueSource modelValueSource2 = new ObjectBasedValueSource( model );
 
         ValueSource basedirValueSource = new PrefixedValueSourceWrapper( new ValueSource(){
             public Object getValue( String expression )
@@ -232,6 +231,11 @@
         interpolator.addValueSource( new PrefixedValueSourceWrapper( new MapBasedValueSource( modelProperties ), PROJECT_PREFIXES, true ) );
         interpolator.addValueSource( modelValueSource2 );
         interpolator.addValueSource( new MapBasedValueSource( config.getUserProperties() ) );
+        
+        PathTranslatingPostProcessor pathTranslatingPostProcessor =
+            new PathTranslatingPostProcessor( TRANSLATED_PATH_EXPRESSIONS, projectDir, pathTranslator );
+        
+        interpolator.addPostProcessor( pathTranslatingPostProcessor );
 
         RecursionInterceptor recursionInterceptor = new PrefixAwareRecursionInterceptor( PROJECT_PREFIXES );
 

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml?rev=679476&r1=679475&r2=679476&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml Thu Jul 24 11:04:50 2008
@@ -115,7 +115,7 @@
          </plugin>
          <plugin>
            <artifactId>maven-plugin-plugin</artifactId>
-           <version>2.3</version>
+           <version>2.4.2</version>
          </plugin>
          <plugin>
            <artifactId>maven-rar-plugin</artifactId>
@@ -131,7 +131,7 @@
          </plugin>
          <plugin>
            <artifactId>maven-site-plugin</artifactId>
-           <version>2.0-beta-6</version>
+           <version>2.0-beta-7</version>
          </plugin>
          <plugin>
            <artifactId>maven-source-plugin</artifactId>
@@ -139,7 +139,7 @@
          </plugin>         
          <plugin>
             <artifactId>maven-surefire-plugin</artifactId>
-            <version>2.4.2</version>
+            <version>2.4.3</version>
          </plugin>
          <plugin>
            <artifactId>maven-war-plugin</artifactId>

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java?rev=679476&r1=679475&r2=679476&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java Thu Jul 24 11:04:50 2008
@@ -19,19 +19,25 @@
  * under the License.
  */
 
+import org.apache.maven.model.Build;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.DeploymentRepository;
 import org.apache.maven.model.DistributionManagement;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Organization;
 import org.apache.maven.model.Repository;
+import org.apache.maven.model.Resource;
 import org.apache.maven.model.Scm;
 import org.apache.maven.project.DefaultProjectBuilderConfiguration;
 import org.apache.maven.project.ProjectBuilderConfiguration;
+import org.apache.maven.project.path.DefaultPathTranslator;
+import org.apache.maven.project.path.PathTranslator;
 
 import java.io.File;
 import java.io.IOException;
 import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
@@ -297,4 +303,83 @@
         assertEquals( "Expected '" + expectedVersion + "' for version expression '" + depVersionExpr + "', but was '" + result + "'", expectedVersion, result );
     }
 
+    public void testShouldInterpolateSourceDirectoryReferencedFromResourceDirectoryCorrectly()
+        throws Exception
+    {
+        Model model = new Model();
+
+        Build build = new Build();
+        build.setSourceDirectory( "correct" );
+
+        Resource res = new Resource();
+        res.setDirectory( "${project.build.sourceDirectory}" );
+
+        build.addResource( res );
+
+        Resource res2 = new Resource();
+        res2.setDirectory( "${pom.build.sourceDirectory}" );
+
+        build.addResource( res2 );
+
+        Resource res3 = new Resource();
+        res3.setDirectory( "${build.sourceDirectory}" );
+
+        build.addResource( res3 );
+
+        model.setBuild( build );
+
+        Model out = new RegexBasedModelInterpolator().interpolate( model, context );
+
+        List outResources = out.getBuild().getResources();
+        Iterator resIt = outResources.iterator();
+
+        assertEquals( build.getSourceDirectory(), ( (Resource) resIt.next() ).getDirectory() );
+        assertEquals( build.getSourceDirectory(), ( (Resource) resIt.next() ).getDirectory() );
+        assertEquals( build.getSourceDirectory(), ( (Resource) resIt.next() ).getDirectory() );
+    }
+
+    public void testShouldInterpolateUnprefixedBasedirExpression()
+        throws ModelInterpolationException, IOException
+    {
+        File basedir = new File( "/test/path" );
+        Model model = new Model();
+        Dependency dep = new Dependency();
+        dep.setSystemPath( "${basedir}/artifact.jar" );
+
+        model.addDependency( dep );
+
+        Model result = new RegexBasedModelInterpolator().interpolate( model, basedir, new DefaultProjectBuilderConfiguration(), true );
+
+        List rDeps = result.getDependencies();
+        assertNotNull( rDeps );
+        assertEquals( 1, rDeps.size() );
+        assertEquals( new File( basedir, "artifact.jar" ).getAbsolutePath(), new File( ( (Dependency) rDeps.get( 0 ) )
+            .getSystemPath() ).getAbsolutePath() );
+    }
+    
+    public void testTwoLevelRecursiveBasedirAlignedExpression()
+        throws Exception
+    {
+        Model model = new Model();
+        Build build = new Build();
+        
+        model.setBuild( build );
+        
+        build.setDirectory( "${project.basedir}/target" );
+        build.setOutputDirectory( "${project.build.directory}/classes" );
+        
+        PathTranslator translator = new DefaultPathTranslator();
+        RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator( translator );
+        
+        File basedir = new File( System.getProperty( "java.io.tmpdir" ), "base" );
+        
+        String value = interpolator.interpolate( "${project.build.outputDirectory}/foo", model, basedir, new DefaultProjectBuilderConfiguration(), true );
+        value = value.replace( '/', File.separatorChar ).replace( '\\', File.separatorChar );
+        
+        String check = new File( basedir, "target/classes/foo" ).getAbsolutePath();
+        check = check.replace( '/', File.separatorChar ).replace( '\\', File.separatorChar );
+        
+        assertEquals( check, value );
+    }
+
 }

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/pom.xml?rev=679476&r1=679475&r2=679476&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/pom.xml (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/pom.xml Thu Jul 24 11:04:50 2008
@@ -203,16 +203,32 @@
           <version>1.0.0</version>
         </plugin>
         <plugin>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>clirr-maven-plugin</artifactId>
+          <version>2.2.1</version>
+          <configuration>
+            <!-- needed for release: default value "(,${project.version})" for 2.0.10 is 2.0.10-SNAPSHOT -->
+            <comparisonVersion>2.0.9</comparisonVersion>
+            <excludes>
+              <!-- TODO: These represent method ADDITIONS from 2.0.9, and should be removed after 
+                   2.0.10 is released. -->
+              <exclude>org/apache/maven/lifecycle/LifecycleExecutor*</exclude>
+              <exclude>org/apache/maven/artifact/metadata/ArtifactMetadataSource*</exclude>
+              <exclude>org/apache/maven/project/MavenProjectBuilder*</exclude>
+              <exclude>org/apache/maven/project/ProjectBuilderConfiguration*</exclude>
+              <exclude>org/apache/maven/project/interpolation/ModelInterpolator*</exclude>
+              <exclude>org/apache/maven/project/inheritance/ModelInheritanceAssembler*</exclude>
+              <exclude>org/apache/maven/execution/MavenExecutionRequest*</exclude>
+              <exclude>org/apache/maven/plugin/DefaultPluginManager*</exclude>
+            </excludes>
+          </configuration>
+        </plugin>
+        <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
           <version>2.3</version>
         </plugin>
         <plugin>
-          <artifactId>shade-maven-plugin</artifactId>
-          <groupId>org.codehaus.mojo</groupId>
-          <version>1.0-alpha-12</version>
-        </plugin>
-        <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-assembly-plugin</artifactId>
           <version>2.2-beta-2</version>
@@ -253,8 +269,8 @@
     <junitVersion>3.8.1</junitVersion>
     <plexusVersion>1.0-alpha-48</plexusVersion>
     <plexusInteractivityVersion>1.0-alpha-6</plexusInteractivityVersion>
-    <plexusInterpolationVersion>1.0</plexusInterpolationVersion>
-    <plexusUtilsVersion>1.5.4</plexusUtilsVersion>
+    <plexusInterpolationVersion>1.1</plexusInterpolationVersion>
+    <plexusUtilsVersion>1.5.5</plexusUtilsVersion>
     <wagonVersion>1.0-beta-3</wagonVersion>
     <mavenSharedModelVersion>1.0-SNAPSHOT</mavenSharedModelVersion>
     <woodstoxVersion>3.2.6</woodstoxVersion>