Author: olamy
Date: Fri Feb 15 16:37:38 2008
New Revision: 628218

URL: http://svn.apache.org/viewvc?rev=628218&view=rev
Log:
[MWAR-145] Add a mojo parameter for file extensions which must not be filtered.

Added:
    
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/war-common/src/main/images/
    
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/war-common/src/main/images/duke-beer.jpg
   (with props)
Modified:
    maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/pom.xml
    maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/verify.bsh
    maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/war-common/pom.xml
    
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java
    
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/AbstractWarPackagingTask.java
    
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java
    
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java

Modified: maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/pom.xml?rev=628218&r1=628217&r2=628218&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/pom.xml (original)
+++ maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/pom.xml Fri Feb 15 
16:37:38 2008
@@ -32,7 +32,13 @@
       <plugins>
         <plugin>
           <artifactId>maven-war-plugin</artifactId>
-          <version>@pom.version@</version>
+          <!--version>@pom.version@</version-->
+          <version>2.1-alpha-2-SNAPSHOT</version>
+          <configuration>
+            <nonFilteredFileExtensions>
+              <nonFilteredFileExtension>jpg</nonFilteredFileExtension>
+            </nonFilteredFileExtensions>
+          </configuration>
         </plugin>
       </plugins>
     </pluginManagement>

Modified: maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/verify.bsh
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/verify.bsh?rev=628218&r1=628217&r2=628218&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/verify.bsh (original)
+++ maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/verify.bsh Fri Feb 15 
16:37:38 2008
@@ -23,8 +23,55 @@
 
 boolean result = true;
 
+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;
+}
+
 try
 {
+
+       File originalImg = new File( basedir, 
"war-common/src/main/images/duke-beer.jpg" );
+       
+       File targetImg = new File( basedir, 
"war-common/target/common-overlay-1.0-SNAPSHOT/duke-beer.jpg" );
+
+    boolean identical = filesAreIdentical( originalImg, targetImg );
+
+    if (!identical)
+    {
+        System.err.println( "filtered images are not identical in war-common." 
);
+        return false;
+    }
+
     File target = new File( basedir, "war-filter-overlay/target" );
     if ( !target.exists() || !target.isDirectory() )
     {
@@ -57,6 +104,16 @@
        return false;
     }
     
+       targetImg = new File( basedir, 
"war-filter-overlay/target/custom-manifest-1.0-SNAPSHOT/duke-beer.jpg" );
+
+    boolean identical = filesAreIdentical( originalImg, targetImg );
+    
+    if (!identical)
+    {
+        System.err.println( "filtered images are not identical with overlay." 
);
+        return false;
+    }    
+    
 }
 catch( Throwable e )
 {
@@ -65,3 +122,4 @@
 }
 
 return result;
+

Modified: 
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/war-common/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/war-common/pom.xml?rev=628218&r1=628217&r2=628218&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/war-common/pom.xml 
(original)
+++ maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/war-common/pom.xml Fri 
Feb 15 16:37:38 2008
@@ -32,13 +32,19 @@
     <plugins>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-war-plugin</artifactId>
+          <artifactId>maven-war-plugin</artifactId>
           <configuration>
             <archive>
               <manifestEntries>
                 <Class-Path>properties</Class-Path>
               </manifestEntries>
-            </archive>
+            </archive>
+            <webResources>
+              <resource>
+                <directory>src/main/images</directory>
+                <filtering>true</filtering>
+              </resource>
+            </webResources>
           </configuration>
         </plugin>
     </plugins>

Added: 
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/war-common/src/main/images/duke-beer.jpg
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/war-common/src/main/images/duke-beer.jpg?rev=628218&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/war-common/src/main/images/duke-beer.jpg
------------------------------------------------------------------------------
    svn:executable = *

Propchange: 
maven/plugins/trunk/maven-war-plugin/src/it/MWAR-143/war-common/src/main/images/duke-beer.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Modified: 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java?rev=628218&r1=628217&r2=628218&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java
 Fri Feb 15 16:37:38 2008
@@ -24,6 +24,7 @@
 import java.io.Reader;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
@@ -243,6 +244,15 @@
      * @since 2.1
      */
     private List overlays = new ArrayList();
