Author: olamy Date: Mon Feb 18 16:02:39 2008 New Revision: 628928 URL: http://svn.apache.org/viewvc?rev=628928&view=rev Log: add : - unit with adding token - test escaping windows path - usage page with code samples
Added: maven/sandbox/trunk/shared/maven-filtering/src/site/apt/usage.apt (with props) Modified: maven/sandbox/trunk/shared/maven-filtering/src/site/site.xml maven/sandbox/trunk/shared/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java maven/sandbox/trunk/shared/maven-filtering/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt Added: maven/sandbox/trunk/shared/maven-filtering/src/site/apt/usage.apt URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-filtering/src/site/apt/usage.apt?rev=628928&view=auto ============================================================================== --- maven/sandbox/trunk/shared/maven-filtering/src/site/apt/usage.apt (added) +++ maven/sandbox/trunk/shared/maven-filtering/src/site/apt/usage.apt Mon Feb 18 16:02:39 2008 @@ -0,0 +1,85 @@ + ------ + Basic Usage + ------ + Olivier Lamy + ------ + 2008-02-18 + ------ + + ~~ 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. + +Maven Filtering Component Basic Usage + +* Filtering a List of org.apache.maven.model.Resource. + + Lookup the component in your Mojo + ++-----+ + + /** + * @component role="org.apache.maven.shared.filtering.MavenResourcesFiltering" role-hint="default" + * @required + */ + private MavenResourcesFiltering mavenResourcesFiltering; + ++-----+ + + Apply filtering on your resources List (see {{{../index.html}Reference}} to see the default FilterWrappers used). + ++-----+ + +encoding can be null platform default will be used + +nonFilteredFileExtensions : is a List of String which file extensions to not apply filtering (default List contains jpg,jpeg,gif,bmp,png) + +mavenResourcesFiltering.filterResources( resources, outputDirectory, mavenProject, encoding, filtersFile, nonFilteredFileExtensions ); + ++-----+ + +* Adding new filtering Token + + 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. + ++-----+ + +MavenFileFilter mavenFileFilter = (MavenFileFilter) lookup( MavenFileFilter.class.getName(), "default" ); +List defaultFilterWrappers = mavenFileFilter.getDefaultFilterWrappers( mavenProject, null, true ); + +List filterWrappers = new ArrayList( ); +filterWrappers.addAll( defaultFilterWrappers ); +FileUtils.FilterWrapper filterWrapper = new FileUtils.FilterWrapper() +{ + public Reader getReader( Reader reader ) + { + ReflectionProperties reflectionProperties = new ReflectionProperties( mavenProject, true ); + return new InterpolationFilterReader( reader, reflectionProperties, "@", "@" ); + } +}; +filterWrappers.add( filterWrapper ); + +here you can apply filtering on your resources. + +encoding can be null platform default will be used + +nonFilteredFileExtensions : is a List of String which file extensions to not apply filtering (default List contains jpg,jpeg,gif,bmp,png) + +mavenResourcesFiltering.filterResources( resources, outputDirectory, encoding, filterWrappers, + outputDirectory, nonFilteredFileExtensions ); + ++-----+ Propchange: maven/sandbox/trunk/shared/maven-filtering/src/site/apt/usage.apt ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/sandbox/trunk/shared/maven-filtering/src/site/apt/usage.apt ------------------------------------------------------------------------------ svn:executable = * Propchange: maven/sandbox/trunk/shared/maven-filtering/src/site/apt/usage.apt ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Modified: maven/sandbox/trunk/shared/maven-filtering/src/site/site.xml URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-filtering/src/site/site.xml?rev=628928&r1=628927&r2=628928&view=diff ============================================================================== --- maven/sandbox/trunk/shared/maven-filtering/src/site/site.xml (original) +++ maven/sandbox/trunk/shared/maven-filtering/src/site/site.xml Mon Feb 18 16:02:39 2008 @@ -37,6 +37,7 @@ <body> <menu name="Overview"> <item name="Reference" href="index.html"/> + <item name="Usage" href="usage.html"/> </menu> <!-- TODO: Link, head, reports should be inherited --> <!-- TODO: use breadcrumbs more structure, links for links, and inherit subprojects as a menu or not at all --> 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=628928&r1=628927&r2=628928&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 Mon Feb 18 16:02:39 2008 @@ -22,15 +22,18 @@ 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.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> @@ -56,12 +59,15 @@ outputDirectory.mkdirs(); } + public void testSimpleFiltering() throws Exception { - StubMavenProject mavenProject = new StubMavenProject( new File( getBasedir() ) ); + File baseDir = new File( "c:\\foo\\bar" ); + StubMavenProject mavenProject = new StubMavenProject( baseDir ); mavenProject.setVersion( "1.0" ); mavenProject.setGroupId( "org.apache" ); + mavenProject.setName( "test project" ); Properties projectProperties = new Properties(); projectProperties.put( "foo", "bar" ); @@ -97,16 +103,70 @@ assertEquals("bar", result.get( "foo" )); // FIXME this can fail with a windows path String base = result.getProperty( "base" ); - assertEquals(getBasedir(), base); assertEquals( "@@", result.getProperty( "emptyexpression" ) ); assertEquals( "${}", result.getProperty( "emptyexpression2" ) ); assertEquals( "zloug", result.getProperty( "javaVersion" ) ); + assertEquals( baseDir.toString(), result.get( "base" ) ); + File imageFile = new File(outputDirectory, "happy_duke.gif"); assertTrue( imageFile.exists() ); //assertEquals( initialImageFile.length(), imageFile.length() ); assertTrue(filesAreIdentical( initialImageFile, imageFile )); + } + + public void testaddingTokens() + throws Exception + { + File baseDir = new File( "c:\\foo\\bar" ); + final StubMavenProject mavenProject = new StubMavenProject( baseDir ); + mavenProject.setVersion( "1.0" ); + mavenProject.setGroupId( "org.apache" ); + mavenProject.setName( "test project" ); + + Properties projectProperties = new Properties(); + projectProperties.put( "foo", "bar" ); + projectProperties.put( "java.version", "zloug" ); + mavenProject.setProperties( projectProperties ); + MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class + .getName() ); + + String unitFilesDir = getBasedir() + "/src/test/units-files/maven-resources-filtering"; + File initialImageFile = new File( unitFilesDir, "happy_duke.gif" ); + + Resource resource = new Resource(); + List resources = new ArrayList(); + resources.add( resource ); + resource.setDirectory( unitFilesDir ); + resource.setFiltering( true ); + + List filtersFile = new ArrayList(); + filtersFile.add( getBasedir() + + "/src/test/units-files/maven-resources-filtering/empty-maven-resources-filtering.txt" ); + + List nonFilteredFileExtensions = Collections.singletonList( "gif" ); + + MavenFileFilter mavenFileFilter = (MavenFileFilter) lookup( MavenFileFilter.class.getName(), "default" ); + List defaultFilterWrappers = mavenFileFilter.getDefaultFilterWrappers( mavenProject, null, true ); + + List filterWrappers = new ArrayList( ); + filterWrappers.addAll( defaultFilterWrappers ); + FileUtils.FilterWrapper filterWrapper = new FileUtils.FilterWrapper() + { + public Reader getReader( Reader reader ) + { + ReflectionProperties reflectionProperties = new ReflectionProperties( mavenProject, true ); + return new InterpolationFilterReader( reader, reflectionProperties, "@", "@" ); + } + }; + filterWrappers.add( filterWrapper ); + mavenResourcesFiltering.filterResources( resources, outputDirectory, null, filterWrappers, + new File( getBasedir() ), nonFilteredFileExtensions ); + + Properties result = PropertyUtils.loadPropertyFile( new File(outputDirectory, "maven-resources-filtering.txt"), null ); + assertFalse( result.isEmpty() ); + assertEquals( mavenProject.getName(), result.get( "pomName" ) ); } public void testNoFiltering() 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=628928&r1=628927&r2=628928&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 Mon Feb 18 16:02:39 2008 @@ -23,4 +23,5 @@ base=${pom.basedir} emptyexpression=@@ emptyexpression2=${} -javaVersion=${java.version} \ No newline at end of file +javaVersion=${java.version} [EMAIL PROTECTED]@ \ No newline at end of file