From a9e2a6d039d74b11f5a1f01dca8974cb199441d8 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Fri, 15 Jul 2022 23:49:40 +0200 Subject: [PATCH 1/5] GATV or GATC This simple patch makes 4 element pattern be interpeted as GATV (as before) or as GATV --- .../filter/PatternIncludesArtifactFilter.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 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..0bccb19 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/o 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.CLASSIFIER, Coordinate.BASE_VERSION ) ); } else if ( tokens.length == 3 ) { @@ -481,7 +482,7 @@ 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... coordinate ) { if ( ANY.equals( token ) ) { @@ -489,7 +490,9 @@ private static Pattern toPattern( final String token, final Coordinate coordinat } else { - return new CoordinateMatchingPattern( token, token, EnumSet.of( coordinate ) ); + EnumSet coordinates = EnumSet.noneOf( Coordinate.class ); + coordinates.addAll( Arrays.asList( coordinate ) ); + return new CoordinateMatchingPattern( token, token, coordinates ); } } From 2e87867d0d69fd05027ced43e28af4e904710140 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Sat, 16 Jul 2022 00:01:26 +0200 Subject: [PATCH 2/5] Update comment to properly describe how we interpret it --- .../shared/artifact/filter/PatternIncludesArtifactFilter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 0bccb19..c645b9a 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 @@ -365,7 +365,7 @@ private static Pattern compile( String pattern ) } else if ( tokens.length == 4 ) { - // trivial, full pattern w/o classifier: G:A:T:V or G:A:T:C + // 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 ) ); From 46fcde4b951dcc2c68f8750e57ae60e1ab729316 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Sat, 16 Jul 2022 00:03:18 +0200 Subject: [PATCH 3/5] Order code same as comment to clarity --- .../shared/artifact/filter/PatternIncludesArtifactFilter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 c645b9a..eeaf549 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 @@ -369,7 +369,7 @@ else if ( tokens.length == 4 ) 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.CLASSIFIER, Coordinate.BASE_VERSION ) ); + patterns.add( toPattern( tokens[3], Coordinate.BASE_VERSION, Coordinate.CLASSIFIER ) ); } else if ( tokens.length == 3 ) { From 45d3a01b9d7dead2802dcc3269291e3a31dfb944 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Sat, 16 Jul 2022 10:44:30 +0200 Subject: [PATCH 4/5] Cleanup --- .../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..3dca3c9 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... coordinate ) + { + return toPattern( token, token, coordinate ); + } + + private static Pattern toPattern( final String pattern, final String token, final Coordinate... coordinate ) { 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 coordinates = EnumSet.noneOf( Coordinate.class ); + coordinates.addAll( Arrays.asList( coordinate ) ); + return new CoordinateMatchingPattern( pattern, token, coordinates ); } } From b6bbe6840fe313ee5f83679d5c97f783bc5e4a46 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Sun, 17 Jul 2022 18:48:05 +0200 Subject: [PATCH 5/5] PR comments --- .../filter/PatternIncludesArtifactFilter.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 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 65b2f60..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 @@ -475,12 +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, coordinate ); + return toPattern( token, token, coordinates ); } - private static Pattern toPattern( final String pattern, final String token, final Coordinate... coordinate ) + private static Pattern toPattern( final String pattern, final String token, final Coordinate... coordinates ) { if ( ANY.equals( token ) ) { @@ -488,9 +488,9 @@ private static Pattern toPattern( final String pattern, final String token, fina } else { - EnumSet coordinates = EnumSet.noneOf( Coordinate.class ); - coordinates.addAll( Arrays.asList( coordinate ) ); - return new CoordinateMatchingPattern( pattern, token, coordinates ); + EnumSet coordinateSet = EnumSet.noneOf( Coordinate.class ); + coordinateSet.addAll( Arrays.asList( coordinates ) ); + return new CoordinateMatchingPattern( pattern, token, coordinateSet ); } }