You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kh...@apache.org on 2014/10/10 16:25:19 UTC

svn commit: r1630908 - in /maven/plugins/trunk/maven-assembly-plugin/src: main/java/org/apache/maven/plugin/assembly/ main/java/org/apache/maven/plugin/assembly/format/ main/java/org/apache/maven/plugin/assembly/mojos/ test/java/org/apache/maven/plugin...

Author: khmarbaise
Date: Fri Oct 10 14:25:19 2014
New Revision: 1630908

URL: http://svn.apache.org/r1630908
Log:
[MASSEMBLY-673]
 - Applied the patch of Lian Coulter.

Modified:
    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/format/FileFormatter.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/test/java/org/apache/maven/plugin/assembly/format/FileFormatterTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/FileSetFormatterTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/ConfigSourceStub.java

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=1630908&r1=1630907&r2=1630908&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 Fri Oct 10 14:25:19 2014
@@ -99,4 +99,9 @@ public interface AssemblerConfigurationS
     String getEncoding();
 
     String getEscapeString();
+    
+    List<String> getDelimiters();
+
+    boolean isUseDefaultDelimiters();
+
 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileFormatter.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileFormatter.java?rev=1630908&r1=1630907&r2=1630908&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileFormatter.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileFormatter.java Fri Oct 10 14:25:19 2014
@@ -23,6 +23,8 @@ import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.Reader;
+import java.util.LinkedHashSet;
+import java.util.List;
 import java.util.Locale;
 
 import javax.annotation.Nonnull;
@@ -78,7 +80,7 @@ public class FileFormatter
 
         if ( filter )
         {
-            result = doFileFilter( source, tempRoot, encoding, configSource.getEscapeString() );
+            result = doFileFilter( source, tempRoot, encoding, configSource.getEscapeString(), configSource.getDelimiters(), configSource.isUseDefaultDelimiters());
         }
 
         LineEndings lineEnding = LineEndingsUtils.getLineEnding( lineEndingCharacters );
@@ -90,7 +92,7 @@ public class FileFormatter
         return result;
     }
 