+    
+    /**
+     * A list of file extensions to not filtering.
+     * <b>will be used for webResources and overlay filtering</b>
+     * 
+     * @parameter 
+     * @since 2.1-alpha-2
+     */
+    private List nonFilteredFileExtensions;
 
     /**
      * The maven archive configuration to use.
@@ -397,7 +407,9 @@
             throw new MojoExecutionException( e.getMessage(), e );
         }
         
-        final WarPackagingContext context = new DefaultWarPackagingContext( 
webappDirectory, cache, overlayManager, filterWrappers );
+        final WarPackagingContext context = new DefaultWarPackagingContext( 
webappDirectory, cache, overlayManager,
+                                                                            
filterWrappers,
+                                                                            
getNonFilteredFileExtensions() );
         final Iterator it = packagingTasks.iterator();
         while ( it.hasNext() )
         {
@@ -485,15 +497,19 @@
         private final OverlayManager overlayManager;
         
         private final List filterWrappers;
+        
+        private List nonFilteredFileExtensions;
 
         public DefaultWarPackagingContext( File webappDirectory, final 
WebappStructure webappStructure,
-                                           final OverlayManager 
overlayManager, List filterWrappers )
+                                           final OverlayManager 
overlayManager, List filterWrappers,
+                                           List nonFilteredFileExtensions )
         {
             this.webappDirectory = webappDirectory;
             this.webappStructure = webappStructure;
             this.overlayManager = overlayManager;
             this.filterWrappers = filterWrappers;
-
+            this.nonFilteredFileExtensions = nonFilteredFileExtensions == null 
? Collections.EMPTY_LIST
+                                                                              
: nonFilteredFileExtensions;
             // This is kinda stupid but if we loop over the current overlays 
and we request the path structure
             // it will register it. This will avoid wrong warning messages in 
a later phase
             final Iterator it = overlayManager.getOverlayIds().iterator();
@@ -593,7 +609,15 @@
         {
             return filterWrappers;
         }
-        
+
+        public boolean isNonFilteredExtension( String fileName )
+        {
+            if (StringUtils.isEmpty( fileName ))
+            {
+                return false;
+            }
+            return nonFilteredFileExtensions.contains( FileUtils.extension( 
fileName ) );
+        }
         
     }
 
@@ -776,5 +800,15 @@
     public MavenArchiveConfiguration getArchive()
     {
         return archive;
+    }
+
+    public List getNonFilteredFileExtensions()
+    {
+        return nonFilteredFileExtensions;
+    }
+
+    public void setNonFilteredFileExtensions( List nonFilteredFileExtensions )
+    {
+        this.nonFilteredFileExtensions = nonFilteredFileExtensions;
     }
 }

Modified: 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/AbstractWarPackagingTask.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/AbstractWarPackagingTask.java?rev=628218&r1=628217&r2=628218&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/AbstractWarPackagingTask.java
 (original)
+++ 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/AbstractWarPackagingTask.java
 Fri Feb 15 16:37:38 2008
@@ -92,7 +92,8 @@
             }
             
 
-            if ( filtered )
+            if ( filtered
+                && !context.isNonFilteredExtension( sourceFile.getName() ) ) 
             {
                 copyFilteredFile( sourceId, context, sourceFile, 
destinationFileName );
             }

Modified: 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java?rev=628218&r1=628217&r2=628218&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java
 (original)
+++ 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java
 Fri Feb 15 16:37:38 2008
@@ -169,5 +169,10 @@
      * @since 2.1-alpha-2
      */
     List getFilterWrappers();
-
+    
+    /**
+     * @param fileName
+     * @return @since 2.1-alpha-2
+     */
+    boolean isNonFilteredExtension( String fileName );
 }

Modified: 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java?rev=628218&r1=628217&r2=628218&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java
 (original)
+++ 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java
 Fri Feb 15 16:37:38 2008
@@ -273,7 +273,7 @@
                 }
             }
             context.getLog().debug( "copy targetFileName with targetPath " + 
targetFileName );
-            if ( resource.isFiltering() )
+            if ( resource.isFiltering() && !context.isNonFilteredExtension( 
fileNames[i] ) )
             {
                 copyFilteredFile( id, context, new File( 
resource.getDirectory(), fileNames[i] ), targetFileName );
             }


Reply via email to