From 611baf61bc8ff8a26bf4af48dcf8ecb53e5c74dc Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Sun, 17 Jul 2022 18:55:03 +0200 Subject: [PATCH] [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. --- .../filter/PatternIncludesArtifactFilter.java | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) 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 b44e6c3..3afbbde 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 @@ -20,6 +20,7 @@ */ import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.EnumSet; import java.util.HashMap; @@ -364,11 +365,11 @@ private static Pattern compile( String pattern ) } else if ( tokens.length == 4 ) { - // trivial, full pattern w/o classifier: G:A:T:V + // trivial, full pattern w/ version or classifier: G:A:T:V or G:A:T:C patterns.add( toPattern( tokens[0], Coordinate.GROUP_ID ) ); patterns.add( toPattern( tokens[1], Coordinate.ARTIFACT_ID ) ); patterns.add( toPattern( tokens[2], Coordinate.TYPE ) ); - patterns.add( toPattern( tokens[3], Coordinate.BASE_VERSION ) ); + patterns.add( toPattern( tokens[3], Coordinate.BASE_VERSION, Coordinate.CLASSIFIER ) ); } else if ( tokens.length == 3 ) { @@ -388,31 +389,25 @@ else if ( tokens.length == 3 ) } else if ( ANY.equals( tokens[0] ) && ANY.equals( tokens[1] ) ) { - patterns.add( new CoordinateMatchingPattern( pattern, tokens[2], - EnumSet.of( Coordinate.TYPE, Coordinate.CLASSIFIER ) ) ); + patterns.add( toPattern( pattern, tokens[2], Coordinate.TYPE, Coordinate.CLASSIFIER ) ); } else if ( ANY.equals( tokens[0] ) && ANY.equals( tokens[2] ) ) { - patterns.add( new CoordinateMatchingPattern( pattern, tokens[1], - EnumSet.of( Coordinate.ARTIFACT_ID, Coordinate.TYPE ) ) ); + patterns.add( toPattern( pattern, tokens[1], Coordinate.ARTIFACT_ID, Coordinate.TYPE ) ); } else if ( ANY.equals( tokens[0] ) ) { - patterns.add( new CoordinateMatchingPattern( pattern, tokens[1], - EnumSet.of( Coordinate.GROUP_ID, Coordinate.ARTIFACT_ID ) ) ); - patterns.add( new CoordinateMatchingPattern( pattern, tokens[2], - EnumSet.of( Coordinate.TYPE, Coordinate.CLASSIFIER ) ) ); + patterns.add( toPattern( pattern, tokens[1], Coordinate.GROUP_ID, Coordinate.ARTIFACT_ID ) ); + patterns.add( toPattern( pattern, tokens[2], Coordinate.TYPE, Coordinate.CLASSIFIER ) ); } else if ( ANY.equals( tokens[1] ) && ANY.equals( tokens[2] ) ) { - patterns.add( new CoordinateMatchingPattern( pattern, tokens[0], - EnumSet.of( Coordinate.GROUP_ID, Coordinate.ARTIFACT_ID ) ) ); + patterns.add( toPattern( pattern, tokens[0], Coordinate.GROUP_ID, Coordinate.ARTIFACT_ID ) ); } else if ( ANY.equals( tokens[1] ) ) { - patterns.add( toPattern( tokens[0], Coordinate.GROUP_ID ) ); - patterns.add( new CoordinateMatchingPattern( pattern, tokens[2], - EnumSet.of( Coordinate.TYPE, Coordinate.CLASSIFIER ) ) ); + patterns.add( toPattern( tokens[0], tokens[0], Coordinate.GROUP_ID ) ); + patterns.add( toPattern( pattern, tokens[2], Coordinate.TYPE, Coordinate.CLASSIFIER ) ); } else if ( ANY.equals( tokens[2] ) ) { @@ -441,9 +436,8 @@ else if ( tokens.length == 2 ) } else if ( ANY.equals( tokens[0] ) ) { - patterns.add( new CoordinateMatchingPattern( pattern, tokens[1], - EnumSet.of( Coordinate.GROUP_ID, Coordinate.ARTIFACT_ID, Coordinate.TYPE, - Coordinate.BASE_VERSION ) ) ); + patterns.add( toPattern( pattern, tokens[1], + Coordinate.GROUP_ID, Coordinate.ARTIFACT_ID, Coordinate.TYPE, Coordinate.BASE_VERSION ) ); } else if ( ANY.equals( tokens[1] ) ) { @@ -481,7 +475,12 @@ else if ( ANY.equals( tokens[1] ) ) } } - private static Pattern toPattern( final String token, final Coordinate coordinate ) + private static Pattern toPattern( final String token, final Coordinate... coordinates ) + { + return toPattern( token, token, coordinates ); + } + + private static Pattern toPattern( final String pattern, final String token, final Coordinate... coordinates ) { if ( ANY.equals( token ) ) { @@ -489,7 +488,9 @@ private static Pattern toPattern( final String token, final Coordinate coordinat } else { - return new CoordinateMatchingPattern( token, token, EnumSet.of( coordinate ) ); + EnumSet coordinateSet = EnumSet.noneOf( Coordinate.class ); + coordinateSet.addAll( Arrays.asList( coordinates ) ); + return new CoordinateMatchingPattern( pattern, token, coordinateSet ); } }