You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2008/09/12 01:02:40 UTC

svn commit: r694529 - in /maven/plugins/trunk/maven-assembly-plugin: ./ src/main/java/org/apache/maven/plugin/assembly/ src/main/java/org/apache/maven/plugin/assembly/archive/ src/main/java/org/apache/maven/plugin/assembly/archive/phase/ src/main/java/...

Author: jdcasey
Date: Thu Sep 11 16:02:34 2008
New Revision: 694529

URL: http://svn.apache.org/viewvc?rev=694529&view=rev
Log:
[MASSEMBLY-331] Fixing order of operations for expression interpolation in outputDirectory and outputFileNameMapping.

Submitted by: Petar Tahchiev

I added minor modifications.

Removed:
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PrefixedObjectBasedValueSource.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PrefixedPropertiesInterpolationValueSource.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PropertiesInterpolationValueSource.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/AllTests.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/PropertiesInterpolationValueSourceTest.java
Modified:
    maven/plugins/trunk/maven-assembly-plugin/pom.xml
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblerConfigurationSource.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhase.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PropertyUtils.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTaskTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddFileSetsTask.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtilsTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/PropertyUtilsTest.java

Modified: maven/plugins/trunk/maven-assembly-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/pom.xml?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/pom.xml Thu Sep 11 16:02:34 2008
@@ -159,8 +159,8 @@
     </dependency>
     <dependency>
       <groupId>easymock</groupId>
-      <artifactId>easymock</artifactId>
-      <version>1.2_Java1.3</version>
+      <artifactId>easymockclassextension</artifactId>
+      <version>1.2</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -187,6 +187,11 @@
       <version>3.8.1</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+    	<groupId>org.codehaus.plexus</groupId>
+    	<artifactId>plexus-interpolation</artifactId>
+    	<version>1.5</version>
+    </dependency>
   </dependencies>
 
   <repositories>
@@ -368,6 +373,8 @@
                   <pomExcludes>
                     <pomExclude>repositories/repo-with-snapshot-parents/pom.xml</pomExclude>
                     
+                    <!-- MASSEMBLY has NOT been fixed yet. -->
+                    <pomExclude>bugs/massembly-285/**</pomExclude>
                     <!-- This will be handled by the parent in the bugs/massembly-285 dir. -->
                     <pomExclude>bugs/massembly-285/massembly-285-*/pom.xml</pomExclude>
                     

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblerConfigurationSource.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblerConfigurationSource.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblerConfigurationSource.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblerConfigurationSource.java Thu Sep 11 16:02:34 2008
@@ -21,6 +21,7 @@
 
 import org.apache.maven.archiver.MavenArchiveConfiguration;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -81,4 +82,6 @@
     boolean isIgnoreDirFormatExtensions();
 
     boolean isIgnoreMissingDescriptor();
+    
+    MavenSession getMavenSession();
 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java Thu Sep 11 16:02:34 2008
@@ -112,7 +112,7 @@
             if ( specifiedBasedir != null )
             {
                 basedir = AssemblyFormatUtils.getOutputDirectory( specifiedBasedir, configSource.getProject(),
-                                                                  null, finalName );
+                                                                  null, finalName, configSource );
             }
 
             List containerHandlers = selectContainerDescriptorHandlers( assembly.getContainerDescriptorHandlers() );

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java Thu Sep 11 16:02:34 2008
@@ -80,8 +80,9 @@
                 destName = sourceName;
             }
 
-            String outputDirectory = AssemblyFormatUtils.getOutputDirectory( fileItem.getOutputDirectory(),
-                configSource.getProject(), null, configSource.getFinalName() );
+            String outputDirectory =
+                AssemblyFormatUtils.getOutputDirectory( fileItem.getOutputDirectory(), configSource.getProject(), null,
+                                                        configSource.getFinalName(), configSource );
 
             String target;
 

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java Thu Sep 11 16:02:34 2008
@@ -431,7 +431,7 @@
         {
             destPathPrefix =
                 AssemblyFormatUtils.evaluateFileNameMapping( sources.getOutputDirectoryMapping(),
-                                                             moduleProject.getArtifact(), configSource.getProject(), moduleProject, "module." );
+                                                             moduleProject.getArtifact(), configSource.getProject(), moduleProject, "module.", configSource );
 
             if ( !destPathPrefix.endsWith( "/" ) )
             {
@@ -450,7 +450,9 @@
             destPath = destPathPrefix + destPath;
         }
 
-        destPath = AssemblyFormatUtils.getOutputDirectory( destPath, configSource.getProject(), moduleProject, configSource.getFinalName(), "module." );
+        destPath =
+            AssemblyFormatUtils.getOutputDirectory( destPath, configSource.getProject(), moduleProject,
+                                                    configSource.getFinalName(), "module.", configSource );
 
         fs.setOutputDirectory( destPath );
 

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhase.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhase.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhase.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhase.java Thu Sep 11 16:02:34 2008
@@ -95,7 +95,8 @@
 
             String outputDirectory =
                 AssemblyFormatUtils.getOutputDirectory( repository.getOutputDirectory(), configSource.getProject(),
-                                                        null, configSource.getFinalName() );
+                                                        null, configSource.getFinalName(),
+                                                        configSource );
 
             File repositoryDirectory = new File( tempRoot, outputDirectory );
 

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java Thu Sep 11 16:02:34 2008
@@ -101,7 +101,7 @@
 
         String destDirectory = outputDirectory;
 
