Author: olamy
Date: Thu Jan 31 15:48:31 2008
New Revision: 617299

URL: http://svn.apache.org/viewvc?rev=617299&view=rev
Log:
add project filter files in the value interpolation Map
add a hack for interpolation on file for windows


Modified:
    
maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
    
maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java
    
maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/ReflectionProperties.java
    
maven/sandbox/trunk/shared/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
    
maven/sandbox/trunk/shared/maven-filtering/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java
    
maven/sandbox/trunk/shared/maven-filtering/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt

Modified: 
maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java?rev=617299&r1=617298&r2=617299&view=diff
==============================================================================
--- 
maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
 (original)
+++ 
maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
 Thu Jan 31 15:48:31 2008
@@ -42,7 +42,7 @@
 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 @@
                 }
             }
         }
+        
+        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 @@
                 return new InterpolationFilterReader( reader, 
reflectionProperties, "${", "}" );
             }
         };
+        
         defaultFilterWrappers.add( third );
 
         return defaultFilterWrappers;

Modified: 
maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java?rev=617299&r1=617298&r2=617299&view=diff
==============================================================================
--- 
maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java
 (original)
+++ 
maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java
 Thu Jan 31 15:48:31 2008
@@ -62,8 +62,8 @@
      * 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>
      * 

Modified: 
maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/ReflectionProperties.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/ReflectionProperties.java?rev=617299&r1=617298&r2=617299&view=diff
==============================================================================
--- 
maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/ReflectionProperties.java
 (original)
+++ 
maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/ReflectionProperties.java
 Thu Jan 31 15:48:31 2008
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import java.io.File;
 import java.util.AbstractMap;
 import java.util.Set;
 
@@ -58,24 +59,37 @@
         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;
     }

Modified: 
maven/sandbox/trunk/shared/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java?rev=617299&r1=617298&r2=617299&view=diff
==============================================================================
--- 
maven/sandbox/trunk/shared/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
 (original)
+++ 
maven/sandbox/trunk/shared/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
 Thu Jan 31 15:48:31 2008
@@ -24,7 +24,6 @@
 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 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 @@
         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" );
 

Modified: 
maven/sandbox/trunk/shared/maven-filtering/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-filtering/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java?rev=617299&r1=617298&r2=617299&view=diff
==============================================================================
--- 
maven/sandbox/trunk/shared/maven-filtering/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java
 (original)
+++ 
maven/sandbox/trunk/shared/maven-filtering/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java
 Thu Jan 31 15:48:31 2008
@@ -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 @@
     extends MavenProject
 {
     private Properties properties;
+    
+    private File basedir;
 
+    protected StubMavenProject (File basedir)
+    {
+        this.basedir = basedir;
+    }
+    
     public Properties getProperties()
     {
         return this.properties;
@@ -40,6 +48,11 @@
     public void setProperties( Properties properties )
     {
         this.properties = properties;
+    }
+
+    public File getBasedir()
+    {
+        return basedir;
     }
 
 

Modified: 
maven/sandbox/trunk/shared/maven-filtering/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-filtering/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt?rev=617299&r1=617298&r2=617299&view=diff
==============================================================================
--- 
maven/sandbox/trunk/shared/maven-filtering/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt
 (original)
+++ 
maven/sandbox/trunk/shared/maven-filtering/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt
 Thu Jan 31 15:48:31 2008
@@ -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