Author: jdcasey
Date: Mon Feb 18 15:30:47 2008
New Revision: 628920

URL: http://svn.apache.org/viewvc?rev=628920&view=rev
Log:
[MASSEMBLY-256] Support project properties in outputFileNameMapping and 
outputDirectory.

Modified:
    
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/PropertiesInterpolationValueSource.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/utils/AssemblyFormatUtilsTest.java

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=628920&r1=628919&r2=628920&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
 Mon Feb 18 15:30:47 2008
@@ -88,8 +88,9 @@
      *    A. MavenProject instance from current build
      * 5. no prefix, using main project instance
      *    A. MavenProject instance from current build
-     * 6. System properties
-     * 7. environment variables.
+     * 6. properties of the main project
+     * 7. System properties
+     * 8. environment variables.
      *
      */
     public static String getOutputDirectory( String output, MavenProject 
mainProject, MavenProject artifactProject,
@@ -147,14 +148,17 @@
         if ( mainProject != null )
         {
             interpolator.addValueSource( new ObjectBasedValueSource( 
mainProject ) );
+
+            // 6
+            interpolator.addValueSource( new 
PropertiesInterpolationValueSource( mainProject.getProperties() ) );
         }
 
-        // 6
+        // 7
         interpolator.addValueSource( new PropertiesInterpolationValueSource( 
System.getProperties() ) );
 
         try
         {
-            // 7
+            // 8
             interpolator.addValueSource( new 
PropertiesInterpolationValueSource( CommandLineUtils.getSystemEnvVars( false ) 
) );
         }
         catch ( IOException e )
@@ -199,8 +203,9 @@
      * 4. no prefix, using main project instance
      *    A. MavenProject instance from current build
      * 5. Support for special expressions, like ${dashClassifier?}
-     * 6. System properties
-     * 7. environment variables.
+     * 6. properties from main project
+     * 7. System properties
+     * 8. environment variables.
      *
      */
     public static String evaluateFileNameMapping( String expression, Artifact 
artifact, MavenProject mainProject, MavenProject artifactProject, String 
artifactProjectRefName )
@@ -280,12 +285,18 @@
         // 5
         interpolator.addValueSource( new PropertiesInterpolationValueSource( 
specialRules ) );
 
-        // 6
+        if ( mainProject != null )
+        {
+            // 6
+            interpolator.addValueSource( new 
PropertiesInterpolationValueSource( mainProject.getProperties() ) );
+        }
+
+        // 7
         interpolator.addValueSource( new PropertiesInterpolationValueSource( 
System.getProperties() ) );
 
         try
         {
-            // 7
+            // 8
             interpolator.addValueSource( new 
PropertiesInterpolationValueSource( CommandLineUtils.getSystemEnvVars( false ) 
) );
         }
         catch ( IOException e )

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PropertiesInterpolationValueSource.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PropertiesInterpolationValueSource.java?rev=628920&r1=628919&r2=628920&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PropertiesInterpolationValueSource.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PropertiesInterpolationValueSource.java
 Mon Feb 18 15:30:47 2008
@@ -39,7 +39,7 @@
 
     public Object getValue( String key )
     {
-        return properties.getProperty( key );
+        return properties == null ? null : properties.getProperty( key );
     }
 
 }

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=628920&r1=628919&r2=628920&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
 Mon Feb 18 15:30:47 2008
@@ -157,7 +157,9 @@
         ProjectBuildingException pbe = new ProjectBuildingException( "test", 
"Test error." );
 
         MockAndControlForAddDependencySetsTask macTask = new 
MockAndControlForAddDependencySetsTask(
-                                                                               
                      mockManager );
+                                                                               
                      mockManager,
+                                                                               
                      new MavenProject(
+                                                                               
                                        new Model() ) );
 
         String gid = "org.test";
         String aid = "test-dep";
@@ -226,7 +228,7 @@
         ds.setFileMode( Integer.toString( 10, 8 ) );
 
         MockAndControlForAddDependencySetsTask macTask = new 
MockAndControlForAddDependencySetsTask(
-                                                                               
                      mockManager );
+                                                                               
                      mockManager, new MavenProject( new Model() ) );
 
         ArtifactMock artifactMock = new ArtifactMock( mockManager, "group", 
"artifact", "version",
                                                       "jar", false );

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=628920&r1=628919&r2=628920&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
 Mon Feb 18 15:30:47 2008