-        destDirectory = AssemblyFormatUtils.getOutputDirectory( destDirectory, configSource.getProject(), project, configSource.getFinalName(), artifactExpressionPrefix );
+        destDirectory = AssemblyFormatUtils.getOutputDirectory( destDirectory, configSource.getProject(), project, configSource.getFinalName(), artifactExpressionPrefix, configSource );
 
         if ( unpack )
         {
@@ -167,7 +167,10 @@
         }
         else
         {
-            String fileNameMapping = AssemblyFormatUtils.evaluateFileNameMapping( outputFileNameMapping, artifact, configSource.getProject(), project, artifactExpressionPrefix );
+            String fileNameMapping = AssemblyFormatUtils.evaluateFileNameMapping( outputFileNameMapping, artifact, 
+            		                                                              configSource.getProject(), project, 
+            		                                                              artifactExpressionPrefix,
+            		                                                              configSource );
 
             String outputLocation = destDirectory + fileNameMapping;
 

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java Thu Sep 11 16:02:34 2008
@@ -286,11 +286,13 @@
 
         outputDirectory = AssemblyFormatUtils.getOutputDirectory( outputDirectory, configSource.getProject(),
                                                                   depProject, depProject.getBuild().getFinalName(),
-                                                                  artifactExpressionPrefix );
+                                                                  artifactExpressionPrefix,
+                                                                  configSource );
 
         String destName = AssemblyFormatUtils.evaluateFileNameMapping( dependencySet.getOutputFileNameMapping(),
                                                                        depArtifact, configSource.getProject(),
-                                                                       depProject, artifactExpressionPrefix );
+                                                                       depProject, artifactExpressionPrefix,
+                                                                       configSource );
 
         String target;
 

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java Thu Sep 11 16:02:34 2008
@@ -111,7 +111,9 @@
             destDirectory = fileSet.getDirectory();
         }
 
