Author: jdcasey
Date: Wed Sep 15 21:57:47 2010
New Revision: 997521

URL: http://svn.apache.org/viewvc?rev=997521&view=rev
Log:
[MSHARED-162] Consider dependency trail items separately for pattern matching.

Modified:
    
maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java
    
maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/PatternArtifactFilterTCK.java
    
maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/PatternExcludesArtifactFilterTest.java
    
maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilterTest.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=997521&r1=997520&r2=997521&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
 Wed Sep 15 21:57:47 2010
@@ -18,12 +18,6 @@
  */
 package org.apache.maven.shared.artifact.filter;
 
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
@@ -31,16 +25,20 @@ import org.apache.maven.artifact.version
 import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.artifact.versioning.VersionRange;
 import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.util.StringUtils;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
 
 /**
  * TODO: include in maven-artifact in future
- *
+ * 
  * @author <a href="mailto:[email protected]";>Brett Porter</a>
  * @see StrictPatternIncludesArtifactFilter
  */
-public class PatternIncludesArtifactFilter
-    implements ArtifactFilter, StatisticsReportingArtifactFilter
+public class PatternIncludesArtifactFilter implements ArtifactFilter, 
StatisticsReportingArtifactFilter
 {
     private final List positivePatterns;
 
@@ -48,25 +46,25 @@ public class PatternIncludesArtifactFilt
 
     private final boolean actTransitively;
 
-    private Set patternsTriggered = new HashSet();
+    private final Set patternsTriggered = new HashSet();
 
-    private List filteredArtifactIds = new ArrayList();
+    private final List filteredArtifactIds = new ArrayList();
 
-    public PatternIncludesArtifactFilter( List patterns )
+    public PatternIncludesArtifactFilter( final List patterns )
     {
         this( patterns, false );
     }
 
-    public PatternIncludesArtifactFilter( List patterns, boolean 
actTransitively )
+    public PatternIncludesArtifactFilter( final List patterns, final boolean 
actTransitively )
     {
         this.actTransitively = actTransitively;
-        List pos = new ArrayList();
-        List neg = new ArrayList();
+        final List pos = new ArrayList();
+        final List neg = new ArrayList();
         if ( ( patterns != null ) && !patterns.isEmpty() )
         {
-            for ( Iterator it = patterns.iterator(); it.hasNext(); )
+            for ( final Iterator it = patterns.iterator(); it.hasNext(); )
             {
-                String pattern = (String) it.next();
+                final String pattern = (String) it.next();
 
                 if ( pattern.startsWith( "!" ) )
                 {
@@ -83,9 +81,9 @@ public class PatternIncludesArtifactFilt
         negativePatterns = neg;
     }
 
-    public boolean include( Artifact artifact )
+    public boolean include( final Artifact artifact )
     {
-        boolean shouldInclude = patternMatches( artifact );
+        final boolean shouldInclude = patternMatches( artifact );
 
         if ( !shouldInclude )
         {
@@ -95,17 +93,17 @@ public class PatternIncludesArtifactFilt
         return shouldInclude;
     }
 
-    protected boolean patternMatches( Artifact artifact )
+    protected boolean patternMatches( final Artifact artifact )
     {
         return ( positiveMatch( artifact ) == Boolean.TRUE ) || ( 
negativeMatch( artifact ) == Boolean.FALSE );
     }
 
-    protected void addFilteredArtifactId( String artifactId )
+    protected void addFilteredArtifactId( final String artifactId )
     {
         filteredArtifactIds.add( artifactId );
     }
 
-    private Boolean negativeMatch( Artifact artifact )
+    private Boolean negativeMatch( final Artifact artifact )
     {
         if ( ( negativePatterns == null ) || negativePatterns.isEmpty() )
         {
@@ -117,7 +115,7 @@ public class PatternIncludesArtifactFilt
         }
     }
 
-    protected Boolean positiveMatch( Artifact artifact )
+    protected Boolean positiveMatch( final Artifact artifact )
     {
         if ( ( positivePatterns == null ) || positivePatterns.isEmpty() )
         {
@@ -129,11 +127,11 @@ public class PatternIncludesArtifactFilt
         }
     }
 
-    private boolean match( Artifact artifact, List patterns )
+    private boolean match( final Artifact artifact, final List patterns )
     {
-        String shortId = ArtifactUtils.versionlessKey( artifact );
-        String id = artifact.getDependencyConflictId();
-        String wholeId = artifact.getId();
+        final String shortId = ArtifactUtils.versionlessKey( artifact );
+        final String id = artifact.getDependencyConflictId();
+        final String wholeId = artifact.getId();
 
         if ( matchAgainst( wholeId, patterns, false ) )
         {
@@ -152,58 +150,67 @@ public class PatternIncludesArtifactFilt
 
         if ( actTransitively )
         {
-            List depTrail = artifact.getDependencyTrail();
+            final List depTrail = artifact.getDependencyTrail();
 
-            if ( ( depTrail != null ) && !depTrail.isEmpty() )
+            if ( ( depTrail != null ) && depTrail.size() > 1 )
             {
-                String trailStr = "," + StringUtils.join( depTrail.iterator(), 
"," );
-
-                return matchAgainst( trailStr, patterns, true );
+                for ( final Iterator iterator = depTrail.iterator(); 
iterator.hasNext(); )
+                {
+                    final String trailItem = (String) iterator.next();
+                    if ( matchAgainst( trailItem, patterns, true ) )
+                    {
+                        return true;
+                    }
+                }
             }
         }
 
         return false;
     }
 
-    private boolean matchAgainst( String value, List patterns, boolean 
regionMatch ) {
-       for (Iterator iterator = patterns.iterator(); iterator.hasNext();) {
-                       String pattern = (String) iterator.next();
-                       
-                       String[] patternTokens = pattern.split( ":" );
-                       String[] tokens = value.split( ":" );
-                       
-                       // fail immediately if pattern tokens outnumber tokens 
to match
-               boolean matched = ( patternTokens.length <= tokens.length );
-
-               for ( int i = 0; matched && i < patternTokens.length; i++ )
-               {
-                   matched = matches( tokens[i], patternTokens[i] );
-               }
-               
-//             // case of starting '*' like '*:jar:*'
-               if (!matched && patternTokens.length < tokens.length && 
patternTokens.length>0 && "*".equals(patternTokens[0])) 
-               {
-                       matched=true;
-                       for ( int i = 0; matched && i < patternTokens.length; 
i++ )
-                       {
-                           matched = matches( 
tokens[i+(tokens.length-patternTokens.length)], patternTokens[i] );
-                       }
-               }
+    private boolean matchAgainst( final String value, final List patterns, 
final boolean regionMatch )
+    {
+        for ( final Iterator iterator = patterns.iterator(); 
iterator.hasNext(); )
+        {
+            final String pattern = (String) iterator.next();
+
+            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 );
+
+            for ( int i = 0; matched && i < patternTokens.length; i++ )
+            {
+                matched = matches( tokens[i], patternTokens[i] );
+            }
+
+            // // case of starting '*' like '*:jar:*'
+            if ( !matched && patternTokens.length < tokens.length && 
patternTokens.length > 0
+                            && "*".equals( patternTokens[0] ) )
+            {
+                matched = true;
+                for ( int i = 0; matched && i < patternTokens.length; i++ )
+                {
+                    matched = matches( tokens[i + ( tokens.length - 
patternTokens.length )], patternTokens[i] );
+                }
+            }
 
-               if (matched) {
-                       patternsTriggered.add( pattern );
+            if ( matched )
+            {
+                patternsTriggered.add( pattern );
                 return true;
-               }
-               
-               if ( regionMatch && value.indexOf( pattern ) > -1 )
+            }
+
+            if ( regionMatch && value.indexOf( pattern ) > -1 )
             {
                 patternsTriggered.add( pattern );
                 return true;
             }
-                       
-               }
-       return false;
-       
+
+        }
+        return false;
+
     }
 
     /**
@@ -215,9 +222,9 @@ public class PatternIncludesArtifactFilt
      *            the pattern segment to match, as defined above
      * @return <code>true</code> if the specified token is matched by the 
specified pattern segment
      */
-    private boolean matches( String token, final String pattern )
+    private boolean matches( final String token, final String pattern )
     {
-       boolean matches;
+        boolean matches;
 
         // support full wildcard and implied wildcard
         if ( "*".equals( pattern ) || pattern.length() == 0 )
@@ -227,28 +234,28 @@ public class PatternIncludesArtifactFilt
         // support contains wildcard
         else if ( pattern.startsWith( "*" ) && pattern.endsWith( "*" ) )
         {
-            String contains = pattern.substring( 1, pattern.length() - 1 );
+            final String contains = pattern.substring( 1, pattern.length() - 1 
);
 
             matches = ( token.indexOf( contains ) != -1 );
         }
         // support leading wildcard
         else if ( pattern.startsWith( "*" ) )
         {
-            String suffix = pattern.substring( 1, pattern.length() );
+            final String suffix = pattern.substring( 1, pattern.length() );
 
             matches = token.endsWith( suffix );
         }
         // support trailing wildcard
         else if ( pattern.endsWith( "*" ) )
         {
-            String prefix = pattern.substring( 0, pattern.length() - 1 );
+            final String prefix = pattern.substring( 0, pattern.length() - 1 );
 
             matches = token.startsWith( prefix );
         }
-        // support versions range 
-        else if ( pattern.startsWith( "[" ) || pattern.startsWith( "(" ))
+        // support versions range
+        else if ( pattern.startsWith( "[" ) || pattern.startsWith( "(" ) )
         {
-               matches = isVersionIncludedInRange(token, pattern);
+            matches = isVersionIncludedInRange( token, pattern );
         }
         // support exact match
         else
@@ -258,21 +265,25 @@ public class PatternIncludesArtifactFilt
 
         return matches;
     }
-    
-    private boolean isVersionIncludedInRange(final String version, final 
String range) {
-       try {
-                       return 
VersionRange.createFromVersionSpec(range).containsVersion(new 
DefaultArtifactVersion(version));
-               } catch (InvalidVersionSpecificationException e) {
-                       return false;
-               }
-       }
 
-    public void reportMissedCriteria( Logger logger )
+    private boolean isVersionIncludedInRange( final String version, final 
String range )
+    {
+        try
+        {
+            return VersionRange.createFromVersionSpec( range 
).containsVersion( new DefaultArtifactVersion( version ) );
+        }
+        catch ( final InvalidVersionSpecificationException e )
+        {
+            return false;
+        }
+    }
+
+    public void reportMissedCriteria( final Logger logger )
     {
         // if there are no patterns, there is nothing to report.
         if ( !positivePatterns.isEmpty() || !negativePatterns.isEmpty() )
         {
-            List missed = new ArrayList();
+            final List missed = new ArrayList();
             missed.addAll( positivePatterns );
             missed.addAll( negativePatterns );
 
@@ -280,15 +291,15 @@ public class PatternIncludesArtifactFilt
 
             if ( !missed.isEmpty() && logger.isWarnEnabled() )
             {
-                StringBuffer buffer = new StringBuffer();
+                final StringBuffer buffer = new StringBuffer();
 
                 buffer.append( "The following patterns were never triggered in 
this " );
                 buffer.append( getFilterDescription() );
                 buffer.append( ':' );
 
-                for ( Iterator it = missed.iterator(); it.hasNext(); )
+                for ( final Iterator it = missed.iterator(); it.hasNext(); )
                 {
-                    String pattern = (String) it.next();
+                    final String pattern = (String) it.next();
 
                     buffer.append( "\no  \'" ).append( pattern ).append( "\'" 
);
                 }
@@ -307,10 +318,10 @@ public class PatternIncludesArtifactFilt
 
     protected String getPatternsAsString()
     {
-        StringBuffer buffer = new StringBuffer();
-        for ( Iterator it = positivePatterns.iterator(); it.hasNext(); )
+        final StringBuffer buffer = new StringBuffer();
+        for ( final Iterator it = positivePatterns.iterator(); it.hasNext(); )
         {
-            String pattern = (String) it.next();
+            final String pattern = (String) it.next();
 
             buffer.append( "\no \'" ).append( pattern ).append( "\'" );
         }
@@ -323,16 +334,16 @@ public class PatternIncludesArtifactFilt
         return "artifact inclusion filter";
     }
 
-    public void reportFilteredArtifacts( Logger logger )
+    public void reportFilteredArtifacts( final Logger logger )
     {
         if ( !filteredArtifactIds.isEmpty() && logger.isDebugEnabled() )
         {
-            StringBuffer buffer = new StringBuffer( "The following artifacts 
were removed by this "
-                + getFilterDescription() + ": " );
+            final StringBuffer buffer =
+                new StringBuffer( "The following artifacts were removed by 
this " + getFilterDescription() + ": " );
 
-            for ( Iterator it = filteredArtifactIds.iterator(); it.hasNext(); )
+            for ( final Iterator it = filteredArtifactIds.iterator(); 
it.hasNext(); )
             {
-                String artifactId = (String) it.next();
+                final String artifactId = (String) it.next();
 
                 buffer.append( '\n' ).append( artifactId );
             }
@@ -346,7 +357,7 @@ public class PatternIncludesArtifactFilt
         // if there are no patterns, there is nothing to report.
         if ( !positivePatterns.isEmpty() || !negativePatterns.isEmpty() )
         {
-            List missed = new ArrayList();
+            final List missed = new ArrayList();
             missed.addAll( positivePatterns );
             missed.addAll( negativePatterns );
 

Modified: 
maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/PatternArtifactFilterTCK.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/PatternArtifactFilterTCK.java?rev=997521&r1=997520&r2=997521&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/PatternArtifactFilterTCK.java
 (original)
+++ 
maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/PatternArtifactFilterTCK.java
 Wed Sep 15 21:57:47 2010
@@ -18,45 +18,45 @@
  */
 package org.apache.maven.shared.artifact.filter;
 
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.shared.tools.easymock.MockManager;
+import org.easymock.MockControl;
+
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
 import junit.framework.TestCase;
 
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.shared.tools.easymock.MockManager;
-import org.easymock.MockControl;
-
-public abstract class PatternArtifactFilterTCK
-    extends TestCase
+public abstract class PatternArtifactFilterTCK extends TestCase
 {
 
-    private MockManager mockManager = new MockManager();
+    private final MockManager mockManager = new MockManager();
 
     protected abstract ArtifactFilter createFilter( List patterns );
 
     protected abstract ArtifactFilter createFilter( List patterns, boolean 
actTransitively );
 
-    public void testShouldTriggerBothPatternsWithWildcards( boolean reverse )
+    public void testShouldTriggerBothPatternsWithWildcards( final boolean 
reverse )
     {
-        String groupId1 = "group";
-        String artifactId1 = "artifact";
+        final String groupId1 = "group";
+        final String artifactId1 = "artifact";
 
-        String groupId2 = "group2";
-        String artifactId2 = "artifact2";
+        final String groupId2 = "group2";
+        final String artifactId2 = "artifact2";
 
-        ArtifactMockAndControl mac1 = new ArtifactMockAndControl( groupId1, 
artifactId1 );
-        ArtifactMockAndControl mac2 = new ArtifactMockAndControl( groupId2, 
artifactId2 );
+        final ArtifactMockAndControl mac1 = new ArtifactMockAndControl( 
groupId1, artifactId1 );
+        final ArtifactMockAndControl mac2 = new ArtifactMockAndControl( 
groupId2, artifactId2 );
 
         mockManager.replayAll();
 
-        List patterns = new ArrayList();
+        final List patterns = new ArrayList();
         patterns.add( groupId1 + ":" + artifactId1 + ":*" );
         patterns.add( groupId2 + ":" + artifactId2 + ":*" );
 
-        ArtifactFilter filter = createFilter( patterns );
+        final ArtifactFilter filter = createFilter( patterns );
 
         if ( reverse )
         {
@@ -72,16 +72,49 @@ public abstract class PatternArtifactFil
         mockManager.verifyAll();
     }
 
-    public void testShouldIncludeDirectlyMatchedArtifactByGroupIdArtifactId( 
boolean reverse )
+    public void testShouldTriggerBothPatternsWithNonColonWildcards( final 
boolean reverse )
     {
-        String groupId = "group";
-        String artifactId = "artifact";
+        final String groupId1 = "group";
+        final String artifactId1 = "artifact";
+
+        final String groupId2 = "group2";
+        final String artifactId2 = "artifact2";
 
-        ArtifactMockAndControl mac = new ArtifactMockAndControl( groupId, 
artifactId );
+        final ArtifactMockAndControl mac1 = new ArtifactMockAndControl( 
groupId1, artifactId1 );
+        final ArtifactMockAndControl mac2 = new ArtifactMockAndControl( 
groupId2, artifactId2 );
 
         mockManager.replayAll();
 
-        ArtifactFilter filter = createFilter( Collections.singletonList( 
groupId + ":" + artifactId ) );
+        final List patterns = new ArrayList();
+        patterns.add( groupId1 + "*" );
+        patterns.add( groupId2 + "*" );
+
+        final ArtifactFilter filter = createFilter( patterns );
+
+        if ( reverse )
+        {
+            assertFalse( filter.include( mac1.artifact ) );
+            assertFalse( filter.include( mac2.artifact ) );
+        }
+        else
+        {
+            assertTrue( filter.include( mac1.artifact ) );
+            assertTrue( filter.include( mac2.artifact ) );
+        }
+
+        mockManager.verifyAll();
+    }
+
+    public void testShouldIncludeDirectlyMatchedArtifactByGroupIdArtifactId( 
final boolean reverse )
+    {
+        final String groupId = "group";
+        final String artifactId = "artifact";
+
+        final ArtifactMockAndControl mac = new ArtifactMockAndControl( 
groupId, artifactId );
+
+        mockManager.replayAll();
+
+        final ArtifactFilter filter = createFilter( Collections.singletonList( 
groupId + ":" + artifactId ) );
 
         if ( reverse )
         {
@@ -95,16 +128,16 @@ public abstract class PatternArtifactFil
         mockManager.verifyAll();
     }
 
-    public void 
testShouldIncludeDirectlyMatchedArtifactByDependencyConflictId( boolean reverse 
)
+    public void 
testShouldIncludeDirectlyMatchedArtifactByDependencyConflictId( final boolean 
reverse )
     {
-        String groupId = "group";
-        String artifactId = "artifact";
+        final String groupId = "group";
+        final String artifactId = "artifact";
 
-        ArtifactMockAndControl mac = new ArtifactMockAndControl( groupId, 
artifactId );
+        final ArtifactMockAndControl mac = new ArtifactMockAndControl( 
groupId, artifactId );
 
         mockManager.replayAll();
 
-        ArtifactFilter filter = createFilter( Collections.singletonList( 
groupId + ":" + artifactId + ":jar" ) );
+        final ArtifactFilter filter = createFilter( Collections.singletonList( 
groupId + ":" + artifactId + ":jar" ) );
 
         if ( reverse )
         {
@@ -118,20 +151,20 @@ public abstract class PatternArtifactFil
         mockManager.verifyAll();
     }
 
-    public void testShouldNotIncludeWhenGroupIdDiffers( boolean reverse )
+    public void testShouldNotIncludeWhenGroupIdDiffers( final boolean reverse )
     {
-        String groupId = "group";
-        String artifactId = "artifact";
+        final String groupId = "group";
+        final String artifactId = "artifact";
 
-        ArtifactMockAndControl mac = new ArtifactMockAndControl( groupId, 
artifactId );
+        final ArtifactMockAndControl mac = new ArtifactMockAndControl( 
groupId, artifactId );
 
         mockManager.replayAll();
-        List patterns = new ArrayList();
+        final List patterns = new ArrayList();
 
         patterns.add( "otherGroup:" + artifactId + ":jar" );
         patterns.add( "otherGroup:" + artifactId );
 
-        ArtifactFilter filter = createFilter( patterns );
+        final ArtifactFilter filter = createFilter( patterns );
 
         if ( reverse )
         {
@@ -145,21 +178,21 @@ public abstract class PatternArtifactFil
         mockManager.verifyAll();
     }
 
-    public void testShouldNotIncludeWhenArtifactIdDiffers( boolean reverse )
+    public void testShouldNotIncludeWhenArtifactIdDiffers( final boolean 
reverse )
     {
-        String groupId = "group";
-        String artifactId = "artifact";
+        final String groupId = "group";
+        final String artifactId = "artifact";
 
-        ArtifactMockAndControl mac = new ArtifactMockAndControl( groupId, 
artifactId );
+        final ArtifactMockAndControl mac = new ArtifactMockAndControl( 
groupId, artifactId );
 
         mockManager.replayAll();
 
-        List patterns = new ArrayList();
+        final List patterns = new ArrayList();
 
         patterns.add( groupId + "otherArtifact:jar" );
         patterns.add( groupId + "otherArtifact" );
 
-        ArtifactFilter filter = createFilter( patterns );
+        final ArtifactFilter filter = createFilter( patterns );
 
         if ( reverse )
         {
@@ -173,21 +206,21 @@ public abstract class PatternArtifactFil
         mockManager.verifyAll();
     }
 
-    public void testShouldNotIncludeWhenBothIdElementsDiffer( boolean reverse )
+    public void testShouldNotIncludeWhenBothIdElementsDiffer( final boolean 
reverse )
     {
-        String groupId = "group";
-        String artifactId = "artifact";
+        final String groupId = "group";
+        final String artifactId = "artifact";
 
-        ArtifactMockAndControl mac = new ArtifactMockAndControl( groupId, 
artifactId );
+        final ArtifactMockAndControl mac = new ArtifactMockAndControl( 
groupId, artifactId );
 
         mockManager.replayAll();
 
-        List patterns = new ArrayList();
+        final List patterns = new ArrayList();
 
         patterns.add( "otherGroup:otherArtifact:jar" );
         patterns.add( "otherGroup:otherArtifact" );
 
-        ArtifactFilter filter = createFilter( patterns );
+        final ArtifactFilter filter = createFilter( patterns );
 
         if ( reverse )
         {
@@ -201,20 +234,22 @@ public abstract class PatternArtifactFil
         mockManager.verifyAll();
     }
 
-    public void 
testShouldIncludeWhenPatternMatchesDependencyTrailAndTransitivityIsEnabled( 
boolean reverse )
+    public void 
testShouldIncludeWhenPatternMatchesDependencyTrailAndTransitivityIsEnabled( 
final boolean reverse )
     {
-        String groupId = "group";
-        String artifactId = "artifact";
+        final String groupId = "group";
+        final String artifactId = "artifact";
 
-        String depTrailItem = "otherGroup:otherArtifact";
-        List depTrail = Collections.singletonList( depTrailItem + ":jar:1.0" );
-        List patterns = Collections.singletonList( depTrailItem );
+        final String rootDepTrailItem = "current:project:jar:1.0";
+        final String depTrailItem = "otherGroup:otherArtifact";
 
-        ArtifactMockAndControl mac = new ArtifactMockAndControl( groupId, 
artifactId, depTrail );
+        final List depTrail = Arrays.asList( new String[] { rootDepTrailItem, 
depTrailItem + ":jar:1.0" } );
+        final List patterns = Collections.singletonList( depTrailItem );
+
+        final ArtifactMockAndControl mac = new ArtifactMockAndControl( 
groupId, artifactId, depTrail );
 
         mockManager.replayAll();
 
-        ArtifactFilter filter = createFilter( patterns, true );
+        final ArtifactFilter filter = createFilter( patterns, true );
 
         if ( reverse )
         {
@@ -228,20 +263,49 @@ public abstract class PatternArtifactFil
         mockManager.verifyAll();
     }
 
-    public void testShouldNotIncludeWhenNegativeMatch( boolean reverse )
+    public void 
testIncludeWhenPatternMatchesDepTrailWithTransitivityUsingNonColonWildcard( 
final boolean reverse )
     {
-        String groupId = "group";
-        String artifactId = "artifact";
+        final String groupId = "group";
+        final String artifactId = "artifact";
+
+        final String rootDepTrailItem = "current:project:jar:1.0";
+        final String depTrailItem = "otherGroup:otherArtifact";
+
+        final List depTrail = Arrays.asList( new String[] { rootDepTrailItem, 
depTrailItem + ":jar:1.0" } );
+        final List patterns = Collections.singletonList( "otherGroup*" );
 
-        ArtifactMockAndControl mac = new ArtifactMockAndControl( groupId, 
artifactId );
+        final ArtifactMockAndControl mac = new ArtifactMockAndControl( 
groupId, artifactId, depTrail );
 
         mockManager.replayAll();
 
-        List patterns = new ArrayList();
+        final ArtifactFilter filter = createFilter( patterns, true );
+
+        if ( reverse )
+        {
+            assertFalse( filter.include( mac.artifact ) );
+        }
+        else
+        {
+            assertTrue( filter.include( mac.artifact ) );
+        }
+
+        mockManager.verifyAll();
+    }
+
+    public void testShouldNotIncludeWhenNegativeMatch( final boolean reverse )
+    {
+        final String groupId = "group";
+        final String artifactId = "artifact";
+
+        final ArtifactMockAndControl mac = new ArtifactMockAndControl( 
groupId, artifactId );
+
+        mockManager.replayAll();
+
+        final List patterns = new ArrayList();
 
         patterns.add( "!group:artifact:jar" );
 
-        ArtifactFilter filter = createFilter( patterns );
+        final ArtifactFilter filter = createFilter( patterns );
 
         if ( reverse )
         {
@@ -255,20 +319,20 @@ public abstract class PatternArtifactFil
         mockManager.verifyAll();
     }
 
-    public void testShouldIncludeWhenWildcardMatchesInsideSequence( boolean 
reverse )
+    public void testShouldIncludeWhenWildcardMatchesInsideSequence( final 
boolean reverse )
     {
-        String groupId = "group";
-        String artifactId = "artifact";
+        final String groupId = "group";
+        final String artifactId = "artifact";
 
-        ArtifactMockAndControl mac = new ArtifactMockAndControl( groupId, 
artifactId );
+        final ArtifactMockAndControl mac = new ArtifactMockAndControl( 
groupId, artifactId );
 
         mockManager.replayAll();
 
-        List patterns = new ArrayList();
+        final List patterns = new ArrayList();
 
         patterns.add( "group:*:jar" );
 
-        ArtifactFilter filter = createFilter( patterns );
+        final ArtifactFilter filter = createFilter( patterns );
 
         if ( reverse )
         {
@@ -282,20 +346,20 @@ public abstract class PatternArtifactFil
         mockManager.verifyAll();
     }
 
-    public void testShouldIncludeWhenWildcardMatchesOutsideSequence( boolean 
reverse )
+    public void testShouldIncludeWhenWildcardMatchesOutsideSequence( final 
boolean reverse )
     {
-        String groupId = "group";
-        String artifactId = "artifact";
+        final String groupId = "group";
+        final String artifactId = "artifact";
 
-        ArtifactMockAndControl mac = new ArtifactMockAndControl( groupId, 
artifactId );
+        final ArtifactMockAndControl mac = new ArtifactMockAndControl( 
groupId, artifactId );
 
         mockManager.replayAll();
 
-        List patterns = new ArrayList();
+        final List patterns = new ArrayList();
 
         patterns.add( "*:artifact:*" );
 
-        ArtifactFilter filter = createFilter( patterns );
+        final ArtifactFilter filter = createFilter( patterns );
 
         if ( reverse )
         {
@@ -309,26 +373,26 @@ public abstract class PatternArtifactFil
         mockManager.verifyAll();
     }
 
-    public void 
testShouldIncludeTransitiveDependencyWhenWildcardMatchesButDoesntMatchParent( 
boolean reverse )
+    public void 
testShouldIncludeTransitiveDependencyWhenWildcardMatchesButDoesntMatchParent( 
final boolean reverse )
     {
-        String groupId = "group";
-        String artifactId = "artifact";
+        final String groupId = "group";
+        final String artifactId = "artifact";
 
-        String otherGroup = "otherGroup";
-        String otherArtifact = "otherArtifact";
-        String otherType = "ejb";
+        final String otherGroup = "otherGroup";
+        final String otherArtifact = "otherArtifact";
+        final String otherType = "ejb";
 
-        String depTrailItem = otherGroup + ":" + otherArtifact + ":" + 
otherType + ":version";
-        List depTrail = Collections.singletonList( depTrailItem );
-        List patterns = Collections.singletonList( "*:jar:*" );
+        final String depTrailItem = otherGroup + ":" + otherArtifact + ":" + 
otherType + ":version";
+        final List depTrail = Collections.singletonList( depTrailItem );
+        final List patterns = Collections.singletonList( "*:jar:*" );
 
-        ArtifactMockAndControl mac = new ArtifactMockAndControl( groupId, 
artifactId, "jar", depTrail );
-        ArtifactMockAndControl otherMac = new ArtifactMockAndControl( 
otherGroup, otherArtifact, otherType,
-                                                                      
Collections.EMPTY_LIST );
+        final ArtifactMockAndControl mac = new ArtifactMockAndControl( 
groupId, artifactId, "jar", depTrail );
+        final ArtifactMockAndControl otherMac =
+            new ArtifactMockAndControl( otherGroup, otherArtifact, otherType, 
Collections.EMPTY_LIST );
 
         mockManager.replayAll();
 
-        ArtifactFilter filter = createFilter( patterns, true );
+        final ArtifactFilter filter = createFilter( patterns, true );
 
         if ( reverse )
         {
@@ -345,40 +409,40 @@ public abstract class PatternArtifactFil
     }
 
     // FIXME: Not sure what this is even trying to test.
-//    public void 
testShouldIncludeDirectDependencyWhenInvertedWildcardMatchesButDoesntMatchTransitiveChild(
-//                                                                             
                              boolean reverse )
-//    {
-//        String groupId = "group";
-//        String artifactId = "artifact";
-//
-//        String otherGroup = "otherGroup";
-//        String otherArtifact = "otherArtifact";
-//        String otherType = "ejb";
-//
-//        String depTrailItem = otherGroup + ":" + otherArtifact + ":" + 
otherType + ":version";
-//        List depTrail = Collections.singletonList( depTrailItem );
-//        List patterns = Collections.singletonList( "!*:ejb:*" );
-//
-//        ArtifactMockAndControl mac = new ArtifactMockAndControl( groupId, 
artifactId, "jar", depTrail );
-//        ArtifactMockAndControl otherMac = new ArtifactMockAndControl( 
otherGroup, otherArtifact, otherType, null );
-//
-//        mockManager.replayAll();
-//
-//        ArtifactFilter filter = createFilter( patterns, true );
-//
-//        if ( reverse )
-//        {
-//            assertTrue( filter.include( otherMac.artifact ) );
-//            assertFalse( filter.include( mac.artifact ) );
-//        }
-//        else
-//        {
-//            assertFalse( filter.include( otherMac.artifact ) );
-//            assertFalse( filter.include( mac.artifact ) );
-//        }
-//
-//        mockManager.verifyAll();
-//    }
+    // public void 
testShouldIncludeDirectDependencyWhenInvertedWildcardMatchesButDoesntMatchTransitiveChild(
+    // boolean reverse )
+    // {
+    // String groupId = "group";
+    // String artifactId = "artifact";
+    //
+    // String otherGroup = "otherGroup";
+    // String otherArtifact = "otherArtifact";
+    // String otherType = "ejb";
+    //
+    // String depTrailItem = otherGroup + ":" + otherArtifact + ":" + 
otherType + ":version";
+    // List depTrail = Collections.singletonList( depTrailItem );
+    // List patterns = Collections.singletonList( "!*:ejb:*" );
+    //
+    // ArtifactMockAndControl mac = new ArtifactMockAndControl( groupId, 
artifactId, "jar", depTrail );
+    // ArtifactMockAndControl otherMac = new ArtifactMockAndControl( 
otherGroup, otherArtifact, otherType, null );
+    //
+    // mockManager.replayAll();
+    //
+    // ArtifactFilter filter = createFilter( patterns, true );
+    //
+    // if ( reverse )
+    // {
+    // assertTrue( filter.include( otherMac.artifact ) );
+    // assertFalse( filter.include( mac.artifact ) );
+    // }
+    // else
+    // {
+    // assertFalse( filter.include( otherMac.artifact ) );
+    // assertFalse( filter.include( mac.artifact ) );
+    // }
+    //
+    // mockManager.verifyAll();
+    // }
 
     private final class ArtifactMockAndControl
     {
@@ -391,17 +455,18 @@ public abstract class PatternArtifactFil
         String artifactId;
 
         String version;
-        
+
         List dependencyTrail;
 
         String type;
 
-        ArtifactMockAndControl( String groupId, String artifactId, List 
depTrail )
+        ArtifactMockAndControl( final String groupId, final String artifactId, 
final List depTrail )
         {
             this( groupId, artifactId, "jar", depTrail );
         }
 
-        ArtifactMockAndControl( String groupId, String artifactId, String 
type, List dependencyTrail )
+        ArtifactMockAndControl( final String groupId, final String artifactId, 
final String type,
+                                final List dependencyTrail )
         {
             this.groupId = groupId;
             this.artifactId = artifactId;
@@ -423,12 +488,12 @@ public abstract class PatternArtifactFil
             }
         }
 
-        public ArtifactMockAndControl( String groupId, String artifactId )
+        public ArtifactMockAndControl( final String groupId, final String 
artifactId )
         {
             this( groupId, artifactId, "jar", null );
         }
 
-        public ArtifactMockAndControl( String groupId, String artifactId, 
String type )
+        public ArtifactMockAndControl( final String groupId, final String 
artifactId, final String type )
         {
             this( groupId, artifactId, type, null );
         }
@@ -451,7 +516,7 @@ public abstract class PatternArtifactFil
             control.setReturnValue( groupId + ":" + artifactId + ":" + type, 
MockControl.ONE_OR_MORE );
         }
 
-        void enableGetGroupIdArtifactIdAndVersion() 
+        void enableGetGroupIdArtifactIdAndVersion()
         {
             artifact.getGroupId();
             control.setReturnValue( groupId, MockControl.ONE_OR_MORE );
@@ -460,8 +525,8 @@ public abstract class PatternArtifactFil
             control.setReturnValue( artifactId, MockControl.ONE_OR_MORE );
 
             artifact.getVersion();
-            control.setReturnValue( version , MockControl.ZERO_OR_MORE );
-            
+            control.setReturnValue( version, MockControl.ZERO_OR_MORE );
+
         }
     }
 

Modified: 
maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/PatternExcludesArtifactFilterTest.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/PatternExcludesArtifactFilterTest.java?rev=997521&r1=997520&r2=997521&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/PatternExcludesArtifactFilterTest.java
 (original)
+++ 
maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/PatternExcludesArtifactFilterTest.java
 Wed Sep 15 21:57:47 2010
@@ -18,31 +18,40 @@
  */
 package org.apache.maven.shared.artifact.filter;
 
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+
 import java.util.List;
 
 import junit.framework.TestCase;
 
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-
-public class PatternExcludesArtifactFilterTest
-    extends TestCase
+public class PatternExcludesArtifactFilterTest extends TestCase
 {
 
-    private PatternArtifactFilterTCK tck = new PatternArtifactFilterTCK()
+    private final PatternArtifactFilterTCK tck = new PatternArtifactFilterTCK()
     {
 
-        protected ArtifactFilter createFilter( List patterns )
+        protected ArtifactFilter createFilter( final List patterns )
         {
             return new PatternExcludesArtifactFilter( patterns );
         }
 
-        protected ArtifactFilter createFilter( List patterns, boolean 
actTransitively )
+        protected ArtifactFilter createFilter( final List patterns, final 
boolean actTransitively )
         {
             return new PatternExcludesArtifactFilter( patterns, 
actTransitively );
         }
 
     };
 
+    public void testShouldTriggerBothPatternsWithNonColonWildcards()
+    {
+        tck.testShouldTriggerBothPatternsWithNonColonWildcards( true );
+    }
+
+    public void 
testIncludeWhenPatternMatchesDepTrailWithTransitivityUsingNonColonWildcard()
+    {
+        
tck.testIncludeWhenPatternMatchesDepTrailWithTransitivityUsingNonColonWildcard( 
true );
+    }
+
     public void testShouldTriggerBothPatternsWithWildcards()
     {
         tck.testShouldTriggerBothPatternsWithWildcards( true );
@@ -99,8 +108,8 @@ public class PatternExcludesArtifactFilt
     }
 
     // See comment in TCK.
-//    public void 
testShouldIncludeDirectDependencyWhenInvertedWildcardMatchesButDoesntMatchTransitiveChild()
-//    {
-//        
tck.testShouldIncludeDirectDependencyWhenInvertedWildcardMatchesButDoesntMatchTransitiveChild(
 true );
-//    }
+    // public void 
testShouldIncludeDirectDependencyWhenInvertedWildcardMatchesButDoesntMatchTransitiveChild()
+    // {
+    // 
tck.testShouldIncludeDirectDependencyWhenInvertedWildcardMatchesButDoesntMatchTransitiveChild(
 true );
+    // }
 }

Modified: 
maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilterTest.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilterTest.java?rev=997521&r1=997520&r2=997521&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilterTest.java
 (original)
+++ 
maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilterTest.java
 Wed Sep 15 21:57:47 2010
@@ -18,30 +18,34 @@
  */
 package org.apache.maven.shared.artifact.filter;
 
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+
 import java.util.List;
 
 import junit.framework.TestCase;
 
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-
-public class PatternIncludesArtifactFilterTest
-    extends TestCase
+public class PatternIncludesArtifactFilterTest extends TestCase
 {
-    private PatternArtifactFilterTCK tck = new PatternArtifactFilterTCK()
+    private final PatternArtifactFilterTCK tck = new PatternArtifactFilterTCK()
     {
 
-        protected ArtifactFilter createFilter( List patterns )
+        protected ArtifactFilter createFilter( final List patterns )
         {
             return new PatternIncludesArtifactFilter( patterns );
         }
 
-        protected ArtifactFilter createFilter( List patterns, boolean 
actTransitively )
+        protected ArtifactFilter createFilter( final List patterns, final 
boolean actTransitively )
         {
             return new PatternIncludesArtifactFilter( patterns, 
actTransitively );
         }
 
     };
 
+    public void testShouldTriggerBothPatternsWithNonColonWildcards()
+    {
+        tck.testShouldTriggerBothPatternsWithNonColonWildcards( false );
+    }
+
     public void testShouldTriggerBothPatternsWithWildcards()
     {
         tck.testShouldTriggerBothPatternsWithWildcards( false );
@@ -62,6 +66,11 @@ public class PatternIncludesArtifactFilt
         
tck.testShouldIncludeWhenPatternMatchesDependencyTrailAndTransitivityIsEnabled( 
false );
     }
 
+    public void 
testIncludeWhenPatternMatchesDepTrailWithTransitivityUsingNonColonWildcard()
+    {
+        
tck.testIncludeWhenPatternMatchesDepTrailWithTransitivityUsingNonColonWildcard( 
false );
+    }
+
     public void testShouldNotIncludeWhenArtifactIdDiffers()
     {
         tck.testShouldNotIncludeWhenArtifactIdDiffers( false );
@@ -98,8 +107,8 @@ public class PatternIncludesArtifactFilt
     }
 
     // See comment in TCK.
-//    public void 
testShouldIncludeDirectDependencyWhenInvertedWildcardMatchesButDoesntMatchTransitiveChild()
-//    {
-//        
tck.testShouldIncludeDirectDependencyWhenInvertedWildcardMatchesButDoesntMatchTransitiveChild(
 false );
-//    }
+    // public void 
testShouldIncludeDirectDependencyWhenInvertedWildcardMatchesButDoesntMatchTransitiveChild()
+    // {
+    // 
tck.testShouldIncludeDirectDependencyWhenInvertedWildcardMatchesButDoesntMatchTransitiveChild(
 false );
+    // }
 }


Reply via email to