Author: krosenvold Date: Sun Nov 16 13:25:18 2014 New Revision: 1639983 URL: http://svn.apache.org/r1639983 Log: Extracted a method and a few variables to improve readability
Modified: maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java Modified: maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java?rev=1639983&r1=1639982&r2=1639983&view=diff ============================================================================== --- maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java (original) +++ maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java Sun Nov 16 13:25:18 2014 @@ -169,10 +169,10 @@ public class PatternIncludesArtifactFilt 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 @@ public class PatternIncludesArtifactFilt 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 @@ public class PatternIncludesArtifactFilt } + private boolean isFirstPatternWildcard( String[] patternTokens ) + { + return patternTokens.length > 0 && "*".equals( patternTokens[0] ); + } + /** * Gets whether the specified token matches the specified pattern segment. *