Author: olamy Date: Fri Feb 15 14:07:04 2008 New Revision: 628188 URL: http://svn.apache.org/viewvc?rev=628188&view=rev Log: add a parameter to pass a list of file extensions to not filtering
Added: maven/sandbox/trunk/shared/maven-filtering/src/test/units-files/maven-resources-filtering/happy_duke.gif (with props) 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/DefaultMavenResourcesFiltering.java maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesFiltering.java maven/sandbox/trunk/shared/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java 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=628188&r1=628187&r2=628188&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 Fri Feb 15 14:07:04 2008 @@ -98,16 +98,15 @@ { 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 ); } } } Modified: maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java?rev=628188&r1=628187&r2=628188&view=diff ============================================================================== --- maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java (original) +++ maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java Fri Feb 15 14:07:04 2008 @@ -27,6 +27,7 @@ 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 @@ 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 @@ String targetPath = resource.getTargetPath(); File resourceDirectory = new File( resource.getDirectory() ); + if ( !resourceDirectory.isAbsolute() ) { resourceDirectory = new File( resourcesBaseDirectory, resourceDirectory.getPath() ); @@ -111,7 +115,7 @@ scanner.scan(); List includedFiles = Arrays.asList( scanner.getIncludedFiles() ); - + for ( Iterator j = includedFiles.iterator(); j.hasNext(); ) { String name = (String) j.next(); @@ -131,12 +135,23 @@ { 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() ) ); + } } Modified: maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesFiltering.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesFiltering.java?rev=628188&r1=628187&r2=628188&view=diff ============================================================================== --- maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesFiltering.java (original) +++ maven/sandbox/trunk/shared/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesFiltering.java Fri Feb 15 14:07:04 2008 @@ -38,20 +38,23 @@ * @param mavenProject * @param encoding * @param fileFilters [EMAIL PROTECTED] List} of String which are path to a Property file + * @param nonFilteredFileExtensions [EMAIL PROTECTED] 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 [EMAIL PROTECTED] List} of [EMAIL PROTECTED] org.apache.maven.model.Resource} * @param outputDirectory parent destination directory * @param encoding * @param filterWrappers [EMAIL PROTECTED] List} of FileUtils.FilterWrapper + * @param resourcesBaseDirectory baseDirectory of resources + * @param nonFilteredFileExtensions [EMAIL PROTECTED] 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; } 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=628188&r1=628187&r2=628188&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 Fri Feb 15 14:07:04 2008 @@ -20,13 +20,17 @@ */ 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 @@ 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 @@ 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 @@ 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 @@ 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; + } + + } Added: maven/sandbox/trunk/shared/maven-filtering/src/test/units-files/maven-resources-filtering/happy_duke.gif URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-filtering/src/test/units-files/maven-resources-filtering/happy_duke.gif?rev=628188&view=auto ============================================================================== Binary file - no diff available. Propchange: maven/sandbox/trunk/shared/maven-filtering/src/test/units-files/maven-resources-filtering/happy_duke.gif ------------------------------------------------------------------------------ svn:executable = * Propchange: maven/sandbox/trunk/shared/maven-filtering/src/test/units-files/maven-resources-filtering/happy_duke.gif ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream