Extracted a method and a few variables to improve readability
git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1639983 13f79535-47bb-0310-9956-ffa450edef68
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 4307f1d..ad2377a 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
@@ -169,10 +169,10 @@
private boolean matchAgainst( final String value, final List<String> patterns, final boolean regionMatch )
{
+ final String[] tokens = value.split( ":" );
for ( String pattern : patterns )
{
final String[] patternTokens = pattern.split( ":" );
- final String[] tokens = value.split( ":" );
// fail immediately if pattern tokens outnumber tokens to match
boolean matched = ( patternTokens.length <= tokens.length );
@@ -182,14 +182,15 @@
matched = matches( tokens[i], patternTokens[i] );
}
- // // case of starting '*' like '*:jar:*'
- if ( !matched && patternTokens.length < tokens.length && patternTokens.length > 0
- && "*".equals( patternTokens[0] ) )
+ // case of starting '*' like '*:jar:*'
+ // This really only matches from the end instead.....
+ if ( !matched && patternTokens.length < tokens.length && isFirstPatternWildcard( patternTokens ) )
{
matched = true;
+ int tokenOffset = tokens.length - patternTokens.length;
for ( int i = 0; matched && i < patternTokens.length; i++ )
{
- matched = matches( tokens[i + ( tokens.length - patternTokens.length )], patternTokens[i] );
+ matched = matches( tokens[i + tokenOffset], patternTokens[i] );
}
}
@@ -210,6 +211,11 @@
}
+ private boolean isFirstPatternWildcard( String[] patternTokens )
+ {
+ return patternTokens.length > 0 && "*".equals( patternTokens[0] );
+ }
+
/**
* Gets whether the specified token matches the specified pattern segment.
*