-        destDirectory = AssemblyFormatUtils.getOutputDirectory( destDirectory, configSource.getProject(), project, configSource.getFinalName(), artifactExpressionPrefix );
+        destDirectory =
+            AssemblyFormatUtils.getOutputDirectory( destDirectory, configSource.getProject(), project,
+                                                    configSource.getFinalName(), artifactExpressionPrefix, configSource );
 
         if ( logger.isDebugEnabled() )
         {
@@ -127,7 +129,6 @@
 
         if ( fileSetDir.exists() )
         {
-            File origFileSetDir = fileSetDir;
             try
             {
                 fileSetDir = fileSetFormatter.formatFileSetForAssembly( fileSetDir, fileSet );

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java Thu Sep 11 16:02:34 2008
@@ -236,7 +236,7 @@
     private Assembly addAssemblyForDescriptorReference( String ref, AssemblerConfigurationSource configSource, List assemblies )
         throws AssemblyReadException, InvalidAssemblerConfigurationException
     {
-        InputStream resourceAsStream = getClass().getResourceAsStream( "/assemblies/" + ref + ".xml" );
+        InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream( "assemblies/" + ref + ".xml" );
 
         if ( resourceAsStream == null )
         {

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java Thu Sep 11 16:02:34 2008
@@ -21,6 +21,7 @@
 
 import org.apache.maven.archiver.MavenArchiveConfiguration;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
@@ -204,6 +205,15 @@
      * @component
      */
     private MavenProjectHelper projectHelper;
+    
+    /**
+     * The Maven Session Object
+     *
+     * @parameter expression="${session}"
+     * @required
+     * @readonly
+     */
+    private MavenSession mavenSession;
 
     /**
      * Temporary directory that contain the files to be assembled.
@@ -638,4 +648,9 @@
     public void setIgnoreMissingDescriptor(boolean ignoreMissingDescriptor) {
         this.ignoreMissingDescriptor = ignoreMissingDescriptor;
     }
+    
+    public MavenSession getMavenSession() {
+    	return this.mavenSession;
+    }
+
 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java Thu Sep 11 16:02:34 2008
@@ -19,23 +19,50 @@
  * under the License.
  */
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Properties;
+
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
 import org.apache.maven.plugin.assembly.model.Assembly;
 import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.interpolation.InterpolationException;
+import org.codehaus.plexus.interpolation.PrefixedObjectValueSource;
+import org.codehaus.plexus.interpolation.PrefixedPropertiesValueSource;
+import org.codehaus.plexus.interpolation.PropertiesBasedValueSource;
+import org.codehaus.plexus.interpolation.StringSearchInterpolator;
 import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.interpolation.ObjectBasedValueSource;
-import org.codehaus.plexus.util.interpolation.RegexBasedInterpolator;
-
-import java.io.IOException;
-import java.util.Properties;
 
 /**
  * @version $Id$
  */
 public final class AssemblyFormatUtils
 {
+    
+    private static final List PROJECT_PREFIXES;
+    
+    private static final List PROJECT_PROPERTIES_PREFIXES;
+    
+    static
+    {
+        List projectPrefixes = new ArrayList();
+        projectPrefixes.add( "pom." );
+        projectPrefixes.add( "project." );
+        
+        PROJECT_PREFIXES = Collections.unmodifiableList( projectPrefixes );
+        
+        List projectPropertiesPrefixes = new ArrayList();
+        
+        projectPropertiesPrefixes.add( "pom.properties." );
+        projectPropertiesPrefixes.add( "project.properties." );
+        
+        PROJECT_PROPERTIES_PREFIXES = Collections.unmodifiableList( projectPropertiesPrefixes );
+    }
 
     private AssemblyFormatUtils()
     {
@@ -70,31 +97,31 @@
     }
 
     public static String getOutputDirectory( String output, MavenProject mainProject, MavenProject artifactProject,
-                                             String finalName )
+                                             String finalName, AssemblerConfigurationSource configSource )
         throws AssemblyFormattingException
     {
-        return getOutputDirectory( output, mainProject, artifactProject, finalName, "artifact." );
+        return getOutputDirectory( output, mainProject, artifactProject, finalName, "artifact.", configSource );
     }
 
     /*
      * ORDER OF INTERPOLATION PRECEDENCE:
      *
-     * 1. Support for special expressions, like ${dashClassifier?}
-     * 2. prefixed with artifactProjectRefName, from parameters list above.
+     * 1. Support for special expressions, like ${finalName} (use the assembly plugin configuration not the build config)
+     * 2. prefixed with artifactProjectRefName ("module." or "artifact.", normally).
      *    A. MavenProject instance for artifact
      * 3. prefixed with "artifact.", if artifactProjectRefName != "artifact."
      *    A. MavenProject instance for artifact
-     * 4. prefixed with "pom."
-     *    A. MavenProject instance from current build
-     * 5. no prefix, using main project instance
+     * 4. user-defined properties from the command line
+     * 5. prefixed with "pom." or "project.", or no prefix at all
      *    A. MavenProject instance from current build
-     * 6. properties of the main project
-     * 7. System properties
+     * 6. properties from main project
+     * 7. system properties, from the MavenSession instance (to support IDEs)
      * 8. environment variables.
-     *
+     * 
      */
     public static String getOutputDirectory( String output, MavenProject mainProject, MavenProject artifactProject,
-                                             String finalName, String artifactProjectRefName )
+                                             String finalName, String artifactProjectRefName,
+                                             AssemblerConfigurationSource configSource )
         throws AssemblyFormattingException
     {
         if ( artifactProjectRefName == null )
@@ -102,11 +129,6 @@
             artifactProjectRefName = "artifact.";
         }
 
-        if ( !artifactProjectRefName.endsWith( "." ) )
-        {
-            artifactProjectRefName += ".";
-        }
-
         String value = output;
         if ( value == null )
         {
@@ -118,7 +140,7 @@
             artifactProjectRefName += ".";
         }
 
-        RegexBasedInterpolator interpolator = new RegexBasedInterpolator();
+        StringSearchInterpolator interpolator = new StringSearchInterpolator();
 
         Properties specialExpressionOverrides = new Properties();
 
@@ -128,48 +150,86 @@
             specialExpressionOverrides.setProperty( "build.finalName", finalName );
         }
 
-        interpolator.addValueSource( new PropertiesInterpolationValueSource( specialExpressionOverrides ) );
-
-        if ( mainProject != null )
-        {
-            interpolator.addValueSource( new PrefixedObjectBasedValueSource( "pom.", mainProject ) );
-            interpolator.addValueSource( new PrefixedObjectBasedValueSource( "project.", mainProject ) );
-        }
+        // 1
+        interpolator.addValueSource( new PropertiesBasedValueSource( specialExpressionOverrides ) );
 
         if ( artifactProject != null )
         {
-            interpolator.addValueSource( new PrefixedObjectBasedValueSource( artifactProjectRefName, artifactProject ) );
+            // 2
+            interpolator.addValueSource( new PrefixedObjectValueSource( artifactProjectRefName, artifactProject ) );
 
             if ( !"artifact.".equals( artifactProjectRefName ) )
             {
-                interpolator.addValueSource( new PrefixedObjectBasedValueSource( "artifact.", artifactProject ) );
+                // 3
+                interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifactProject ) );
             }
         }
 
+        MavenSession session = configSource.getMavenSession();
+
+        if ( session != null )
+        {
+            Properties userProperties = null;
+            try
+            {
+                userProperties = session.getExecutionProperties();
+            }
+            catch ( NoSuchMethodError nsmer )
+            {
+                // OK, so user is using Maven <= 2.0.8. No big deal.
+            }
+            
+            if ( userProperties != null )
+            {
+                // 4
+                interpolator.addValueSource( new PropertiesBasedValueSource( userProperties ) );
+            }
+        }
+        
         if ( mainProject != null )
         {
-            interpolator.addValueSource( new ObjectBasedValueSource( mainProject ) );
-
+            // 5
+            interpolator.addValueSource( new PrefixedObjectValueSource( PROJECT_PREFIXES, mainProject, true ) );
+            
             // 6
-            interpolator.addValueSource( new PropertiesInterpolationValueSource( mainProject.getProperties() ) );
-            interpolator.addValueSource( new PrefixedPropertiesInterpolationValueSource( "pom.properties.", mainProject.getProperties() ) );
-            interpolator.addValueSource( new PrefixedPropertiesInterpolationValueSource( "project.properties.", mainProject.getProperties() ) );
+            interpolator.addValueSource( new PrefixedPropertiesValueSource( PROJECT_PROPERTIES_PREFIXES, mainProject.getProperties(), true ) );
         }
 
+        Properties commandLineProperties = System.getProperties();
+        try
+        {
+            if ( session != null )
+            {
+                commandLineProperties = session.getExecutionProperties();
+            }
+
+        }
+        catch ( NoSuchMethodError nsmer )
+        {
+            // OK, so user is using Maven <= 2.0.8. No big deal.
+        }
+        
         // 7
-        interpolator.addValueSource( new PropertiesInterpolationValueSource( System.getProperties() ) );
+        interpolator.addValueSource( new PropertiesBasedValueSource( commandLineProperties ) );
 
         try
         {
             // 8
-            interpolator.addValueSource( new PropertiesInterpolationValueSource( CommandLineUtils.getSystemEnvVars( false ) ) );
+            interpolator.addValueSource( new PrefixedPropertiesValueSource( Collections.singletonList( "env." ), CommandLineUtils.getSystemEnvVars( false ), true ) );
         }
         catch ( IOException e )
         {
             throw new AssemblyFormattingException( "Failed to retrieve OS environment variables. Reason: " + e.getMessage(), e );
         }
 
-        value = interpolator.interpolate( value, "__project" );
+        try
+        {
+            value = interpolator.interpolate( value );
+        }
+        catch ( InterpolationException e )
+        {
+            throw new AssemblyFormattingException( "Failed to interpolate output directory. Reason: " + e.getMessage(), e );
+        }
 
         if ( ( value.length() > 0 ) && !value.endsWith( "/" ) && !value.endsWith( "\\" ) )
         {
@@ -187,10 +247,12 @@
         return value;
     }
 
-    public static String evaluateFileNameMapping( String expression, Artifact artifact, MavenProject mainProject, MavenProject artifactProject )
+    public static String evaluateFileNameMapping( String expression, Artifact artifact, MavenProject mainProject,
+                                                  MavenProject artifactProject,
+                                                  AssemblerConfigurationSource configSource )
         throws AssemblyFormattingException
     {
-        return evaluateFileNameMapping( expression, artifact, mainProject, artifactProject, "artifact." );
+        return evaluateFileNameMapping( expression, artifact, mainProject, artifactProject, "artifact.", configSource );
     }
 
     /*
@@ -204,17 +266,20 @@
      *    A. Artifact instance
      *    B. ArtifactHandler instance for artifact
      *    C. MavenProject instance for artifact
-     * 3. prefixed with "pom."
+     * 3. prefixed with "pom." or "project."
      *    A. MavenProject instance from current build
      * 4. no prefix, using main project instance
      *    A. MavenProject instance from current build
      * 5. Support for special expressions, like ${dashClassifier?}
-     * 6. properties from main project
-     * 7. System properties
-     * 8. environment variables.
+     * 6. user-defined properties from the command line
+     * 7. properties from main project
+     * 8. system properties, from the MavenSession instance (to support IDEs)
+     * 9. environment variables.
      *
      */
-    public static String evaluateFileNameMapping( String expression, Artifact artifact, MavenProject mainProject, MavenProject artifactProject, String artifactProjectRefName )
+    public static String evaluateFileNameMapping( String expression, Artifact artifact, MavenProject mainProject,
+                                                  MavenProject artifactProject, String artifactProjectRefName,
+                                                  AssemblerConfigurationSource configSource )
         throws AssemblyFormattingException
     {
         String value = expression;
@@ -233,14 +298,14 @@
         // [jdcasey; 16-Aug-1007] This is fixed in SVN, just waiting for it to pass out of legacy.
         artifact.isSnapshot();
 
-        RegexBasedInterpolator interpolator = new RegexBasedInterpolator();
+        StringSearchInterpolator interpolator = new StringSearchInterpolator();
 
         // 1A
-        interpolator.addValueSource( new PrefixedObjectBasedValueSource( artifactProjectRefName, artifact ) );
+        interpolator.addValueSource( new PrefixedObjectValueSource( artifactProjectRefName, artifact ) );
 
         // 1B
-        interpolator.addValueSource( new PrefixedObjectBasedValueSource( artifactProjectRefName, artifact.getArtifactHandler() ) );
-        interpolator.addValueSource( new PrefixedObjectBasedValueSource( artifactProjectRefName
+        interpolator.addValueSource( new PrefixedObjectValueSource( artifactProjectRefName, artifact.getArtifactHandler() ) );
+        interpolator.addValueSource( new PrefixedObjectValueSource( artifactProjectRefName
                                                                          + ( artifactProjectRefName.endsWith( "." )
                                                                                          ? "" : "." ) + "handler.",
                                                                          artifact.getArtifactHandler() ) );
@@ -248,33 +313,30 @@
         // 1C
         if ( artifactProject != null )
         {
-            interpolator.addValueSource( new PrefixedObjectBasedValueSource( artifactProjectRefName, artifactProject ) );
+            interpolator.addValueSource( new PrefixedObjectValueSource( artifactProjectRefName, artifactProject ) );
         }
 
         if ( !"artifact.".equals( artifactProjectRefName ) )
         {
             // 2A
-            interpolator.addValueSource( new PrefixedObjectBasedValueSource( "artifact.", artifact ) );
+            interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifact ) );
 
             // 2B
-            interpolator.addValueSource( new PrefixedObjectBasedValueSource( "artifact.", artifact.getArtifactHandler() ) );
-            interpolator.addValueSource( new PrefixedObjectBasedValueSource( "artifact.handler.", artifact.getArtifactHandler() ) );
+            interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifact.getArtifactHandler() ) );
+            interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.handler.", artifact.getArtifactHandler() ) );
 
             // 2C
             if ( artifactProject != null )
             {
-                interpolator.addValueSource( new PrefixedObjectBasedValueSource( "artifact.", artifactProject ) );
+                interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifactProject ) );
             }
         }
 
         if ( mainProject != null )
         {
             // 3
-            interpolator.addValueSource( new PrefixedObjectBasedValueSource( "pom.", mainProject ) );
-            interpolator.addValueSource( new PrefixedObjectBasedValueSource( "project.", mainProject ) );
-
             // 4
-            interpolator.addValueSource( new ObjectBasedValueSource( mainProject ) );
+            interpolator.addValueSource( new PrefixedObjectValueSource( PROJECT_PREFIXES, mainProject, true ) );
         }
 
         Properties specialRules = new Properties();
