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 358ec19757b763643b0bc00a1acf9c65b8f4fa46 Author: Oliver Lamy <[email protected]> AuthorDate: Fri Feb 15 22:07:04 2008 +0000 add a parameter to pass a list of file extensions to not filtering git-svn-id: https://svn.apache.org/repos/asf/maven/sandbox/trunk/shared/maven-filtering@628188 13f79535-47bb-0310-9956-ffa450edef68 --- .../shared/filtering/DefaultMavenFileFilter.java | 7 +- .../filtering/DefaultMavenResourcesFiltering.java | 27 ++++++-- .../shared/filtering/MavenResourcesFiltering.java | 9 ++- .../DefaultMavenResourcesFilteringTest.java | 74 +++++++++++++++++++-- .../maven-resources-filtering/happy_duke.gif | Bin 0 -> 36092 bytes 5 files changed, 97 insertions(+), 20 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 1467c36..bf7709b 100755 --- a/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java +++ b/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java @@ -98,16 +98,15 @@ public class DefaultMavenFileFilter { for ( Iterator i = filters.iterator(); i.hasNext(); ) { - String filtersfile = (String) i.next(); + String filterfile = (String) i.next(); try { - - Properties properties = PropertyUtils.loadPropertyFile( new File( filtersfile ), baseProps ); + Properties properties = PropertyUtils.loadPropertyFile( new File( filterfile ), baseProps ); filterProperties.putAll( properties ); } catch ( IOException e ) { - throw new MavenFilteringException( "Error loading property file '" + filtersfile + "'", e ); + throw new MavenFilteringException( "Error loading property file '" + filterfile + "'", e ); } } } diff --git a/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java b/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java index 1d6aecc..8db304f 100755 --- a/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java +++ b/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java @@ -27,6 +27,7 @@ import java.util.List; import org.apache.maven.model.Resource; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.util.DirectoryScanner; +import org.codehaus.plexus.util.FileUtils; /** * @author <a href="mailto:[email protected]">olamy</a> @@ -51,15 +52,17 @@ public class DefaultMavenResourcesFiltering private MavenFileFilter mavenFileFilter; public void filterResources( List resources, File outputDirectory, MavenProject mavenProject, String encoding, - List fileFilters ) + List fileFilters, List nonFilteredFileExtensions ) throws MavenFilteringException { List filterWrappers = mavenFileFilter.getDefaultFilterWrappers( mavenProject, fileFilters, true ); - filterResources( resources, outputDirectory, encoding, filterWrappers, mavenProject.getBasedir() ); + filterResources( resources, outputDirectory, encoding, filterWrappers, mavenProject.getBasedir(), + nonFilteredFileExtensions ); } - public void filterResources( List resources, File outputDirectory, String encoding, List filterWrappers, File resourcesBaseDirectory ) + public void filterResources( List resources, File outputDirectory, String encoding, List filterWrappers, + File resourcesBaseDirectory, List nonFilteredFileExtensions ) throws MavenFilteringException { for ( Iterator i = resources.iterator(); i.hasNext(); ) @@ -69,6 +72,7 @@ public class DefaultMavenResourcesFiltering String targetPath = resource.getTargetPath(); File resourceDirectory = new File( resource.getDirectory() ); + if ( !resourceDirectory.isAbsolute() ) { resourceDirectory = new File( resourcesBaseDirectory, resourceDirectory.getPath() ); @@ -111,7 +115,7 @@ public class DefaultMavenResourcesFiltering scanner.scan(); List includedFiles = Arrays.asList( scanner.getIncludedFiles() ); - + for ( Iterator j = includedFiles.iterator(); j.hasNext(); ) { String name = (String) j.next(); @@ -131,12 +135,23 @@ public class DefaultMavenResourcesFiltering { destinationFile.getParentFile().mkdirs(); } - mavenFileFilter.copyFile( source, destinationFile, resource.isFiltering(), filterWrappers, encoding ); + boolean filteredExt = filteredFileExtension( source, nonFilteredFileExtensions ); + mavenFileFilter.copyFile( source, destinationFile, resource.isFiltering() && filteredExt, + filterWrappers, encoding ); } } - + } + private boolean filteredFileExtension(File file, List nonFilteredFileExtensions) + { + if (nonFilteredFileExtensions == null) + { + return true; + } + return !nonFilteredFileExtensions.contains( FileUtils.extension( file.getName() ) ); + } + } diff --git a/src/main/java/org/apache/maven/shared/filtering/MavenResourcesFiltering.java b/src/main/java/org/apache/maven/shared/filtering/MavenResourcesFiltering.java index 8ba557c..080c9ee 100755 --- a/src/main/java/org/apache/maven/shared/filtering/MavenResourcesFiltering.java +++ b/src/main/java/org/apache/maven/shared/filtering/MavenResourcesFiltering.java @@ -38,20 +38,23 @@ public interface MavenResourcesFiltering * @param mavenProject * @param encoding * @param fileFilters {@link List} of String which are path to a Property file + * @param nonFilteredFileExtensions {@link List} of String for non filtered file extensions * @throws MavenFilteringException */ void filterResources( List resources, File outputDirectory, MavenProject mavenProject, String encoding, - List fileFilters ) + List fileFilters, List nonFilteredFileExtensions ) throws MavenFilteringException; - /** * @param resources {@link List} of {@link org.apache.maven.model.Resource} * @param outputDirectory parent destination directory * @param encoding * @param filterWrappers {@link List} of FileUtils.FilterWrapper + * @param resourcesBaseDirectory baseDirectory of resources + * @param nonFilteredFileExtensions {@link List} of String for non filtered file extensions * @throws MavenFilteringException */ - void filterResources( List resources, File outputDirectory, String encoding, List filterWrappers, File resourcesBaseDirectory ) + void filterResources( List resources, File outputDirectory, String encoding, List filterWrappers, + File resourcesBaseDirectory, List nonFilteredFileExtensions ) throws MavenFilteringException; } 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 b956042..73e396f 100755 --- a/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java +++ b/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java @@ -20,13 +20,17 @@ package org.apache.maven.shared.filtering; */ import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Properties; import org.apache.maven.model.Resource; import org.codehaus.plexus.PlexusTestCase; import org.codehaus.plexus.util.FileUtils; +import org.codehaus.plexus.util.IOUtil; /** * @author <a href="mailto:[email protected]">olamy</a> @@ -66,14 +70,22 @@ public class DefaultMavenResourcesFilteringTest 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( getBasedir() + "/src/test/units-files/maven-resources-filtering" ); + resource.setDirectory( unitFilesDir ); resource.setFiltering( true ); - mavenResourcesFiltering.filterResources( resources, outputDirectory, mavenProject, null, null ); + + List filtersFile = new ArrayList(); + filtersFile.add( getBasedir() + "/src/test/units-files/maven-resources-filtering/empty-maven-resources-filtering.txt" ); + + List nonFilteredFileExtensions = Collections.singletonList( "gif" ); + mavenResourcesFiltering.filterResources( resources, outputDirectory, mavenProject, null, filtersFile, nonFilteredFileExtensions ); - assertEquals( 2, outputDirectory.listFiles().length ); + assertEquals( 3, outputDirectory.listFiles().length ); Properties result = PropertyUtils.loadPropertyFile( new File(outputDirectory, "empty-maven-resources-filtering.txt"), null ); assertTrue (result.isEmpty()); @@ -90,6 +102,11 @@ public class DefaultMavenResourcesFilteringTest assertEquals( "@@", result.getProperty( "emptyexpression" ) ); assertEquals( "${}", result.getProperty( "emptyexpression2" ) ); assertEquals( "zloug", result.getProperty( "javaVersion" ) ); + + File imageFile = new File(outputDirectory, "happy_duke.gif"); + assertTrue( imageFile.exists() ); + //assertEquals( initialImageFile.length(), imageFile.length() ); + assertTrue(filesAreIdentical( initialImageFile, imageFile )); } public void testNoFiltering() @@ -102,14 +119,19 @@ public class DefaultMavenResourcesFilteringTest 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( getBasedir() + "/src/test/units-files/maven-resources-filtering" ); + + resource.setDirectory( unitFilesDir ); resource.setFiltering( false ); - mavenResourcesFiltering.filterResources( resources, outputDirectory, mavenProject, null, null ); + mavenResourcesFiltering.filterResources( resources, outputDirectory, mavenProject, null, null, + Collections.EMPTY_LIST ); - assertEquals( 2, outputDirectory.listFiles().length ); + assertEquals( 3, outputDirectory.listFiles().length ); Properties result = PropertyUtils.loadPropertyFile( new File( outputDirectory, "empty-maven-resources-filtering.txt" ), null ); assertTrue( result.isEmpty() ); @@ -122,5 +144,43 @@ public class DefaultMavenResourcesFilteringTest assertEquals( "${foo}", result.get( "foo" ) ); assertEquals( "@@", result.getProperty( "emptyexpression" ) ); assertEquals( "${}", result.getProperty( "emptyexpression2" ) ); - } + File imageFile = new File(outputDirectory, "happy_duke.gif"); + assertTrue(filesAreIdentical( initialImageFile, imageFile )); + } + + public static boolean filesAreIdentical( File expected, File current ) + throws IOException + { + if ( expected.length() != current.length() ) + { + return false; + } + FileInputStream expectedIn = new FileInputStream( expected ); + FileInputStream currentIn = new FileInputStream( current ); + try + { + byte[] expectedBuffer = IOUtil.toByteArray( expectedIn ); + + byte[] currentBuffer = IOUtil.toByteArray( currentIn ); + if (expectedBuffer.length != currentBuffer.length) + { + return false; + } + for (int i = 0,size = expectedBuffer.length;i<size;i++) + { + if(expectedBuffer[i]!= currentBuffer[i]) + { + return false; + } + } + } + finally + { + expectedIn.close(); + currentIn.close(); + } + return true; + } + + } diff --git a/src/test/units-files/maven-resources-filtering/happy_duke.gif b/src/test/units-files/maven-resources-filtering/happy_duke.gif new file mode 100755 index 0000000..9784ed6 Binary files /dev/null and b/src/test/units-files/maven-resources-filtering/happy_duke.gif differ
