This is an automated email from the ASF dual-hosted git repository.

hboutemy pushed a commit to annotated tag maven-filtering-1.0-alpha-1
in repository https://gitbox.apache.org/repos/asf/maven-filtering.git

commit 47ed5a14ed0ec7de0cfae1d399009bdf689d819e
Author: Oliver Lamy <[email protected]>
AuthorDate: Mon Jul 21 23:25:27 2008 +0000

    use plexus-interpolation in the maven-filtering component
    
    
    
    git-svn-id: 
https://svn.apache.org/repos/asf/maven/sandbox/trunk/shared/maven-filtering@678595
 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                            | 20 +++++++
 .../maven/shared/filtering/CompositeMap.java       |  2 +-
 .../shared/filtering/DefaultMavenFileFilter.java   | 43 +++++++++++---
 .../maven/shared/filtering/FilteringUtils.java     | 54 +++++++++++++++++
 .../maven/shared/filtering/MavenFileFilter.java    |  3 +-
 ...roperties.java => MavenProjectValueSource.java} | 39 ++++--------
 .../shared/filtering/MavenResourcesExecution.java  | 69 ++++++++++++++++++++++
 .../PropertiesEscapingBackSlahValueSource.java     | 57 ++++++++++++++++++
 src/site/apt/index.apt                             |  2 +
 src/site/apt/usage.apt                             | 21 ++++---
 .../DefaultMavenResourcesFilteringTest.java        | 28 +++------
 .../shared/filtering/TestReflectionProperties.java |  4 --
 .../maven-resources-filtering.txt                  |  1 +
 13 files changed, 277 insertions(+), 66 deletions(-)

diff --git a/pom.xml b/pom.xml
index 0490ed7..e1180d0 100755
--- a/pom.xml
+++ b/pom.xml
@@ -76,6 +76,26 @@
       <artifactId>plexus-utils</artifactId>
       <version>1.4.9</version>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-interpolation</artifactId>
+      <version>1.2-SNAPSHOT</version>
+    </dependency>
   </dependencies>
 
+  <!-- remove when plexus-interpolation 1.2 is released -->
+  <repositories>
+    <repository>
+      <id>snapshots.codehaus.org</id>
+      <name>Codehaus Snapshot Development Repository</name>
+      <url>http://snapshots.repository.codehaus.org/</url>
+      <releases>
+        <enabled>false</enabled>
+      </releases>
+      <snapshots>
+        <enabled>true</enabled>
+      </snapshots>
+    </repository>
+  </repositories>
+  
 </project>
diff --git a/src/main/java/org/apache/maven/shared/filtering/CompositeMap.java 
b/src/main/java/org/apache/maven/shared/filtering/CompositeMap.java
index 337a7bc..6be53de 100755
--- a/src/main/java/org/apache/maven/shared/filtering/CompositeMap.java
+++ b/src/main/java/org/apache/maven/shared/filtering/CompositeMap.java
@@ -42,7 +42,7 @@ public class CompositeMap
     private boolean systemPropertiesFirst;
 
     /**
-     * Ca
+     * 
      * @param maps
      * @throws IOException if getting envvars failed
      */