@@ -292,31 +354,70 @@
         }
 
         // 5
-        interpolator.addValueSource( new PropertiesInterpolationValueSource( specialRules ) );
+        interpolator.addValueSource( new PropertiesBasedValueSource( specialRules ) );
+
+        MavenSession session = configSource.getMavenSession();
 
+        if ( session != null )
+        {
+            Properties userProperties = null;
+            try
+            {
+                userProperties = session.getExecutionProperties();
+            }
+            catch ( NoSuchMethodError nsmer )
+            {
+                // OK, so user is using Maven <= 2.0.8. No big deal.
+            }
+            
+            if ( userProperties != null )
+            {
+                // 6
+                interpolator.addValueSource( new PropertiesBasedValueSource( userProperties ) );
+            }
+        }
+        
         if ( mainProject != null )
         {
-            // 6
-            interpolator.addValueSource( new PropertiesInterpolationValueSource( mainProject.getProperties() ) );
-            interpolator.addValueSource( new PrefixedPropertiesInterpolationValueSource( "pom.properties.", mainProject.getProperties() ) );
-            interpolator.addValueSource( new PrefixedPropertiesInterpolationValueSource( "project.properties.", mainProject.getProperties() ) );
+            // 7
+            interpolator.addValueSource( new PrefixedPropertiesValueSource( PROJECT_PROPERTIES_PREFIXES, mainProject.getProperties(), true ) );
         }
 
