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.
      * 


Reply via email to