diff --git 
a/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java 
b/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
index 6956468..cc5e4db 100755
--- 
a/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
+++ 
b/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
@@ -30,8 +30,11 @@ import java.util.Properties;
 
 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.ValueSource;
 import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.InterpolationFilterReader;
 import org.codehaus.plexus.util.StringUtils;
 
 /**
@@ -123,12 +126,19 @@ public class DefaultMavenFileFilter
         
         List defaultFilterWrappers = new ArrayList( 3 );
 
+        final ValueSource propertiesValueSource = new 
PropertiesEscapingBackSlahValueSource(
+                                                                               
              escapedBackslashesInFilePath,
+                                                                               
              filterProperties );
+        
         // support ${token}
+
         FileUtils.FilterWrapper one = new FileUtils.FilterWrapper()
         {
             public Reader getReader( Reader reader )
             {
-                return new InterpolationFilterReader( reader, 
filterProperties, "${", "}" );
+                Interpolator propertiesInterpolator = new 
RegexBasedInterpolator();
+                propertiesInterpolator.addValueSource( propertiesValueSource  
);                
+                return new InterpolatorFilterReader( reader, 
propertiesInterpolator );
             }
         };
         defaultFilterWrappers.add( one );
@@ -138,22 +148,41 @@ public class DefaultMavenFileFilter
         {
             public Reader getReader( Reader reader )
             {
-                return new InterpolationFilterReader( reader, 
filterProperties, "@", "@" );
+                final Interpolator propertiesInterpolatorAtRegex = new 
RegexBasedInterpolator("\\@", "(.+?)\\@");
+                propertiesInterpolatorAtRegex.addValueSource( 
propertiesValueSource );                
+                return new InterpolatorFilterReader( reader, 
propertiesInterpolatorAtRegex, "@", "@" );
             }
         };
         defaultFilterWrappers.add( second );
+        
         // support ${token} with mavenProject reflection
         FileUtils.FilterWrapper third = new FileUtils.FilterWrapper()
         {
             public Reader getReader( Reader reader )
             {
-                ReflectionProperties reflectionProperties = new 
ReflectionProperties( mavenProject,
-                                                                               
       escapedBackslashesInFilePath );
-                return new InterpolationFilterReader( reader, 
reflectionProperties, "${", "}" );
+                Interpolator mavenProjectInterpolator = new 
RegexBasedInterpolator();
+                 
+                ValueSource valueSource = new MavenProjectValueSource( 
mavenProject, escapedBackslashesInFilePath );
+                mavenProjectInterpolator.addValueSource( valueSource );
+                return new InterpolatorFilterReader( reader, 
mavenProjectInterpolator );
             }
         };
-
         defaultFilterWrappers.add( third );
+        
+        // support @token@ with mavenProject reflection
+        FileUtils.FilterWrapper fourth = new FileUtils.FilterWrapper()
+        {
+            public Reader getReader( Reader reader )
+            {
+                Interpolator mavenProjectInterpolator = new 
RegexBasedInterpolator("\\@", "(.+?)\\@");
+                 
+                ValueSource valueSource = new MavenProjectValueSource( 
mavenProject, escapedBackslashesInFilePath );
+                mavenProjectInterpolator.addValueSource( valueSource );
+                return new InterpolatorFilterReader( reader, 
mavenProjectInterpolator, "@", "@" );
+            }
+        };        
+
+        defaultFilterWrappers.add( fourth );
 
         return defaultFilterWrappers;
     }
diff --git 
a/src/main/java/org/apache/maven/shared/filtering/FilteringUtils.java 
b/src/main/java/org/apache/maven/shared/filtering/FilteringUtils.java
new file mode 100755
index 0000000..f28fc87
--- /dev/null
+++ b/src/main/java/org/apache/maven/shared/filtering/FilteringUtils.java
@@ -0,0 +1,54 @@
+package org.apache.maven.shared.filtering;
+
+import org.codehaus.plexus.util.StringUtils;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * @author <a href="mailto:[email protected]";>olamy</a>
+ * @since 21 juil. 2008
+ * @version $Id$
+ */
+public class FilteringUtils
+{
+
+    /**
+     * 
+     */
+    private FilteringUtils()
+    {
+        // nothing just an util class
+    }
+    
+    public static final String escapeWindowsPath( String val )
+    {
+        if ( !StringUtils.isEmpty( val ) )
+        {
+            // Check if it's a windows path
+            if ( val.indexOf( ":\\" ) == 1 )
+            {
+                val = StringUtils.replace( (String) val, "\\", "\\\\" );
+                val = StringUtils.replace( (String) val, ":", "\\:" );
+            }
+        }
+        return val;
+    }
+
+}
diff --git 
a/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java 
b/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java
index d9638c2..1620159 100755
--- a/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java
+++ b/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java
@@ -74,6 +74,7 @@ public interface MavenFileFilter
      * @return {@link List} of FileUtils.FilterWrapper 
      * 
      */
-    List getDefaultFilterWrappers( MavenProject mavenProject, List filters, 
boolean escapedBackslashesInFilePath, MavenSession mavenSession )
+    List getDefaultFilterWrappers( MavenProject mavenProject, List filters, 
boolean escapedBackslashesInFilePath,
+                                   MavenSession mavenSession )
         throws MavenFilteringException;
 }