-        // 7
-        interpolator.addValueSource( new PropertiesInterpolationValueSource( System.getProperties() ) );
+        Properties commandLineProperties = System.getProperties();
+        try
+        {
+            if ( session != null )
+            {
+                commandLineProperties = session.getExecutionProperties();
+            }
+
+        }
+        catch ( NoSuchMethodError nsmer )
+        {
+            // OK, so user is using Maven <= 2.0.8. No big deal.
+        }
+        
+        // 8
+        interpolator.addValueSource( new PropertiesBasedValueSource( commandLineProperties ) );
 
         try
         {
-            // 8
-            interpolator.addValueSource( new PropertiesInterpolationValueSource( CommandLineUtils.getSystemEnvVars( false ) ) );
+            // 9
+            interpolator.addValueSource( new PrefixedPropertiesValueSource( Collections.singletonList( "env." ), CommandLineUtils.getSystemEnvVars( false ), true ) );
         }
         catch ( IOException e )
         {
             throw new AssemblyFormattingException( "Failed to retrieve OS environment variables. Reason: " + e.getMessage(), e );
         }
 
-        // Now, run the interpolation using the rules stated above.
-        value = interpolator.interpolate( value, "__artifact" );
+        try
+        {
+            value = interpolator.interpolate( value );
+        }
+        catch ( InterpolationException e )
+        {
+            throw new AssemblyFormattingException( "Failed to interpolate output filename mapping. Reason: " + e.getMessage(), e );
+        }
 
         value = StringUtils.replace( value, "//", "/" );
         value = StringUtils.replace( value, "\\\\", "\\" );

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PropertyUtils.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PropertyUtils.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PropertyUtils.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PropertyUtils.java Thu Sep 11 16:02:34 2008
@@ -19,6 +19,10 @@
  * under the License.
  */
 
+import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
+import org.codehaus.plexus.interpolation.InterpolationException;
+import org.codehaus.plexus.interpolation.PropertiesBasedValueSource;
+import org.codehaus.plexus.interpolation.StringSearchInterpolator;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.interpolation.RegexBasedInterpolator;
 
@@ -50,7 +54,7 @@
      * @return the loaded and fully resolved Properties object
      */
     public static Properties getInterpolatedPropertiesFromFile( File propfile, boolean fail, boolean useSystemProps )
-        throws IOException
+        throws IOException, AssemblyFormattingException
     {
         Properties props;
 
@@ -80,13 +84,21 @@
             throw new FileNotFoundException( propfile.toString() );
         }
 
-        RegexBasedInterpolator interpolator = new RegexBasedInterpolator();
-        interpolator.addValueSource( new PropertiesInterpolationValueSource( props ) );
+        StringSearchInterpolator interpolator = new StringSearchInterpolator();
+        interpolator.addValueSource( new PropertiesBasedValueSource( props ) );
 
         for ( Enumeration n = props.propertyNames(); n.hasMoreElements(); )
         {
             String key = (String) n.nextElement();
-            String value = interpolator.interpolate( props.getProperty( key ), "__properties" );
+            String value = props.getProperty( key );
+            try
+            {
+                value = interpolator.interpolate( value );
+            }
+            catch ( InterpolationException e )
+            {
+                throw new AssemblyFormattingException( "Failed to interpolate property value: '" + value + "' for key: '" + key + "'. Reason: " + e.getMessage(), e );
+            }
 
             props.setProperty( key, value );
         }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java Thu Sep 11 16:02:34 2008
@@ -85,6 +85,8 @@
         macTask.expectGetDestFile( new File( "junk" ) );
         macTask.expectAddFile( artifactFile, "out/dep", 10 );
 
+        macTask.expectGetSession( null );
+        
         project.setArtifacts( Collections.singleton( artifactMock.getArtifact() ) );
 
         macTask.expectCSGetFinalName( "final-name" );

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java Thu Sep 11 16:02:34 2008
@@ -420,6 +420,9 @@
             mockManager.add( control );
 
             configSource = ( AssemblerConfigurationSource ) control.getMock();
+            
+            configSource.getMavenSession();
+            control.setReturnValue( null, MockControl.ZERO_OR_MORE );
         }
 
         public void expectGetProject( MavenProject project )

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java Thu Sep 11 16:02:34 2008
@@ -172,7 +172,7 @@
         MockAndControlForAddArtifactTask macTask = new MockAndControlForAddArtifactTask( mm, project );
 
         macTask.expectGetFinalName( null );