@@ -29,6 +29,8 @@
 import org.apache.maven.project.MavenProject;
 import org.easymock.MockControl;
 
+import java.util.Properties;
+
 import junit.framework.TestCase;
 
 
@@ -180,6 +182,14 @@
         verifyOutputDir( null, null, null, null, null, "" );
     }
 
+    public void testGetOutputDir_ShouldResolveProjectProperty() throws 
AssemblyFormattingException
+    {
+        Properties props = new Properties();
+        props.setProperty( "myProperty", "value" );
+
+        verifyOutputDir( "file.${myProperty}", null, null, null, null, null, 
"file.value/", null, true, props );
+    }
+
     public void 
testEvalFileNameMapping_ShouldResolveArtifactIdAndBaseVersionInOutDir_UseArtifactInfo_WithValidMainProject()
     throws AssemblyFormattingException
     {
@@ -313,6 +323,19 @@
         verifyEvalFileNameMapping( "file.${artifact.extension}", null, null, 
null, null, "ext", "file.ext" );
     }
 
+    public void testEvalFileNameMapping_ShouldResolveProjectProperty() throws 
AssemblyFormattingException
+    {
+        Properties props = new Properties();
+        props.setProperty( "myProperty", "value" );
+
+        verifyEvalFileNameMapping( "file.${myProperty}", null, null, null, 
null, null, "file.value", null, true, props );
+    }
+
+    public void 
testEvalFileNameMapping_ShouldResolveSystemPropertyWithoutMainProjectPresent() 
throws AssemblyFormattingException
+    {
+        verifyEvalFileNameMapping( "file.${java.version}", null, null, null, 
null, null, "file." + System.getProperty( "java.version" ), "artifact.", false 
);
+    }
+
     private void verifyEvalFileNameMapping( String expression, String 
classifier, String groupId, String artifactId,
                                             String version, String extension, 
String checkValue )
         throws AssemblyFormattingException
@@ -331,6 +354,23 @@
                                             String version, String extension, 
String checkValue, String prefix, boolean usingMainProject )
         throws AssemblyFormattingException
     {
+        verifyEvalFileNameMapping( expression,
+                                   classifier,
+                                   groupId,
+                                   artifactId,
+                                   version,
+                                   extension,
+                                   checkValue,
+                                   prefix,
+                                   usingMainProject,
+                                   new Properties() );
+    }
+
+    private void verifyEvalFileNameMapping( String expression, String 
classifier, String groupId, String artifactId,
+                                            String version, String extension, 
String checkValue, String prefix, boolean usingMainProject,
+                                            Properties projectProperties )
+        throws AssemblyFormattingException
+    {
         if ( artifactId == null )
         {
             artifactId = "artifact";
@@ -357,6 +397,8 @@
         model.setArtifactId( artifactId );
         model.setVersion( version );
 
+        model.setProperties( projectProperties );
+
         project = new MavenProject( model );
 
         MavenProject mainProject;
@@ -412,13 +454,24 @@
                                   String projectFinalName, String checkValue, 
String prefix, boolean usingMainProject )
         throws AssemblyFormattingException
     {
+        verifyOutputDir( outDir, finalName, groupId, artifactId, version, 
projectFinalName, checkValue, prefix, usingMainProject, new Properties() );
+    }
+
+    private void verifyOutputDir( String outDir, String finalName, String 
groupId, String artifactId, String version,
+                                  String projectFinalName, String checkValue, 
String prefix, boolean usingMainProject,
+                                  Properties projectProperties )
+        throws AssemblyFormattingException
+    {
         MavenProject project = null;
-        if ( ( groupId != null ) || ( artifactId != null ) || ( version != 
null ) || ( projectFinalName != null ) )
+        if ( ( groupId != null ) || ( artifactId != null ) || ( version != 
null )
+             || ( projectFinalName != null ) || ( projectProperties != null ) )
         {
             Model model = new Model();
             model.setGroupId( groupId );
             model.setArtifactId( artifactId );
             model.setVersion( version );
+
+            model.setProperties( projectProperties );
 
             if ( projectFinalName != null )
             {


Reply via email to