diff --git 
a/src/main/java/org/apache/maven/shared/filtering/ReflectionProperties.java 
b/src/main/java/org/apache/maven/shared/filtering/MavenProjectValueSource.java
similarity index 64%
rename from 
src/main/java/org/apache/maven/shared/filtering/ReflectionProperties.java
rename to 
src/main/java/org/apache/maven/shared/filtering/MavenProjectValueSource.java
index dd35a46..1fde88a 100755
--- a/src/main/java/org/apache/maven/shared/filtering/ReflectionProperties.java
+++ 
b/src/main/java/org/apache/maven/shared/filtering/MavenProjectValueSource.java
@@ -20,32 +20,32 @@ package org.apache.maven.shared.filtering;
  */
 
 import java.io.File;
-import java.util.AbstractMap;
-import java.util.Set;
 
 import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.interpolation.ValueSource;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.introspection.ReflectionValueExtractor;
 
 
 /**
  * @author Andreas Hoheneder (ahoh_at_inode.at)
+ * @author <a href="mailto:[email protected]";>olamy</a>
  * @version $Id$
  */
-public class ReflectionProperties
-    extends AbstractMap
+public class MavenProjectValueSource
+    implements ValueSource
 {
 
     private MavenProject project;
 
     private boolean escapedBackslashesInFilePath;
 
-    public ReflectionProperties( MavenProject mavenProject  ) 
+    public MavenProjectValueSource( MavenProject mavenProject  ) 
     {
        this( mavenProject, false );
     }    
     
-    public ReflectionProperties( MavenProject mavenProject, boolean 
escapedBackslashesInFilePath ) 
+    public MavenProjectValueSource( MavenProject mavenProject, boolean 
escapedBackslashesInFilePath ) 
     {
        super();
 
@@ -54,9 +54,10 @@ public class ReflectionProperties
        this.escapedBackslashesInFilePath = escapedBackslashesInFilePath;
     }
     
-    public Object get( Object key )
+
+    public Object getValue( String expression )
     {
-        if ( key == null || StringUtils.isEmpty( key.toString() ) )
+        if ( expression == null || StringUtils.isEmpty( expression.toString() 
) )
         {
             return null;
         }
@@ -64,30 +65,19 @@ public class ReflectionProperties
         Object value = null;
         try 
         {
-            value = ReflectionValueExtractor.evaluate( "" + key, project );
+            value = ReflectionValueExtractor.evaluate( "" + expression, 
project );
 
             if ( escapedBackslashesInFilePath && value != null
                 && "java.lang.String".equals( value.getClass().getName() ) )
             {
                 String val = (String) value;
-
-                // Check if it's a windows path
-                if ( val.indexOf( ":\\" ) == 1 )
-                {
-                    value = StringUtils.replace( (String) value, "\\", "\\\\" 
);
-                    value = StringUtils.replace( (String) value, ":", "\\:" );
-                }
+                value = FilteringUtils.escapeWindowsPath( val );
             }
             else if ( escapedBackslashesInFilePath && value != null
                 && File.class.getName().equals( value.getClass().getName() ) )
             {
                 String val = ( (File) value ).getPath();
-                // Check if it's a windows path
-                if ( val.indexOf( ":\\" ) == 1 )
-                {
-                    value = StringUtils.replace( (String) val, "\\", "\\\\" );
-                    value = StringUtils.replace( (String) value, ":", "\\:" );
-                }
+                value = FilteringUtils.escapeWindowsPath( val );
             }
             
         }
@@ -96,10 +86,5 @@ public class ReflectionProperties
             //TODO: remove the try-catch block when 
ReflectionValueExtractor.evaluate() throws no more exceptions
         } 
         return value;
-    }
-    
-    public Set entrySet()
-    {
-        throw new UnsupportedOperationException( "Cannot enumerate properties 
in a project" );
     }    
 }
diff --git 
a/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java 
b/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java
index 330fe6f..2e5e63d 100755
--- 
a/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java
+++ 
b/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java
@@ -19,11 +19,18 @@
 package org.apache.maven.shared.filtering;
 
 import java.io.File;
+import java.io.Reader;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.model.Resource;
 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.ValueSource;
+import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.FileUtils.FilterWrapper;
 
 /**
@@ -35,6 +42,7 @@ import org.codehaus.plexus.util.FileUtils.FilterWrapper;
 public class MavenResourcesExecution
 {
 
+    /** @see Resource  */
     private List resources;
 
     private File outputDirectory;
