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


Reply via email to