-
+        
         FileSet fs = new FileSet();
         fs.setOutputDirectory( "out" );
 
@@ -209,7 +209,7 @@
         MockAndControlForAddArtifactTask macTask = new MockAndControlForAddArtifactTask( mm, null );
 
         macTask.expectGetFinalName( null );
-
+        
         FileSet fs = new FileSet();
 
         ModuleSources sources = new ModuleSources();
@@ -275,7 +275,7 @@
         macTask.expectGetReactorProjects( projects );
         macTask.expectGetFinalName( "final-name" );
         macTask.expectGetDestFile( new File( "junk" ) );
-
+        
         int mode = TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
 
         macTask.expectAddFile( moduleArtifactFile, "out/artifact", mode );
@@ -358,7 +358,7 @@
         macTask.expectGetFinalName( "final-name" );
         macTask.expectGetDestFile( new File( "junk" ) );
         macTask.expectAddFile( artifactFile, "out/artifact", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
-
+        
         ModuleBinaries binaries = new ModuleBinaries();
 
         binaries.setIncludeDependencies( false );
@@ -437,7 +437,7 @@
         macTask.expectGetFinalName( "final-name" );
         macTask.expectGetDestFile( new File( "junk" ) );
         macTask.expectAddFile( artifactFile, "out/artifact", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
-
+        
         ModuleBinaries binaries = new ModuleBinaries();
 
         binaries.setIncludeDependencies( false );
@@ -474,7 +474,8 @@
         macTask.expectCSGetFinalName( "final-name" );
         macTask.expectGetDestFile( new File( "junk" ) );
         macTask.expectAddFile( artifactFile, "out/artifact", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
-
+        macTask.expectGetSession( null );
+        
         ModuleBinaries binaries = new ModuleBinaries();
 
         binaries.setUnpack( false );
@@ -536,7 +537,8 @@
         int mode = TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
 
         macTask.expectAddFile( moduleArtifactFile, "out/artifact", mode );
-
+        macTask.expectGetSession( null );
+        
         ModuleBinaries binaries = new ModuleBinaries();
 
         binaries.setUnpack( false );
@@ -657,7 +659,7 @@
         macTask.expectGetDestFile( new File( "junk" ) );
 
         macTask.expectAddFile( artifactFile, "out/artifact", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
-
+        
         ModuleBinaries binaries = new ModuleBinaries();
         binaries.setOutputDirectory( "out" );
         binaries.setOutputFileNameMapping( "artifact" );

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java Thu Sep 11 16:02:34 2008
@@ -232,6 +232,9 @@
             mockManager.add( control );
 
             configSource = (AssemblerConfigurationSource) control.getMock();
+            
+            configSource.getMavenSession();
+            control.setReturnValue( null, MockControl.ZERO_OR_MORE );
         }
 
         public void expectGetRemoteRepositories( List remoteRepos )

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTaskTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTaskTest.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTaskTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTaskTest.java Thu Sep 11 16:02:34 2008
@@ -75,7 +75,7 @@
 
         mac.expectGetDestFile( new File( "junk" ) );
         mac.expectAddFile( artifactFile, outputLocation );
-
+        
         mockManager.replayAll();
 
         AddArtifactTask task = createTask( artifactMock.getArtifact() );
@@ -100,7 +100,7 @@
 
         mac.expectGetDestFile( new File( "junk" ) );
         mac.expectAddFile( file, outputDir + artifactId + "-" + version + "." + ext );
-
+        
         mockManager.replayAll();
 
         AddArtifactTask task = new AddArtifactTask( mock.getArtifact(), new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java Thu Sep 11 16:02:34 2008
@@ -106,6 +106,8 @@
         macTask.expectGetDestFile( new File( "junk" ) );
         macTask.expectAddFile( newFile, outDir + depAid + "-" + depVer + "." + depExt, 10 );
 
+        macTask.expectGetSession( null );
+        
         mockManager.replayAll();
 
         Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
@@ -180,6 +182,8 @@
         macTask.expectCSGetFinalName( "final-name" );
         macTask.expectResolveDependencies( Collections.singleton( depMock.getArtifact() ) );
         macTask.expectAddFile( file, "out/" + aid + "-" + version + "." + type );
+        
+        macTask.expectGetSession( null );
 
         DependencySet ds = new DependencySet();
         ds.setOutputDirectory( "/out" );
@@ -252,6 +256,8 @@
 
         macTask.expectGetDestFile( new File( "junk" ) );
         macTask.expectCSGetFinalName( "final-name" );
+        
+        macTask.expectGetSession( null );
 
         MavenProject depProject = new MavenProject( new Model() );
 

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java Thu Sep 11 16:02:34 2008
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugin.assembly.testutils.MockManager;
 import org.apache.maven.project.MavenProject;
@@ -70,6 +71,9 @@
     {
         configSource.getProject();
         configSourceCtl.setReturnValue( project, MockControl.ZERO_OR_MORE );
+        
+        configSource.getMavenSession();
+        configSourceCtl.setReturnValue( null, MockControl.ZERO_OR_MORE );
     }
 
     public void expectGetFinalName( String finalName )
@@ -157,4 +161,10 @@
         configSource.getReactorProjects();
         configSourceCtl.setReturnValue( projects, MockControl.ONE_OR_MORE );
     }
+    
+    public void expectGetSession( MavenSession session )
+    {
+        configSource.getMavenSession();
+        configSourceCtl.setReturnValue( session, MockControl.ONE_OR_MORE );
+    }
 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java Thu Sep 11 16:02:34 2008
@@ -22,6 +22,7 @@
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugin.assembly.artifact.DependencyResolver;
 import org.apache.maven.plugin.assembly.testutils.MockManager;
@@ -241,5 +242,11 @@
         dependencyResolverCtl.setMatcher( MockControl.ALWAYS_MATCHER );
         dependencyResolverCtl.setReturnValue( resolvedArtifacts, MockControl.ONE_OR_MORE );
     }
+    
+    public void expectGetSession( MavenSession session )
+    {
+        configSource.getMavenSession();
+        configSourceCtl.setReturnValue( session, MockControl.ZERO_OR_MORE );
+    }
 
 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddFileSetsTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddFileSetsTask.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddFileSetsTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddFileSetsTask.java Thu Sep 11 16:02:34 2008
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugin.assembly.testutils.MockManager;
 import org.apache.maven.plugin.assembly.testutils.TestFileManager;
@@ -61,6 +62,9 @@
         archiver = ( Archiver ) archiverCtl.getMock();
 
         archiveBaseDir = fileManager.createTempDir();
+        
+        configSource.getMavenSession();
+        configSourceCtl.setReturnValue( null, MockControl.ZERO_OR_MORE );
     }
 
     public void expectGetArchiveBaseDirectory()
@@ -152,6 +156,12 @@
         configSourceCtl.setReturnValue( project, MockControl.ONE_OR_MORE );
     }
 
