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
