Skip to content

Commit 611baf6

Browse files
authored
[MSHARED-1104] Four element pattern may be GATV or GATC (#29)
This simple patch makes 4 element pattern be interpeted as GATV (as before) or as GATC. Also, cleanup how patterns are created, make everywhere toPattern static helper is used, no need for direct ctor invocation, and it simplifies things.
1 parent 0985a22 commit 611baf6

File tree

1 file changed

+21
-20
lines changed

1 file changed

+21
-20
lines changed

src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java

+21-20
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
*/
2121

2222
import java.util.ArrayList;
23+
import java.util.Arrays;
2324
import java.util.Collection;
2425
import java.util.EnumSet;
2526
import java.util.HashMap;
@@ -364,11 +365,11 @@ private static Pattern compile( String pattern )
364365
}
365366
else if ( tokens.length == 4 )
366367
{
367-
// trivial, full pattern w/o classifier: G:A:T:V
368+
// trivial, full pattern w/ version or classifier: G:A:T:V or G:A:T:C
368369
patterns.add( toPattern( tokens[0], Coordinate.GROUP_ID ) );
369370
patterns.add( toPattern( tokens[1], Coordinate.ARTIFACT_ID ) );
370371
patterns.add( toPattern( tokens[2], Coordinate.TYPE ) );
371-
patterns.add( toPattern( tokens[3], Coordinate.BASE_VERSION ) );
372+
patterns.add( toPattern( tokens[3], Coordinate.BASE_VERSION, Coordinate.CLASSIFIER ) );
372373
}
373374
else if ( tokens.length == 3 )
374375
{
@@ -388,31 +389,25 @@ else if ( tokens.length == 3 )
388389
}
389390
else if ( ANY.equals( tokens[0] ) && ANY.equals( tokens[1] ) )
390391
{
391-
patterns.add( new CoordinateMatchingPattern( pattern, tokens[2],
392-
EnumSet.of( Coordinate.TYPE, Coordinate.CLASSIFIER ) ) );
392+
patterns.add( toPattern( pattern, tokens[2], Coordinate.TYPE, Coordinate.CLASSIFIER ) );
393393
}
394394
else if ( ANY.equals( tokens[0] ) && ANY.equals( tokens[2] ) )
395395
{
396-
patterns.add( new CoordinateMatchingPattern( pattern, tokens[1],
397-
EnumSet.of( Coordinate.ARTIFACT_ID, Coordinate.TYPE ) ) );
396+
patterns.add( toPattern( pattern, tokens[1], Coordinate.ARTIFACT_ID, Coordinate.TYPE ) );
398397
}
399398
else if ( ANY.equals( tokens[0] ) )
400399
{
401-
patterns.add( new CoordinateMatchingPattern( pattern, tokens[1],
402-
EnumSet.of( Coordinate.GROUP_ID, Coordinate.ARTIFACT_ID ) ) );
403-
patterns.add( new CoordinateMatchingPattern( pattern, tokens[2],
404-
EnumSet.of( Coordinate.TYPE, Coordinate.CLASSIFIER ) ) );
400+
patterns.add( toPattern( pattern, tokens[1], Coordinate.GROUP_ID, Coordinate.ARTIFACT_ID ) );
401+
patterns.add( toPattern( pattern, tokens[2], Coordinate.TYPE, Coordinate.CLASSIFIER ) );
405402
}
406403
else if ( ANY.equals( tokens[1] ) && ANY.equals( tokens[2] ) )
407404
{
408-
patterns.add( new CoordinateMatchingPattern( pattern, tokens[0],
409-
EnumSet.of( Coordinate.GROUP_ID, Coordinate.ARTIFACT_ID ) ) );
405+
patterns.add( toPattern( pattern, tokens[0], Coordinate.GROUP_ID, Coordinate.ARTIFACT_ID ) );
410406
}
411407
else if ( ANY.equals( tokens[1] ) )
412408
{
413-
patterns.add( toPattern( tokens[0], Coordinate.GROUP_ID ) );
414-
patterns.add( new CoordinateMatchingPattern( pattern, tokens[2],
415-
EnumSet.of( Coordinate.TYPE, Coordinate.CLASSIFIER ) ) );
409+
patterns.add( toPattern( tokens[0], tokens[0], Coordinate.GROUP_ID ) );
410+
patterns.add( toPattern( pattern, tokens[2], Coordinate.TYPE, Coordinate.CLASSIFIER ) );
416411
}
417412
else if ( ANY.equals( tokens[2] ) )
418413
{
@@ -441,9 +436,8 @@ else if ( tokens.length == 2 )
441436
}
442437
else if ( ANY.equals( tokens[0] ) )
443438
{
444-
patterns.add( new CoordinateMatchingPattern( pattern, tokens[1],
445-
EnumSet.of( Coordinate.GROUP_ID, Coordinate.ARTIFACT_ID, Coordinate.TYPE,
446-
Coordinate.BASE_VERSION ) ) );
439+
patterns.add( toPattern( pattern, tokens[1],
440+
Coordinate.GROUP_ID, Coordinate.ARTIFACT_ID, Coordinate.TYPE, Coordinate.BASE_VERSION ) );
447441
}
448442
else if ( ANY.equals( tokens[1] ) )
449443
{
@@ -481,15 +475,22 @@ else if ( ANY.equals( tokens[1] ) )
481475
}
482476
}
483477

484-
private static Pattern toPattern( final String token, final Coordinate coordinate )
478+
private static Pattern toPattern( final String token, final Coordinate... coordinates )
479+
{
480+
return toPattern( token, token, coordinates );
481+
}
482+
483+
private static Pattern toPattern( final String pattern, final String token, final Coordinate... coordinates )
485484
{
486485
if ( ANY.equals( token ) )
487486
{
488487
return MATCH_ALL_PATTERN;
489488
}
490489
else
491490
{
492-
return new CoordinateMatchingPattern( token, token, EnumSet.of( coordinate ) );
491+
EnumSet<Coordinate> coordinateSet = EnumSet.noneOf( Coordinate.class );
492+
coordinateSet.addAll( Arrays.asList( coordinates ) );
493+
return new CoordinateMatchingPattern( pattern, token, coordinateSet );
493494
}
494495
}
495496

0 commit comments

Comments
 (0)