[MSHARED-386] Wildcard does not work with null classifier

git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1766741 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index d5bb70a..1290d17 100644
--- a/pom.xml
+++ b/pom.xml
@@ -109,7 +109,7 @@
     <dependency>
       <groupId>org.apache.maven.shared</groupId>
       <artifactId>maven-shared-utils</artifactId>
-      <version>3.0.0</version>
+      <version>3.1.0</version>
     </dependency>
 
     <dependency>
diff --git a/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java b/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java
index 2e6a3ee..a88e324 100644
--- a/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java
+++ b/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java
@@ -191,7 +191,18 @@
         final String[] tokens = value.split( ":" );
         for ( String pattern : patterns )
         {
-            final String[] patternTokens = pattern.split( ":" );
+            String[] patternTokens = pattern.split( ":" );
+            
+            if ( patternTokens.length == 5 && tokens.length < 5 )
+            {
+                // 4th element is the classifier
+                if ( !"*".equals( patternTokens[3] ) )
+                {
+                    // classifier required, cannot be a match
+                    return false;
+                }
+                patternTokens = new String[] { patternTokens[0], patternTokens[1], patternTokens[2], patternTokens[4] };
+            }
 
             // fail immediately if pattern tokens outnumber tokens to match
             boolean matched = patternTokens.length <= tokens.length;
diff --git a/src/test/java/org/apache/maven/shared/artifact/filter/AbstractPatternArtifactFilterTest.java b/src/test/java/org/apache/maven/shared/artifact/filter/AbstractPatternArtifactFilterTest.java
index c420180..2e25c03 100644
--- a/src/test/java/org/apache/maven/shared/artifact/filter/AbstractPatternArtifactFilterTest.java
+++ b/src/test/java/org/apache/maven/shared/artifact/filter/AbstractPatternArtifactFilterTest.java
@@ -463,6 +463,33 @@
 
         verify( mac.getMock(), otherMac.getMock() );
     }
+    
+    public void testShouldIncludeJarsWithAndWithoutClassifier()
+    {
+        final String groupId = "com.mycompany.myproject";
+        final String artifactId = "some-artifact-id";
+
+        final ArtifactMockAndControl mac = new ArtifactMockAndControl( groupId, artifactId );
+
+        replay( mac.getMock() );
+
+        final List<String> patterns = new ArrayList<String>();
+
+        patterns.add( "com.mycompany.*:*:jar:*:*" );
+
+        final ArtifactFilter filter = createFilter( patterns );
+
+        if ( !isInclusionExpected() )
+        {
+            assertFalse( filter.include( mac.artifact ) );
+        }
+        else
+        {
+            assertTrue( filter.include( mac.artifact ) );
+        }
+
+        verify( mac.getMock() );
+    }
 
     // FIXME: Not sure what this is even trying to test.
     // public void testShouldIncludeDirectDependencyWhenInvertedWildcardMatchesButDoesntMatchTransitiveChild(