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>
+ * <delimiters>
+ * <delimiter>${*}</delimiter>
+ * <delimiter>@</delimiter>
+ * </delimiters>
+ * </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;
+ }
}