@@ -97,11 +105,18 @@ public class MavenResourcesExecution
         this.useDefaultFilterWrappers = false;
     }
 
+    
+    /**
+     * @return List of {@link Resource}
+     */
     public List getResources()
     {
         return resources;
     }
 
+    /**
+     * @param resources List of {@link Resource}
+     */
     public void setResources( List resources )
     {
         this.resources = resources;
@@ -117,6 +132,9 @@ public class MavenResourcesExecution
         this.outputDirectory = outputDirectory;
     }
 
+    /**
+     * @return can be null
+     */
     public MavenProject getMavenProject()
     {
         return mavenProject;
@@ -137,21 +155,33 @@ public class MavenResourcesExecution
         this.encoding = encoding;
     }
 
+    /**
+     * @return List of {@link String} which are properties file
+     */
     public List getFileFilters()
     {
         return fileFilters;
     }
 
+    /**
+     * @param fileFilters List of {@link String} which are properties file
+     */
     public void setFileFilters( List fileFilters )
     {
         this.fileFilters = fileFilters;
     }
 
+    /**
+     * @return List of {@link String} file extensions to not filtering
+     */
     public List getNonFilteredFileExtensions()
     {
         return nonFilteredFileExtensions;
     }
 
+    /**
+     * @param nonFilteredFileExtensions List of {@link String} file extensions 
to not filtering
+     */
     public void setNonFilteredFileExtensions( List nonFilteredFileExtensions )
     {
         this.nonFilteredFileExtensions = nonFilteredFileExtensions;
@@ -167,11 +197,17 @@ public class MavenResourcesExecution
         this.mavenSession = mavenSession;
     }
 
+    /**
+     * @return List of {@link FilterWrapper}
+     */
     public List getFilterWrappers()
     {
         return filterWrappers;
     }
 
+    /**
+     * @param interpolators List of {@link FilterWrapper}
+     */
     public void setFilterWrappers( List filterWrappers )
     {
         this.filterWrappers = filterWrappers;
@@ -185,7 +221,40 @@ public class MavenResourcesExecution
         }
         this.filterWrappers.add( filterWrapper );
     }
+    
+    /**
+     * Helper to add {@link FilterWrapper}, will {@link 
RegexBasedInterpolator} with default regex Exp ${ } 
+     * and InterpolatorFilterReader with defaultTokens ${ }
+     * @param valueSource 
+     */
+    public void addFilerWrapper( final ValueSource valueSource )
+    {
+        addFilterWrapper( new FileUtils.FilterWrapper()
+        {
+            public Reader getReader( Reader reader )
+            {
+                Interpolator propertiesInterpolator = new 
RegexBasedInterpolator();
+                propertiesInterpolator.addValueSource( valueSource );
+                return new InterpolatorFilterReader( reader, 
propertiesInterpolator );
+            }
+        } );
+    }
 