+    public void expectGetSession( MavenSession session )
+    {
+        configSource.getMavenSession();
+        configSourceCtl.setReturnValue( session, MockControl.ONE_OR_MORE );
+    }
+    
     public void expectGetFinalName( String finalName )
     {
         configSource.getFinalName();

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java Thu Sep 11 16:02:34 2008
@@ -897,6 +897,9 @@
 
         configSource.isSiteIncluded();
         configSourceControl.setReturnValue( false, MockControl.ZERO_OR_MORE );
+        
+        configSource.isIgnoreMissingDescriptor();
+        configSourceControl.setReturnValue( false, MockControl.ZERO_OR_MORE );
 
         mockManager.replayAll();
 

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtilsTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtilsTest.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtilsTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtilsTest.java Thu Sep 11 16:02:34 2008
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Model;
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
@@ -28,6 +29,7 @@
 import org.apache.maven.plugin.assembly.testutils.MockManager;
 import org.apache.maven.project.MavenProject;
 import org.easymock.MockControl;
+import org.easymock.classextension.MockClassControl;
 
 import java.util.Properties;
 
@@ -234,9 +236,23 @@
 
         artifactProject.setArtifact( artifactMock.getArtifact() );
 
+        MockControl sessionCtl = MockClassControl.createControl( MavenSession.class );
+        mockManager.add( sessionCtl );
+        
+        MavenSession session = (MavenSession) sessionCtl.getMock();
+        session.getExecutionProperties();
+        sessionCtl.setReturnValue( null, MockControl.ZERO_OR_MORE );
+        
+        MockControl csCtl = MockControl.createControl( AssemblerConfigurationSource.class );
+        mockManager.add( csCtl );
+        
+        AssemblerConfigurationSource cs = (AssemblerConfigurationSource) csCtl.getMock();
+        cs.getMavenSession();
+        csCtl.setReturnValue( session, MockControl.ZERO_OR_MORE );
+        
         mockManager.replayAll();
 
-        String result = AssemblyFormatUtils.evaluateFileNameMapping( "${artifact.artifactId}-${artifact.baseVersion}", artifactMock.getArtifact(), mainProject, artifactProject, "artifact." );
+        String result = AssemblyFormatUtils.evaluateFileNameMapping( "${artifact.artifactId}-${artifact.baseVersion}", artifactMock.getArtifact(), mainProject, artifactProject, "artifact.", cs );
 
         assertEquals( "artifact-2-SNAPSHOT", result );
 
@@ -472,18 +488,32 @@
             mainProject = new MavenProject( new Model() );
         }
 
-        ArtifactMock artifactMock = new ArtifactMock( mockManager, groupId, artifactId, version, extension, classifier, false );
+        ArtifactMock artifactMock = new ArtifactMock( mockManager, groupId, artifactId, version, extension, classifier, false, null );
+        
+        MockControl sessionCtl = MockClassControl.createControl( MavenSession.class );
+        mockManager.add( sessionCtl );
+        
+        MavenSession session = (MavenSession) sessionCtl.getMock();
+        session.getExecutionProperties();
+        sessionCtl.setReturnValue( System.getProperties(), MockControl.ZERO_OR_MORE );
+        
+        MockControl csCtl = MockControl.createControl( AssemblerConfigurationSource.class );
+        mockManager.add( csCtl );
+        
+        AssemblerConfigurationSource cs = (AssemblerConfigurationSource) csCtl.getMock();
+        cs.getMavenSession();
+        csCtl.setReturnValue( session, MockControl.ZERO_OR_MORE );
 
         mockManager.replayAll();
 
         String result;
         if ( prefix == null )
         {
-            result = AssemblyFormatUtils.evaluateFileNameMapping( expression, artifactMock.getArtifact(), mainProject, artifactProject );
+            result = AssemblyFormatUtils.evaluateFileNameMapping( expression, artifactMock.getArtifact(), mainProject, artifactProject, cs );
         }
         else
         {
-            result = AssemblyFormatUtils.evaluateFileNameMapping( expression, artifactMock.getArtifact(), mainProject, artifactProject, prefix );
+            result = AssemblyFormatUtils.evaluateFileNameMapping( expression, artifactMock.getArtifact(), mainProject, artifactProject, prefix, cs );
         }
 
         assertEquals( checkValue, result );
@@ -554,18 +584,38 @@
             artifactProject = project;
             mainProject = new MavenProject( new Model() );
         }