-    private File doFileFilter( @Nonnull File source, @Nullable File tempRoot, String encoding, String escapeString )
+    private File doFileFilter( @Nonnull File source, @Nullable File tempRoot, String encoding, String escapeString, List<String> delimiters, boolean useDefaultDelimiters)
         throws AssemblyFormattingException
     {
         try
@@ -104,6 +106,32 @@ public class FileFormatter
                 new MavenFileFilterRequest( source, target, true, configSource.getProject(), configSource.getFilters(),
                                             isPropertiesFile, encoding, configSource.getMavenSession(), null );
             filterRequest.setEscapeString( escapeString );
+            
+            // if these are NOT set, just use the defaults, which are '${*}' and '@'.
+            if ( delimiters != null && !delimiters.isEmpty() )
+            {
+                LinkedHashSet<String> delims = new LinkedHashSet<String>();
+                if ( useDefaultDelimiters )
+                {
+                    delims.addAll( filterRequest.getDelimiters() );
+                }
+
+                for ( String delim : delimiters )
+                {
+                    if ( delim == null )
+                    {
+                        // FIXME: ${filter:*} could also trigger this condition. Need a better long-term solution.
+                        delims.add( "${*}" );
+                    }
+                    else
+                    {
+                        delims.add( delim );
+                    }
+                }
+
+                filterRequest.setDelimiters( delims );
+            }
+            
             filterRequest.setInjectProjectBuildFilters( true );
             configSource.getMavenFileFilter().copyFile( filterRequest );
 

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=1630908&r1=1630907&r2=1630908&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 Fri Oct 10 14:25:19 2014
@@ -374,6 +374,35 @@ public abstract class AbstractAssemblyMo
     private boolean ignorePermissions;
 
     /**
+     * <p>
+     * Set of delimiters for expressions to filter within the resources. These delimiters are specified in the
+     * form 'beginToken*endToken'. If no '*' is given, the delimiter is assumed to be the same for start and end.
+     * </p><p>
+     * So, the default filtering delimiters might be specified as:
+     * </p>
+     * <pre>
+     * &lt;delimiters&gt;
+     *   &lt;delimiter&gt;${*}&lt;/delimiter&gt;
+     *   &lt;delimiter&gt;@&lt;/delimiter&gt;
+     * &lt;/delimiters&gt;
+     * </pre>
+     * <p>
+     * Since the '@' delimiter is the same on both ends, we don't need to specify '@*@' (though we can).
+     * </p>
+     *
+     * @since 2.4
+     */
+    @Parameter
+    private List<String> delimiters;
+
+    /**
+     * @since 2.4
+     */
+    @Parameter( defaultValue = "true" )
+    private boolean useDefaultDelimiters;
+    
+    
+    /**
      * Create the binary distribution.
      * 
      * @throws org.apache.maven.plugin.MojoExecutionException
@@ -843,4 +872,24 @@ public abstract class AbstractAssemblyMo
     {
         return escapeString;
     }
+    
+    public List<String> getDelimiters()
+    {
+        return delimiters;
+    }
+
+    public void setDelimiters( List<String> delimiters )
+    {
+        this.delimiters = delimiters;
+    }
+
+    public boolean isUseDefaultDelimiters()
+    {
+        return useDefaultDelimiters;
+    }
+
+    public void setUseDefaultDelimiters( boolean useDefaultDelimiters )
+    {
+        this.useDefaultDelimiters = useDefaultDelimiters;
+    }
 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/FileFormatterTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/FileFormatterTest.java?rev=1630908&r1=1630907&r2=1630908&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/FileFormatterTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/FileFormatterTest.java Fri Oct 10 14:25:19 2014
@@ -22,6 +22,7 @@ package org.apache.maven.plugin.assembly
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -178,7 +179,7 @@ public class FileFormatterTest
         build.setOutputDirectory( "C:\\out\\deeper" );
         project.setBuild( build );
 
-        enableBasicFilteringConfiguration( project, sourceDir );
+        enableBasicFilteringConfiguration( project, sourceDir, true, null);
 
         final File file = fileManager.createFile( sourceDir, "one.properties", "out=${project.build.outputDirectory}" );
 
@@ -201,7 +202,7 @@ public class FileFormatterTest
         build.setOutputDirectory( "C:\\out\\deeper" );
         project.setBuild( build );
 
-        enableBasicFilteringConfiguration( project, sourceDir );
+        enableBasicFilteringConfiguration( project, sourceDir, true, null);
 
         final File file =
             fileManager.createFile( sourceDir, "one.txt", "project.basedirA=${project.build.outputDirectory}" );
@@ -364,6 +365,51 @@ public class FileFormatterTest
 
         mockManager.verifyAll();
     }
+    
+    public void testShouldFilterExpressionFromFiltersFileInFileAddCustomDelimiters() throws Exception
+    {
+        final File basedir = fileManager.createTempDir();
+
+        final File filterProps = fileManager.createFile( basedir, "filter.properties", "property=Test" );
+
+        final List<String> delimiters = Collections.unmodifiableList(Arrays.asList("#", "(*)"));
+        
+        enableBasicFilteringConfiguration( basedir, Collections.singletonList( filterProps.getCanonicalPath() ), true, delimiters );
+
+        final File file =
+            fileManager.createFile( basedir, "one.txt", "This is a test for project: ${property} @property@ #property# (property)." );
+
+        mockManager.replayAll();
+
+        final File result = new FileFormatter( configSource, logger ).format( file, true, null, "UTF-8" );
+
+        assertEquals( "This is a test for project: Test Test Test Test.", fileManager.getFileContents( result ) );
+
+        mockManager.verifyAll();
+    }
+    
+    public void testShouldFilterExpressionFromFiltersFileInFileCustomDelimiters() throws Exception
+    {
+        final File basedir = fileManager.createTempDir();
+
+        final File filterProps = fileManager.createFile( basedir, "filter.properties", "property=Test" );
+
+        final List<String> delimiters = Collections.unmodifiableList(Arrays.asList("#", "(*)"));
+        
+        enableBasicFilteringConfiguration( basedir, Collections.singletonList( filterProps.getCanonicalPath() ), false, delimiters );
+
+        final File file =
+            fileManager.createFile( basedir, "one.txt", "This is a test for project: ${property} @property@ #property# (property)." );
+
+        mockManager.replayAll();
+
+        final File result = new FileFormatter( configSource, logger ).format( file, true, null, "UTF-8" );
+
+        assertEquals( "This is a test for project: ${property} @property@ Test Test.", fileManager.getFileContents( result ) );
+
+        mockManager.verifyAll();
+    }
+
 
     private MavenProject createBasicMavenProject()
     {
@@ -375,11 +421,11 @@ public class FileFormatterTest
         return new MavenProject( model );
     }
 
-    private void enableBasicFilteringConfiguration( final MavenProject project, final File basedir ) throws Exception
+    private void enableBasicFilteringConfiguration( final MavenProject project, final File basedir, final boolean useDefault, final List<String> delimiters) throws Exception
     {
         configSource.getTemporaryRootDirectory();
         configSourceControl.setReturnValue( basedir );
-
+        
         configSource.getEscapeString();
         configSourceControl.setReturnValue( null, MockControl.ONE_OR_MORE );
 
@@ -394,6 +440,12 @@ public class FileFormatterTest
 
         configSource.getFilters();
         configSourceControl.setReturnValue( Collections.EMPTY_LIST );
+        
+        configSource.getDelimiters();
+        configSourceControl.setReturnValue( delimiters );
+        
+        configSource.isUseDefaultDelimiters();
+        configSourceControl.setReturnValue( useDefault );
     }
 
     private void enableBasicFilteringConfiguration( final File basedir, final List<String> filterFilenames )
@@ -406,7 +458,19 @@ public class FileFormatterTest
                    .setFilters( filterFilenames );
         }
 
-        enableBasicFilteringConfiguration( project, basedir );
+        enableBasicFilteringConfiguration( project, basedir, true, null );
     }
 
+    private void enableBasicFilteringConfiguration( final File basedir, final List<String> filterFilenames, final boolean useDefault, final List<String> delimiters) throws Exception
+    {
+
+    	final MavenProject project = createBasicMavenProject();
+        if ( filterFilenames != null )
+        {
+            project.getBuild()
+                   .setFilters( filterFilenames );
+        }
+    	
+        enableBasicFilteringConfiguration( project, basedir, useDefault, delimiters);
+    }
 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/FileSetFormatterTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/FileSetFormatterTest.java?rev=1630908&r1=1630907&r2=1630908&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/FileSetFormatterTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/FileSetFormatterTest.java Fri Oct 10 14:25:19 2014
@@ -329,6 +329,8 @@ public class FileSetFormatterTest
             FileUtils.deleteDirectory( result );
         }
     }
+    
+    
 
     private void enableBasicFilteringConfiguration( final File basedir, final List<String> filterFilenames )
         throws Exception
@@ -362,6 +364,13 @@ public class FileSetFormatterTest
 
         configSource.getEscapeString();
         configSourceControl.setReturnValue( null, MockControl.ONE_OR_MORE );
+        
+        
+        configSource.getDelimiters();
+        configSourceControl.setReturnValue( Collections.EMPTY_LIST, MockControl.ONE_OR_MORE );
+        
+        configSource.isUseDefaultDelimiters();
+        configSourceControl.setReturnValue( true, MockControl.ONE_OR_MORE );
     }
 
 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/ConfigSourceStub.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/ConfigSourceStub.java?rev=1630908&r1=1630907&r2=1630908&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/ConfigSourceStub.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/ConfigSourceStub.java Fri Oct 10 14:25:19 2014
@@ -209,4 +209,12 @@ public class ConfigSourceStub
     public String getEscapeString() {
         return null;
     }
+
+	public List<String> getDelimiters() {
+		return null;
+	}
+
+	public boolean isUseDefaultDelimiters() {
+		return true;
+	}
 }