Author: bentmann
Date: Mon May  3 10:53:06 2010
New Revision: 940414

URL: http://svn.apache.org/viewvc?rev=940414&view=rev
Log:
[MASSEMBLY-486] ComponentDescriptors to support absolute paths
Submitted by: Michael Lawler

o Applied with minor formatting/modifications

Modified:
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java
    
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java

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=940414&r1=940413&r2=940414&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
 Mon May  3 10:53:06 2010
@@ -27,6 +27,7 @@ import org.apache.maven.plugin.assembly.
 import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
 import 
org.apache.maven.plugin.assembly.interpolation.AssemblyInterpolationException;
 import org.apache.maven.plugin.assembly.interpolation.AssemblyInterpolator;
+import 
org.apache.maven.plugin.assembly.interpolation.AssemblyExpressionEvaluator;
 import org.apache.maven.plugin.assembly.model.Assembly;
 import org.apache.maven.plugin.assembly.model.Component;
 import org.apache.maven.plugin.assembly.model.ContainerDescriptorHandlerConfig;
@@ -422,7 +423,10 @@ public class DefaultAssemblyReader
     protected void mergeComponentsWithMainAssembly( Assembly assembly, 
AssemblerConfigurationSource configSource )
         throws AssemblyReadException
     {
-        RelativeFileLocatorStrategy fls = new RelativeFileLocatorStrategy( 
configSource.getBasedir() );
+        RelativeFileLocatorStrategy rfls = new RelativeFileLocatorStrategy( 
configSource.getBasedir() );
+
+        // allow absolute paths in componentDescriptor... MASSEMBLY-486
+        FileLocatorStrategy afls = new FileLocatorStrategy();
 
         ClasspathResourceLocatorStrategy crls = new 
ClasspathResourceLocatorStrategy();
 
@@ -434,16 +438,29 @@ public class DefaultAssemblyReader
         URLLocatorStrategy uls = new URLLocatorStrategy();
 
         Locator locator = new Locator();
-        locator.addStrategy( fls );
+        locator.addStrategy( rfls );
+        locator.addStrategy( afls );
         locator.addStrategy( als );
         locator.addStrategy( crls );
         locator.addStrategy( uls );
 
+        AssemblyExpressionEvaluator aee = new AssemblyExpressionEvaluator( 
configSource );
+
         List componentLocations = assembly.getComponentDescriptors();
 
         for ( Iterator it = componentLocations.iterator(); it.hasNext(); )
         {
             String location = (String) it.next();
+            
+            // allow expressions in path to component descriptor... 
MASSEMBLY-486
+            try
+            {
+                location = aee.evaluate( location ).toString();
+            }
+            catch ( Exception eee )
+            {
+                getLogger().error( "Error interpolating componentDescriptor: " 
+ location, eee );
+            }
 
             Location resolvedLocation = locator.resolve( location );
 

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=940414&r1=940413&r2=940414&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
 Mon May  3 10:53:06 2010
@@ -487,6 +487,12 @@ public class DefaultAssemblyReaderTest
 
         configSource.getBasedir();
         configSourceControl.setReturnValue( basedir, MockControl.ZERO_OR_MORE 
);
+        
+        
+        MavenProject project = new MavenProject();
+        
+        configSource.getProject();
+        configSourceControl.setReturnValue( project, MockControl.ZERO_OR_MORE 
);
 
         mockManager.replayAll();
 
@@ -702,7 +708,6 @@ public class DefaultAssemblyReaderTest
         model.setVersion( "version" );
 
         MavenProject project = new MavenProject( model );
-
         configSource.getProject();
         configSourceControl.setReturnValue( project, MockControl.ZERO_OR_MORE 
);
 
@@ -776,7 +781,7 @@ public class DefaultAssemblyReaderTest
         MavenProject project = new MavenProject( model );
 
         configSource.getProject();
-        configSourceControl.setReturnValue( project );
+        configSourceControl.setReturnValue( project, MockControl.ONE_OR_MORE );
 
         configSource.isSiteIncluded();
         configSourceControl.setReturnValue( false );


Reply via email to