+        
+        MockControl sessionCtl = MockClassControl.createControl( MavenSession.class );
+        mockManager.add( sessionCtl );
+        
+        MavenSession session = (MavenSession) sessionCtl.getMock();
+        session.getExecutionProperties();
+        sessionCtl.setReturnValue( System.getProperties(), MockControl.ZERO_OR_MORE );
+        
+        MockControl csCtl = MockControl.createControl( AssemblerConfigurationSource.class );
+        mockManager.add( csCtl );
+        
+        AssemblerConfigurationSource cs = (AssemblerConfigurationSource) csCtl.getMock();
+        cs.getMavenSession();
+        csCtl.setReturnValue( session, MockControl.ZERO_OR_MORE );
 
         String result;
+        
+        mockManager.replayAll();
         if ( prefix == null )
         {
-            result = AssemblyFormatUtils.getOutputDirectory( outDir, mainProject, artifactProject, finalName );
+            result = AssemblyFormatUtils.getOutputDirectory( outDir, mainProject, artifactProject, finalName, cs );
         }
         else
         {
-            result = AssemblyFormatUtils.getOutputDirectory( outDir, mainProject, artifactProject, finalName, prefix );
+            result = AssemblyFormatUtils.getOutputDirectory( outDir, mainProject, artifactProject, finalName, prefix, cs );
         }
 
         assertEquals( checkValue, result );
+        
+        mockManager.verifyAll();
+        
+        mockManager.clear();
     }
 
     private void verifyDistroName( String assemblyId, String classifier, String finalName, boolean appendAssemblyId, String checkValue )

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/PropertyUtilsTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/PropertyUtilsTest.java?rev=694529&r1=694528&r2=694529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/PropertyUtilsTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/PropertyUtilsTest.java Thu Sep 11 16:02:34 2008
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
 import org.codehaus.plexus.util.IOUtil;
 
 import java.io.File;
@@ -34,7 +35,7 @@
 {
 
     public void testShouldNotTouchPropertiesWithNoExpressions()
-        throws IOException
+        throws IOException, AssemblyFormattingException
     {
         Properties props = new Properties();
         props.setProperty( "key", "value" );
@@ -51,7 +52,7 @@
     }
 
     public void testShouldResolveExpressionReferringToExistingKeyWithoutExpressionPrefix()
-        throws IOException
+        throws IOException, AssemblyFormattingException
     {
         Properties props = new Properties();
         props.setProperty( "key", "value" );
@@ -67,25 +68,8 @@
         assertEquals( "value", result.getProperty( "key2" ) );
     }
 
-    public void testShouldResolveExpressionReferringToExistingKeyWithExpressionPrefix()
-        throws IOException
-    {
-        Properties props = new Properties();
-        props.setProperty( "key", "value" );
-        props.setProperty( "key2", "${__properties.key}" );
-
-        File propsFile = getTempFile();
-
-        writePropertiesTo( propsFile, props );
-
-        Properties result = PropertyUtils.getInterpolatedPropertiesFromFile( propsFile, true, false );
-
-        assertEquals( "value", result.getProperty( "key" ) );
-        assertEquals( "value", result.getProperty( "key2" ) );
-    }
-
     public void testShouldResolveExpressionReferringToSysPropKeyWithoutExpressionPrefix()
-        throws IOException
+        throws IOException, AssemblyFormattingException
     {
         Properties props = new Properties();
         props.setProperty( "key", "value" );
@@ -102,26 +86,8 @@
         assertEquals( userName, result.getProperty( "key2" ) );
     }
 
-    public void testShouldResolveExpressionReferringToSysPropKeyWithExpressionPrefix()
-        throws IOException
-    {
-        Properties props = new Properties();
-        props.setProperty( "key", "value" );
-        props.setProperty( "key2", "${__properties.user.name}" );
-
-        String userName = System.getProperty( "user.name" );
-
-        File propsFile = getTempFile();
-
-        writePropertiesTo( propsFile, props );
-
-        Properties result = PropertyUtils.getInterpolatedPropertiesFromFile( propsFile, true, true );
-
-        assertEquals( userName, result.getProperty( "key2" ) );
-    }
-
     public void testShouldNotTouchExpressionReferringToNonExistentKeyWithoutExpressionPrefix()
-        throws IOException
+        throws IOException, AssemblyFormattingException
     {
         Properties props = new Properties();
         props.setProperty( "key", "value" );
@@ -136,24 +102,8 @@
         assertEquals( "${foo.bar.gobbledy.gook}", result.getProperty( "key2" ) );
     }
 
-    public void testShouldNotTouchExpressionReferringToNonExistentKeyWithExpressionPrefix()
-        throws IOException
-    {
-        Properties props = new Properties();
-        props.setProperty( "key", "value" );
-        props.setProperty( "key2", "${__properties.foo.bar.gobbledy.gook}" );
-
-        File propsFile = getTempFile();
-
-        writePropertiesTo( propsFile, props );
-
-        Properties result = PropertyUtils.getInterpolatedPropertiesFromFile( propsFile, true, false );
-
-        assertEquals( "${__properties.foo.bar.gobbledy.gook}", result.getProperty( "key2" ) );
-    }
-
     public void testShouldNotIncludeSystemProperties()
-        throws IOException
+        throws IOException, AssemblyFormattingException
     {
         Properties props = new Properties();
 
@@ -167,7 +117,7 @@
     }
 
     public void testShouldFailWhenGivenNonExistentPropertiesFileLocation()
-        throws IOException
+        throws IOException, AssemblyFormattingException
     {
         File propsFile = getTempFile();
         propsFile.delete();