+    public void addFilerWrapper( final ValueSource valueSource, final String 
startRegExp, final String endRegExp,
+                                 final String startToken, final String 
endToken )
+    {
+        addFilterWrapper( new FileUtils.FilterWrapper()
+        {
+            public Reader getReader( Reader reader )
+            {
+                Interpolator propertiesInterpolator = new 
RegexBasedInterpolator( startRegExp, endRegExp );
+                propertiesInterpolator.addValueSource( valueSource );
+                return new InterpolatorFilterReader( reader, 
propertiesInterpolator, startToken, endToken );
+            }
+        } );
+    }    
+    
+    
     public File getResourcesBaseDirectory()
     {
         return resourcesBaseDirectory;
diff --git 
a/src/main/java/org/apache/maven/shared/filtering/PropertiesEscapingBackSlahValueSource.java
 
b/src/main/java/org/apache/maven/shared/filtering/PropertiesEscapingBackSlahValueSource.java
new file mode 100755
index 0000000..bc98355
--- /dev/null
+++ 
b/src/main/java/org/apache/maven/shared/filtering/PropertiesEscapingBackSlahValueSource.java
@@ -0,0 +1,57 @@
+package org.apache.maven.shared.filtering;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.Properties;
+
+import org.codehaus.plexus.interpolation.ValueSource;
+
+/**
+ * @author <a href="mailto:[email protected]";>olamy</a>
+ * @since 21 juil. 2008
+ * @version $Id$
+ */
+public class PropertiesEscapingBackSlahValueSource
+    implements ValueSource
+{
+
+    private boolean escapedBackslashesInFilePath;
+    
+    private Properties properties;
+    
+    /**
+     * 
+     */
+    public PropertiesEscapingBackSlahValueSource(boolean 
escapedBackslashesInFilePath, Properties properties)
+    {
+        this.escapedBackslashesInFilePath = escapedBackslashesInFilePath;
+        this.properties = properties == null ? new Properties() : properties;
+    }
+
+    /** 
+     * @see 
org.codehaus.plexus.interpolation.ValueSource#getValue(java.lang.String)
+     */
+    public Object getValue( String expression )
+    {
+        String value = properties.getProperty( expression );
+        return escapedBackslashesInFilePath ? 
FilteringUtils.escapeWindowsPath( value ) : value;
+    }
+
+}
diff --git a/src/site/apt/index.apt b/src/site/apt/index.apt
index aa4fdf3..c574195 100755
--- a/src/site/apt/index.apt
+++ b/src/site/apt/index.apt
@@ -48,6 +48,8 @@ Maven Filtering Component
     
     * interpolation with token $\{ \} and values from mavenProject 
interpolation
     
+    * interpolation with token @ @ and values from mavenProject interpolation
+    
     []
     
     The values (Properties object) used for interpolation are loaded with the 
following order :
diff --git a/src/site/apt/usage.apt b/src/site/apt/usage.apt
index 8c6a0bc..740381f 100755
--- a/src/site/apt/usage.apt
+++ b/src/site/apt/usage.apt
@@ -3,7 +3,7 @@
  ------
  Olivier Lamy
  ------
- 2008-02-18
+ 2008-07-21
  ------
 
  ~~ Licensed to the Apache Software Foundation (ASF) under one
@@ -68,6 +68,7 @@ mavenResourcesFiltering.filterResources( 
mavenResourcesExecution );
 
   You must use the other methods from the MavenResourcesFiltering component 
and construct your own List of FilterWrapper.
   The following example add the interpolation for the Token @ @ with using 
values coming from reflection with the Maven Project.
+  NOTE : the component maven-filtering use the plexus-interpolation component
 
 +-----+
 
@@ -75,16 +76,22 @@ Create your FilterWrapper.
 
 FileUtils.FilterWrapper filterWrapper = new FileUtils.FilterWrapper()
 {
-    public Reader getReader( Reader reader )
-    {
-        ReflectionProperties reflectionProperties = new ReflectionProperties( 
mavenProject, true );
-        return new InterpolationFilterReader( reader, reflectionProperties, 
"@", "@" );
-    }
+  public Reader getReader( Reader reader )
+  {
+      Interpolator propertiesInterpolator = new RegexBasedInterpolator(  
"\\@", "(.+?)\\@" );
+      propertiesInterpolator.addValueSource( valueSource );
+      return new InterpolatorFilterReader( reader, propertiesInterpolator, 
"@", "@" );
+  }
 };
 
 Create your MavenResourcesExecution instance and add a new filterWrapper.
 
-mavenResourcesExecution.addFilterWrapper( filterWrapper ); 
+mavenResourcesExecution.addFilterWrapper( filterWrapper );
+
+Or with the helper method :
+
+mavenResourcesExecution.addFilerWrapper( new MavenProjectValueSource( 
mavenProject, true ), "\\@", "(.+?)\\@", "@", "@" );
+ 
 If the mavenResourcesExecution.useDefaultFilterWrappers is set to true default 
FilterWrapper will be added first. 
 
 here you can apply filtering on your resources.
diff --git 
a/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
 
b/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
index b1f995f..ae814b4 100755
--- 
a/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
+++ 
b/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
@@ -22,19 +22,15 @@ package org.apache.maven.shared.filtering;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
-import java.io.Reader;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Properties;
 
-import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Resource;
-import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.InterpolationFilterReader;
 
 /**
  * @author <a href="mailto:[email protected]";>olamy</a>
@@ -140,24 +136,26 @@ public class DefaultMavenResourcesFilteringTest
         throws Exception
     {
         assertEquals( 7, outputDirectory.listFiles().length );
-        Properties result = PropertyUtils.loadPropertyFile( new File( 
outputDirectory,
-                                                                      
"empty-maven-resources-filtering.txt" ), null );
+        Properties result = new Properties();
+        result.load( new FileInputStream( new File( outputDirectory, 
"empty-maven-resources-filtering.txt" ) ) );
+
         assertTrue( result.isEmpty() );
 
-        result = PropertyUtils.loadPropertyFile( new File( outputDirectory, 
"maven-resources-filtering.txt" ), null );
+        result = new Properties();
+        result.load( new FileInputStream( new File( outputDirectory, 
"maven-resources-filtering.txt" ) ) );
         assertFalse( result.isEmpty() );
 
         assertEquals( "1.0", result.get( "version" ) );
         assertEquals( "org.apache", result.get( "groupId" ) );
         assertEquals( "bar", result.get( "foo" ) );
-        // FIXME this can fail with a windows path
-        String base = result.getProperty( "base" );
 
         assertEquals( "@@", result.getProperty( "emptyexpression" ) );
         assertEquals( "${}", result.getProperty( "emptyexpression2" ) );
+        assertEquals( System.getProperty( "user.dir" ), result.getProperty( 
"userDir" ) );
         assertEquals( System.getProperty( "java.version" ), 
result.getProperty( "javaVersion" ) );
 
         assertEquals( baseDir.toString(), result.get( "base" ) );
+        assertEquals( new File( baseDir.toString() ).getPath(), new File( 
result.getProperty( "base" ) ).getPath() );
 
         File imageFile = new File( outputDirectory, "happy_duke.gif" );
         assertTrue( imageFile.exists() );
@@ -196,20 +194,12 @@ public class DefaultMavenResourcesFilteringTest
 
         List nonFilteredFileExtensions = Collections.singletonList( "gif" );
 
-        FileUtils.FilterWrapper filterWrapper = new FileUtils.FilterWrapper()
-        {
-            public Reader getReader( Reader reader )
-            {
-                ReflectionProperties reflectionProperties = new 
ReflectionProperties( mavenProject, true );
-                return new InterpolationFilterReader( reader, 
reflectionProperties, "@", "@" );
-            }
-        };
-
         MavenResourcesExecution mavenResourcesExecution = new 
MavenResourcesExecution( resources, outputDirectory,
                                                                                
        mavenProject, null, null,
                                                                                
        nonFilteredFileExtensions,
                                                                                
        new StubMavenSession() );
-        mavenResourcesExecution.addFilterWrapper( filterWrapper );
+
+        mavenResourcesExecution.addFilerWrapper( new MavenProjectValueSource( 
mavenProject, true ), "\\@", "(.+?)\\@", "@", "@" );
         mavenResourcesFiltering.filterResources( mavenResourcesExecution );
 
         Properties result = PropertyUtils
diff --git 
a/src/test/java/org/apache/maven/shared/filtering/TestReflectionProperties.java 
b/src/test/java/org/apache/maven/shared/filtering/TestReflectionProperties.java
index dc8a510..6edb40f 100755
--- 
a/src/test/java/org/apache/maven/shared/filtering/TestReflectionProperties.java
+++ 
b/src/test/java/org/apache/maven/shared/filtering/TestReflectionProperties.java
@@ -38,7 +38,6 @@ public class TestReflectionProperties
     public void testSimpleFiltering()
         throws Exception
     {
-        Properties allProperties = System.getProperties();
         FileInputStream readFileInputStream = null;
         try
         {
@@ -72,7 +71,6 @@ public class TestReflectionProperties
             {
                 readFileInputStream.close();
             }
-            System.setProperties( allProperties );
         }
 
     }
@@ -80,7 +78,6 @@ public class TestReflectionProperties
     public void testSimpleNonFiltering()
         throws Exception
     {
-        Properties allProperties = System.getProperties();
         FileInputStream readFileInputStream = null;
         try
         {
@@ -114,7 +111,6 @@ public class TestReflectionProperties
             {
                 readFileInputStream.close();
             }
-            System.setProperties( allProperties );
         }
 
     }    
diff --git 
a/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt 
b/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt
index 9065b59..15152f4 100755
--- 
a/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt
+++ 
b/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt
@@ -20,6 +20,7 @@ version=${pom.version}
 groupId=${pom.groupId}
 foo=${foo}
 none=none filtered
[email protected]@
 base=${pom.basedir}
 emptyexpression=@@
 emptyexpression2=${}

Reply via email to