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 3afbbde..274e885 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 @@ -650,7 +650,7 @@ public boolean matches( Artifactoid artifactoid ) private static boolean match( final String pattern, final boolean containsAsterisk, final String value ) { char[] patArr = pattern.toCharArray(); - char[] strArr = value.toCharArray(); + char[] strArr = value != null ? value.toCharArray() : new char[0]; int patIdxStart = 0; int patIdxEnd = patArr.length - 1; int strIdxStart = 0; 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 2a6d914..8154a6f 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 @@ -19,20 +19,22 @@ * under the License. */ -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.DefaultArtifact; +import org.apache.maven.artifact.handler.ArtifactHandler; import org.apache.maven.artifact.resolver.filter.ArtifactFilter; import org.junit.Test; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + public abstract class AbstractPatternArtifactFilterTest { @@ -579,4 +581,26 @@ public void testmassembly955() assertTrue( filter.include( artifact2 ) ); } } + + @Test + public void testPartialWildcardShouldNotMatchEmptyComponent() + { + Artifact artifact = mock( Artifact.class ); + when( artifact.getGroupId() ).thenReturn( "test-group" ); + when( artifact.getArtifactId() ).thenReturn( "test-artifact" ); + when( artifact.getVersion() ).thenReturn( "test-version" ); + when( artifact.hasClassifier() ).thenReturn( false ); + + ArtifactFilter filter = createFilter( + Collections.singletonList( "test-group:test-artifact:*:ERROR*" ) ); + + if ( isInclusionNotExpected() ) + { + assertTrue( filter.include( artifact ) ); + } + else + { + assertFalse( filter.include( artifact ) ); + } + } }