Author: bentmann
Date: Wed Dec 30 11:49:56 2009
New Revision: 894596

URL: http://svn.apache.org/viewvc?rev=894596&view=rev
Log:
[MSHADE-70] Artifact filter does not recognize pattern ending with slash

Added:
    
maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/filter/
    
maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/filter/SimpleFilterTest.java
   (with props)
Modified:
    
maven/plugins/trunk/maven-shade-plugin/src/it/filter-artifact-contents/pom.xml
    
maven/plugins/trunk/maven-shade-plugin/src/it/filter-artifact-contents/repo/org/apache/maven/its/shade/fac/b/0.1/b-0.1-client.jar
    
maven/plugins/trunk/maven-shade-plugin/src/it/filter-artifact-contents/verify.bsh
    
maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/filter/SimpleFilter.java

Modified: 
maven/plugins/trunk/maven-shade-plugin/src/it/filter-artifact-contents/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/it/filter-artifact-contents/pom.xml?rev=894596&r1=894595&r2=894596&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-shade-plugin/src/it/filter-artifact-contents/pom.xml 
(original)
+++ 
maven/plugins/trunk/maven-shade-plugin/src/it/filter-artifact-contents/pom.xml 
Wed Dec 30 11:49:56 2009
@@ -85,6 +85,7 @@
                   <artifact>org.apache.maven.its.shade.fac:b:client</artifact>
                   <excludes>
                     <exclude>org/apache/*</exclude>
+                    <exclude>org/apache/maven/b/</exclude>
                   </excludes>
                 </filter>
                 <filter>

Modified: 
maven/plugins/trunk/maven-shade-plugin/src/it/filter-artifact-contents/repo/org/apache/maven/its/shade/fac/b/0.1/b-0.1-client.jar
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/it/filter-artifact-contents/repo/org/apache/maven/its/shade/fac/b/0.1/b-0.1-client.jar?rev=894596&r1=894595&r2=894596&view=diff
==============================================================================
Binary files - no diff available.

Modified: 
maven/plugins/trunk/maven-shade-plugin/src/it/filter-artifact-contents/verify.bsh
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/it/filter-artifact-contents/verify.bsh?rev=894596&r1=894595&r2=894596&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-shade-plugin/src/it/filter-artifact-contents/verify.bsh
 (original)
+++ 
maven/plugins/trunk/maven-shade-plugin/src/it/filter-artifact-contents/verify.bsh
 Wed Dec 30 11:49:56 2009
@@ -16,6 +16,7 @@
     "org/a.properties",
     "org/b.properties",
     "org/apache/b.properties",
+    "org/apache/maven/b/b.properties",
 };
 
 JarFile jarFile = new JarFile( new File( basedir, "target/test-1.0.jar" ) );

Modified: 
maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/filter/SimpleFilter.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/filter/SimpleFilter.java?rev=894596&r1=894595&r2=894596&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/filter/SimpleFilter.java
 (original)
+++ 
maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/filter/SimpleFilter.java
 Wed Dec 30 11:49:56 2009
@@ -41,7 +41,7 @@
 
     public SimpleFilter( Set jars, Set includes, Set excludes )
     {
-        this.jars = new HashSet( jars );
+        this.jars = ( jars != null ) ? new HashSet( jars ) : new HashSet();
         this.includes = normalizePatterns( includes );
         this.excludes = normalizePatterns( excludes );
     }
@@ -95,7 +95,7 @@
 
     private String normalizePath( String path )
     {
-        return ( path != null ) ? path.replace( '/', File.separatorChar 
).replace( '\\', File.separatorChar ) : null;
+        return ( path != null ) ? path.replace( File.separatorChar == '/' ? 
'\\' : '/', File.separatorChar ) : null;
     }
 
     private Set normalizePatterns( Set patterns )
@@ -107,7 +107,15 @@
             for ( Iterator it = patterns.iterator(); it.hasNext(); )
             {
                 String pattern = (String) it.next();
-                result.add( normalizePath( pattern ) );
+
+                pattern = normalizePath( pattern );
+
+                if ( pattern.endsWith( File.separator ) )
+                {
+                    pattern += "**";
+                }
+
+                result.add( pattern );
             }
         }
 

Added: 
maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/filter/SimpleFilterTest.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/filter/SimpleFilterTest.java?rev=894596&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/filter/SimpleFilterTest.java
 (added)
+++ 
maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/filter/SimpleFilterTest.java
 Wed Dec 30 11:49:56 2009
@@ -0,0 +1,77 @@
+package org.apache.maven.plugins.shade.filter;
+
+/*
+ * 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.
+ */
+
+import java.util.Collections;
+
+import junit.framework.TestCase;
+
+/**
+ * @author Benjamin Bentmann
+ */
+public class SimpleFilterTest
+    extends TestCase
+{
+
+    public void testIsFiltered()
+    {
+        SimpleFilter filter;
+
+        filter = new SimpleFilter( null, null, null );
+        assertFalse( filter.isFiltered( "a.properties" ) );
+        assertFalse( filter.isFiltered( "org/Test.class" ) );
+
+        filter = new SimpleFilter( null, Collections.EMPTY_SET, 
Collections.EMPTY_SET );
+        assertFalse( filter.isFiltered( "a.properties" ) );
+        assertFalse( filter.isFiltered( "org/Test.class" ) );
+
+        filter = new SimpleFilter( null, Collections.singleton( 
"org/Test.class" ), Collections.EMPTY_SET );
+        assertTrue( filter.isFiltered( "a.properties" ) );
+        assertFalse( filter.isFiltered( "org/Test.class" ) );
+        assertTrue( filter.isFiltered( "org/Test.properties" ) );
+
+        filter = new SimpleFilter( null, Collections.EMPTY_SET, 
Collections.singleton( "org/Test.class" ) );
+        assertFalse( filter.isFiltered( "a.properties" ) );
+        assertTrue( filter.isFiltered( "org/Test.class" ) );
+        assertFalse( filter.isFiltered( "org/Test.properties" ) );
+
+        filter = new SimpleFilter( null, Collections.singleton( 
"**/a.properties" ), Collections.EMPTY_SET );
+        assertFalse( filter.isFiltered( "a.properties" ) );
+        assertFalse( filter.isFiltered( "org/a.properties" ) );
+        assertFalse( filter.isFiltered( "org/maven/a.properties" ) );
+        assertTrue( filter.isFiltered( "org/maven/a.class" ) );
+
+        filter = new SimpleFilter( null, Collections.EMPTY_SET, 
Collections.singleton( "org/*" ) );
+        assertFalse( filter.isFiltered( "Test.class" ) );
+        assertTrue( filter.isFiltered( "org/Test.class" ) );
+        assertFalse( filter.isFiltered( "org/apache/Test.class" ) );
+
+        filter = new SimpleFilter( null, Collections.EMPTY_SET, 
Collections.singleton( "org/**" ) );
+        assertFalse( filter.isFiltered( "Test.class" ) );
+        assertTrue( filter.isFiltered( "org/Test.class" ) );
+        assertTrue( filter.isFiltered( "org/apache/Test.class" ) );
+
+        filter = new SimpleFilter( null, Collections.EMPTY_SET, 
Collections.singleton( "org/" ) );
+        assertFalse( filter.isFiltered( "Test.class" ) );
+        assertTrue( filter.isFiltered( "org/Test.class" ) );
+        assertTrue( filter.isFiltered( "org/apache/Test.class" ) );
+    }
+
+}

Propchange: 
maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/filter/SimpleFilterTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/filter/SimpleFilterTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision


Reply via email to