Author: olamy Date: Wed Sep 10 00:46:29 2008 New Revision: 693721 URL: http://svn.apache.org/viewvc?rev=693721&view=rev Log: [MSHARED-51] ability to escape interpolation with \ Note the escape String will be configurable But the default value \ will be use if the configurable field is null
Modified: maven/shared/trunk/maven-filtering/pom.xml maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenProjectValueSource.java maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/PropertiesEscapingBackSlashValueSource.java maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java maven/shared/trunk/maven-filtering/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt Modified: maven/shared/trunk/maven-filtering/pom.xml URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/pom.xml?rev=693721&r1=693720&r2=693721&view=diff ============================================================================== --- maven/shared/trunk/maven-filtering/pom.xml (original) +++ maven/shared/trunk/maven-filtering/pom.xml Wed Sep 10 00:46:29 2008 @@ -101,7 +101,7 @@ <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-interpolation</artifactId> - <version>1.3</version> + <version>1.6-SNAPSHOT</version> </dependency> </dependencies> </project> Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java?rev=693721&r1=693720&r2=693721&view=diff ============================================================================== --- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java (original) +++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java Wed Sep 10 00:46:29 2008 @@ -30,9 +30,8 @@ import org.apache.maven.execution.MavenSession; import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.interpolation.Interpolator; import org.codehaus.plexus.interpolation.InterpolatorFilterReader; -import org.codehaus.plexus.interpolation.RegexBasedInterpolator; +import org.codehaus.plexus.interpolation.StringSearchInterpolator; import org.codehaus.plexus.interpolation.ValueSource; import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.util.FileUtils; @@ -91,11 +90,25 @@ } + /** + * @see org.apache.maven.shared.filtering.MavenFileFilter#getDefaultFilterWrappers(org.apache.maven.project.MavenProject, java.util.List, boolean, org.apache.maven.execution.MavenSession) + */ public List getDefaultFilterWrappers( final MavenProject mavenProject, List filters, final boolean escapedBackslashesInFilePath, MavenSession mavenSession ) throws MavenFilteringException { + return getDefaultFilterWrappers( mavenProject, filters, escapedBackslashesInFilePath, mavenSession, null ); + } + + + + public List getDefaultFilterWrappers( final MavenProject mavenProject, List filters, + final boolean escapedBackslashesInFilePath, MavenSession mavenSession, + MavenResourcesExecution mavenResourcesExecution ) + throws MavenFilteringException + { + // here we build some properties which will be used to read some properties files // to interpolate the expression ${ } in this properties file @@ -142,14 +155,23 @@ final ValueSource propertiesValueSource = new PropertiesEscapingBackSlashValueSource( escapedBackslashesInFilePath, filterProperties ); + final String escapeString = mavenResourcesExecution == null ? MavenResourcesExecution.DEFAULT_ESCAPE_STRING + : mavenResourcesExecution.getEscapeString(); + + // support ${token} FileUtils.FilterWrapper one = new FileUtils.FilterWrapper() { public Reader getReader( Reader reader ) { - Interpolator propertiesInterpolator = new RegexBasedInterpolator( true ); - propertiesInterpolator.addValueSource( propertiesValueSource ); - return new InterpolatorFilterReader( reader, propertiesInterpolator ); + StringSearchInterpolator propertiesInterpolator = new StringSearchInterpolator(); + propertiesInterpolator.addValueSource( propertiesValueSource ); + propertiesInterpolator.setEscapeString( escapeString ); + InterpolatorFilterReader interpolatorFilterReader = new InterpolatorFilterReader( reader, + propertiesInterpolator ); + interpolatorFilterReader.setInterpolateWithPrefixPattern( false ); + interpolatorFilterReader.setEscapeString( escapeString ); + return interpolatorFilterReader; } }; defaultFilterWrappers.add( one ); @@ -159,10 +181,17 @@ { public Reader getReader( Reader reader ) { - final RegexBasedInterpolator propertiesInterpolatorAtRegex = new RegexBasedInterpolator( "\\@", "(.+?)\\@" ); - propertiesInterpolatorAtRegex.setReusePatterns( true ); - propertiesInterpolatorAtRegex.addValueSource( propertiesValueSource ); - return new InterpolatorFilterReader( reader, propertiesInterpolatorAtRegex, "@", "@" ); + StringSearchInterpolator propertiesInterpolator = new StringSearchInterpolator( "@", + "@" ); + propertiesInterpolator.addValueSource( propertiesValueSource ); + propertiesInterpolator.setEscapeString( escapeString ); + InterpolatorFilterReader interpolatorFilterReader = new InterpolatorFilterReader( + reader, + propertiesInterpolator, + "@", "@" ); + interpolatorFilterReader.setInterpolateWithPrefixPattern( false ); + interpolatorFilterReader.setEscapeString( escapeString ); + return interpolatorFilterReader; } }; defaultFilterWrappers.add( second ); @@ -172,11 +201,16 @@ { public Reader getReader( Reader reader ) { - Interpolator mavenProjectInterpolator = new RegexBasedInterpolator( true ); + StringSearchInterpolator mavenProjectInterpolator = new StringSearchInterpolator(); ValueSource valueSource = new MavenProjectValueSource( mavenProject, escapedBackslashesInFilePath ); mavenProjectInterpolator.addValueSource( valueSource ); - return new InterpolatorFilterReader( reader, mavenProjectInterpolator ); + mavenProjectInterpolator.setEscapeString( escapeString ); + InterpolatorFilterReader interpolatorFilterReader = new InterpolatorFilterReader( reader, + mavenProjectInterpolator ); + interpolatorFilterReader.setInterpolateWithPrefixPattern( false ); + interpolatorFilterReader.setEscapeString( escapeString ); + return interpolatorFilterReader; } }; defaultFilterWrappers.add( third ); @@ -186,11 +220,17 @@ { public Reader getReader( Reader reader ) { - RegexBasedInterpolator mavenProjectInterpolator = new RegexBasedInterpolator( "\\@", "(.+?)\\@" ); - mavenProjectInterpolator.setReusePatterns( true ); + StringSearchInterpolator mavenProjectInterpolator = new StringSearchInterpolator( "@", "@" ); ValueSource valueSource = new MavenProjectValueSource( mavenProject, escapedBackslashesInFilePath ); mavenProjectInterpolator.addValueSource( valueSource ); - return new InterpolatorFilterReader( reader, mavenProjectInterpolator, "@", "@" ); + mavenProjectInterpolator.setEscapeString( escapeString ); + InterpolatorFilterReader interpolatorFilterReader = new InterpolatorFilterReader( + reader, + mavenProjectInterpolator, + "@", "@" ); + interpolatorFilterReader.setInterpolateWithPrefixPattern( false ); + interpolatorFilterReader.setEscapeString( escapeString ); + return interpolatorFilterReader; } }; defaultFilterWrappers.add( fourth ); Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java?rev=693721&r1=693720&r2=693721&view=diff ============================================================================== --- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java (original) +++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java Wed Sep 10 00:46:29 2008 @@ -154,7 +154,7 @@ filterWrappers.addAll( mavenFileFilter.getDefaultFilterWrappers( mavenResourcesExecution.getMavenProject(), mavenResourcesExecution.getFileFilters(), true, mavenResourcesExecution - .getMavenSession() ) ); + .getMavenSession(), mavenResourcesExecution ) ); mavenResourcesExecution.setFilterWrappers( filterWrappers ); } Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java?rev=693721&r1=693720&r2=693721&view=diff ============================================================================== --- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java (original) +++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java Wed Sep 10 00:46:29 2008 @@ -65,8 +65,10 @@ * <li>interpolate with token ${} and values from sysProps, project.properties, filters and project filters.</li> * <li>interpolate with token @ @ and values from sysProps, project.properties, filters and project filters.</li> * <li>interpolate with token ${} and values from mavenProject interpolation.</li> + * <li>interpolation with token @ @ and values from mavenProject interpolation</li> * </ul> - * + * <b>default escape characters will be \</b> + * @deprecated use [EMAIL PROTECTED] #getDefaultFilterWrappers(MavenProject, List, boolean, MavenSession, MavenResourcesExecution)} * @param mavenProject * @param filters [EMAIL PROTECTED] List} of properties file * @@ -76,4 +78,18 @@ List getDefaultFilterWrappers( MavenProject mavenProject, List filters, boolean escapedBackslashesInFilePath, MavenSession mavenSession ) throws MavenFilteringException; + + /** + * @since 1.0-beta-2 + * @param mavenProject + * @param filters + * @param escapedBackslashesInFilePath + * @param mavenSession + * @param mavenResourcesExecution + * @return + * @throws MavenFilteringException + */ + List getDefaultFilterWrappers( MavenProject mavenProject, List filters, boolean escapedBackslashesInFilePath, + MavenSession mavenSession, MavenResourcesExecution mavenResourcesExecution ) + throws MavenFilteringException; } Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenProjectValueSource.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenProjectValueSource.java?rev=693721&r1=693720&r2=693721&view=diff ============================================================================== --- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenProjectValueSource.java (original) +++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenProjectValueSource.java Wed Sep 10 00:46:29 2008 @@ -20,6 +20,8 @@ */ import java.io.File; +import java.util.Collections; +import java.util.List; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.interpolation.ValueSource; @@ -114,4 +116,15 @@ // we use default values here return ( key.startsWith( "project." ) || key.startsWith( "pom." ) ); } + + public void clearFeedback() + { + // nothing here + } + + public List getFeedback() + { + // nothing here only NPE free + return Collections.EMPTY_LIST; + } } Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java?rev=693721&r1=693720&r2=693721&view=diff ============================================================================== --- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java (original) +++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java Wed Sep 10 00:46:29 2008 @@ -41,6 +41,8 @@ public class MavenResourcesExecution { + public static final String DEFAULT_ESCAPE_STRING = "\\"; + /** @see org.apache.maven.model.Resource */ private List resources; @@ -69,6 +71,12 @@ */ private List projectStartExpressions = new ArrayList(); + /** + * String which will escape interpolation mechanism : foo \${foo.bar} -> foo ${foo.bar} + * by default it will be [EMAIL PROTECTED] #DEFAULT_ESCAPE_STRING} + */ + private String escapeString = DEFAULT_ESCAPE_STRING; + public MavenResourcesExecution() { @@ -293,5 +301,15 @@ { this.projectStartExpressions = projectStartExpressions; } + + public String getEscapeString() + { + return escapeString; + } + + public void setEscapeString( String escapeString ) + { + this.escapeString = escapeString; + } } Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/PropertiesEscapingBackSlashValueSource.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/PropertiesEscapingBackSlashValueSource.java?rev=693721&r1=693720&r2=693721&view=diff ============================================================================== --- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/PropertiesEscapingBackSlashValueSource.java (original) +++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/PropertiesEscapingBackSlashValueSource.java Wed Sep 10 00:46:29 2008 @@ -19,6 +19,8 @@ * under the License. */ +import java.util.Collections; +import java.util.List; import java.util.Properties; import org.codehaus.plexus.interpolation.ValueSource; @@ -52,5 +54,16 @@ String value = properties.getProperty( expression ); return escapedBackslashesInFilePath ? FilteringUtils.escapeWindowsPath( value ) : value; } + + public void clearFeedback() + { + // nothing here + } + + public List getFeedback() + { + // nothing here only NPE free + return Collections.EMPTY_LIST; + } } Modified: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java?rev=693721&r1=693720&r2=693721&view=diff ============================================================================== --- maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java (original) +++ maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java Wed Sep 10 00:46:29 2008 @@ -158,6 +158,9 @@ assertEquals( System.getProperty( "user.dir" ), result.getProperty( "userDir" ) ); assertEquals( System.getProperty( "java.version" ), result.getProperty( "javaVersion" ) ); + assertEquals("${java.version}", result.getProperty( "escapeJavaVersion" )); + assertEquals("@user.dir@", result.getProperty( "escapeuserDir" )); + assertEquals( baseDir.toString(), result.get( "base" ) ); assertEquals( new File( baseDir.toString() ).getPath(), new File( result.getProperty( "base" ) ).getPath() ); Modified: maven/shared/trunk/maven-filtering/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt?rev=693721&r1=693720&r2=693721&view=diff ============================================================================== --- maven/shared/trunk/maven-filtering/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt (original) +++ maven/shared/trunk/maven-filtering/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt Wed Sep 10 00:46:29 2008 @@ -26,4 +26,7 @@ emptyexpression2=${} javaVersion=${java.version} [EMAIL PROTECTED]@ -fooVersion=${foo.version} \ No newline at end of file +fooVersion=${foo.version} + +escapeJavaVersion=\${java.version} [EMAIL PROTECTED]@ \ No newline at end of file