[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(