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


Reply via email to