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 559b83be720b9b0bed6f404f94890ce1aa06cbe6
Author: Oliver Lamy <[email protected]>
AuthorDate: Thu Jan 31 23:48:31 2008 +0000

    add project filter files in the value interpolation Map
    add a hack for interpolation on file for windows
    
    
    
    git-svn-id: 
https://svn.apache.org/repos/asf/maven/sandbox/trunk/shared/maven-filtering@617299
 13f79535-47bb-0310-9956-ffa450edef68
---
 .../shared/filtering/DefaultMavenFileFilter.java   | 42 +++++++++++++++++++++-
 .../maven/shared/filtering/MavenFileFilter.java    |  4 +--
 .../shared/filtering/ReflectionProperties.java     | 24 ++++++++++---
 .../DefaultMavenResourcesFilteringTest.java        | 10 +++---
 .../maven/shared/filtering/StubMavenProject.java   | 13 +++++++
 .../maven-resources-filtering.txt                  |  3 +-
 6 files changed, 83 insertions(+), 13 deletions(-)

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 fe58371..0437f11 100755
--- 
a/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
+++ 
b/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
@@ -42,7 +42,7 @@ import org.codehaus.plexus.util.InterpolationFilterReader;
 public class DefaultMavenFileFilter
     implements MavenFileFilter
 {
-
+    
     /** 
      * @see 
org.apache.maven.shared.filtering.MavenFileFilter#copyFile(java.io.File, 
java.io.File, boolean, org.apache.maven.project.MavenProject, java.util.List)
      */
@@ -119,7 +119,46 @@ public class DefaultMavenFileFilter
                 }
             }
         }
+        
+        List buildFilters = mavenProject.getFilters();
+        if (buildFilters != null)
+        {
+            for (Iterator iterator = 
buildFilters.iterator();iterator.hasNext();)
+            {
+                String filterFile = (String) iterator.next();
+                try
+                {
+
+                    Properties properties = PropertyUtils.loadPropertyFile( 
new File( filterFile ), baseProps );
+                    filterProperties.putAll( properties );
+                }
+                catch ( IOException e )
+                {
+                    throw new MavenFilteringException( "Error loading property 
file '" + filterFile + "'", e );
+                }
+            }
+        }        
+        
+        buildFilters = mavenProject.getBuild().getFilters();
+        if (buildFilters != null)
+        {
+            for (Iterator iterator = 
buildFilters.iterator();iterator.hasNext();)
+            {
+                String filterFile = (String) iterator.next();
+                try
+                {
+
+                    Properties properties = PropertyUtils.loadPropertyFile( 
new File( filterFile ), baseProps );
+                    filterProperties.putAll( properties );
+                }
+                catch ( IOException e )
+                {
+                    throw new MavenFilteringException( "Error loading property 
file '" + filterFile + "'", e );
+                }
+            }
+        }
 
+       
         List defaultFilterWrappers = new ArrayList( 3 );
 
         // support ${token}
@@ -151,6 +190,7 @@ public class DefaultMavenFileFilter
                 return new InterpolationFilterReader( reader, 
reflectionProperties, "${", "}" );
             }
         };
+        
         defaultFilterWrappers.add( third );
 
         return defaultFilterWrappers;
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 a0c29ac..ea8a452 100755
--- a/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java
+++ b/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java
@@ -62,8 +62,8 @@ public interface MavenFileFilter
      * Will return the default FileUtils.FilterWrappers
      * 
      * <ul>
-     *   <li>interpolation with token ${ } and values from 
System.getProperties, project.getProperties and from filters.</li>
-     *   <li>interpolation with token @ @ and values from 
System.getProperties, project.getProperties and from filters.</li>
+     *   <li>interpolation with token ${ } and values from 
System.getProperties, project.getProperties, from filters and project 
filters.</li>
+     *   <li>interpolation with token @ @ and values from 
System.getProperties, project.getProperties, from filters and project 
filters.</li>
      *   <li>interpolation with token ${ } and values from mavenProject 
interpolation.</li>
      * </ul>
      * 
diff --git 
a/src/main/java/org/apache/maven/shared/filtering/ReflectionProperties.java 
b/src/main/java/org/apache/maven/shared/filtering/ReflectionProperties.java
index a6d9ef9..f398658 100755
--- a/src/main/java/org/apache/maven/shared/filtering/ReflectionProperties.java
+++ b/src/main/java/org/apache/maven/shared/filtering/ReflectionProperties.java
@@ -19,6 +19,7 @@ package org.apache.maven.shared.filtering;
  * under the License.
  */
 
+import java.io.File;
 import java.util.AbstractMap;
 import java.util.Set;
 
@@ -58,24 +59,37 @@ public class ReflectionProperties
         Object value = null;
         try 
         {
-            value = ReflectionValueExtractor.evaluate( "" + key , project );
+            value = ReflectionValueExtractor.evaluate( "" + key, project );
 
-            if ( escapedBackslashesInFilePath && value != null &&
-                "java.lang.String".equals( value.getClass().getName() ) )
+            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 = StringUtils.replace( (String) value, "\\", "\\\\" 
);
+                    value = StringUtils.replace( (String) value, ":", "\\:" );
                 }
             }
+            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, ":", "\\:" );
+                }
+            }
+            
         }
         catch ( Exception e ) 
         {
             //TODO: remove the try-catch block when 
ReflectionValueExtractor.evaluate() throws no more exceptions
+            e.printStackTrace();
         } 
         return value;
     }
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 aacc834..10741e9 100755
--- 
a/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
+++ 
b/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
@@ -24,7 +24,6 @@ import java.util.List;
 import java.util.Properties;
 
 import org.apache.maven.model.Resource;
-import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.util.FileUtils;
 
@@ -55,12 +54,12 @@ public class DefaultMavenResourcesFilteringTest
     public void testSimpleFiltering()
         throws Exception
     {
-        StubMavenProject mavenProject = new StubMavenProject();
+        StubMavenProject mavenProject = new StubMavenProject( new File( 
getBasedir() ) );
         mavenProject.setVersion( "1.0" );
         mavenProject.setGroupId( "org.apache" );
 
         Properties projectProperties = new Properties();
-        projectProperties.put( "foo", "bar" );        
+        projectProperties.put( "foo", "bar" );     
         mavenProject.setProperties( projectProperties );
         MavenResourcesFiltering mavenResourcesFiltering = 
(MavenResourcesFiltering) lookup( MavenResourcesFiltering.class
             .getName() );
@@ -82,12 +81,15 @@ public class DefaultMavenResourcesFilteringTest
         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(getBasedir(), base);
     }
     
     public void testNoFiltering()
         throws Exception
     {
-        StubMavenProject mavenProject = new StubMavenProject();
+        StubMavenProject mavenProject = new StubMavenProject( new File( 
getBasedir() ) );
         mavenProject.setVersion( "1.0" );
         mavenProject.setGroupId( "org.apache" );
 
diff --git 
a/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java 
b/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java
index b7ce5ab..2e3262c 100755
--- a/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java
+++ b/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java
@@ -18,6 +18,7 @@
  */
 package org.apache.maven.shared.filtering;
 
+import java.io.File;
 import java.util.Properties;
 
 import org.apache.maven.project.MavenProject;
@@ -31,7 +32,14 @@ public class StubMavenProject
     extends MavenProject
 {
     private Properties properties;
+    
+    private File basedir;
 
+    protected StubMavenProject (File basedir)
+    {
+        this.basedir = basedir;
+    }
+    
     public Properties getProperties()
     {
         return this.properties;
@@ -42,5 +50,10 @@ public class StubMavenProject
         this.properties = properties;
     }
 
+    public File getBasedir()
+    {
+        return basedir;
+    }
+
 
 }
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 022a0a0..d5b56d1 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
@@ -19,4 +19,5 @@
 version=${pom.version}
 groupId=${pom.groupId}
 foo=${foo}
-none=none filtered
\ No newline at end of file
+none=none filtered
+base=${pom.basedir}
\ No newline at end of file

Reply via email to