You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2021/01/23 00:47:21 UTC
[maven-common-artifact-filters] 04/04: Add some comments and rename
This is an automated email from the ASF dual-hosted git repository.
slachiewicz pushed a commit to branch speed
in repository https://gitbox.apache.org/repos/asf/maven-common-artifact-filters.git
commit c042ee5c67a273cc5cb71c8a5281a5624d6b259c
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Nov 20 18:35:45 2020 +0100
Add some comments and rename
---
.../filter/PatternIncludesArtifactFilter.java | 74 ++++++++++++++++++----
1 file changed, 60 insertions(+), 14 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 bf5138a..97db048 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
@@ -148,13 +148,13 @@ public class PatternIncludesArtifactFilter
protected boolean patternMatches( final Artifact artifact )
{
// Check if the main artifact matches
- char[][] tokens = new char[][] {
+ char[][] artifactGatvCharArray = new char[][] {
emptyOrChars( artifact.getGroupId() ),
emptyOrChars( artifact.getArtifactId() ),
emptyOrChars( artifact.getType() ),
emptyOrChars( artifact.getBaseVersion() )
};
- Boolean match = match( tokens );
+ Boolean match = match( artifactGatvCharArray );
if ( match != null )
{
return match;
@@ -168,8 +168,8 @@ public class PatternIncludesArtifactFilter
{
for ( String trailItem : depTrail )
{
- char[][] depTokens = tokenizeAndSplit( trailItem );
- match = match( depTokens );
+ char[][] depGatvCharArray = tokenizeAndSplit( trailItem );
+ match = match( depGatvCharArray );
if ( match != null)
{
return match;
@@ -181,7 +181,7 @@ public class PatternIncludesArtifactFilter
return false;
}
- private Boolean match( char[][] tokens )
+ private Boolean match( char[][] gatvCharArray )
{
if ( simplePatterns != null && simplePatterns.size() > 0 )
{
@@ -193,7 +193,7 @@ public class PatternIncludesArtifactFilter
{
sb.append( ":" );
}
- sb.append( tokens[i] );
+ sb.append( gatvCharArray[i] );
Map<String, Pattern> map = simplePatterns.get( i );
if ( map != null )
{
@@ -210,7 +210,7 @@ public class PatternIncludesArtifactFilter
// Check all other patterns
for ( Pattern pattern : patterns )
{
- if ( pattern.matches( tokens ) )
+ if ( pattern.matches( gatvCharArray ) )
{
patternsTriggered.add( pattern );
return !(pattern instanceof NegativePattern);
@@ -671,16 +671,19 @@ public class PatternIncludesArtifactFilter
}
}
+ /** Creates a positional matching pattern */
private static Pattern match( String pattern, char[] token, int posVal )
{
return match( pattern, token, posVal, posVal );
}
+ /** Creates a positional matching pattern */
private static Pattern match( char[] token, int posVal )
{
return match( "", token, posVal, posVal );
}
+ /** Creates a positional matching pattern */
private static Pattern match( String pattern, char[] token, int posMin, int posMax )
{
boolean hasWildcard = false;
@@ -702,36 +705,45 @@ public class PatternIncludesArtifactFilter
}
}
+ /** Creates a positional matching pattern */
private static Pattern match( char[] token, int posMin, int posMax )
{
return new PosPattern( "", token, posMin, posMax );
}
+ /** Creates an AND pattern */
private static Pattern and( String pattern, Pattern... patterns )
{
return new AndPattern( pattern, patterns );
}
+ /** Creates an AND pattern */
private static Pattern and( Pattern... patterns )
{
return and( "", patterns );
}
+ /** Creates an OR pattern */
private static Pattern or( String pattern, Pattern... patterns )
{
return new OrPattern( pattern, patterns );
}
+ /** Creates an OR pattern */
private static Pattern or( Pattern... patterns )
{
return or( "", patterns );
}
+ /** Creates a match-all pattern */
private static Pattern all( String pattern )
{
return new MatchAllPattern( pattern );
}
+ /**
+ * Abstract class for patterns
+ */
static abstract class Pattern
{
private final String pattern;
@@ -743,12 +755,19 @@ public class PatternIncludesArtifactFilter
public abstract boolean matches( char[][] parts );
+ /**
+ * Returns a string containing a fixed artifact gatv coordinates
+ * or null if the pattern can not be translated.
+ */
public String translateEquals()
{
return null;
}
- public String translateEquals( int pos )
+ /**
+ * Check if the this pattern is a fixed pattern on the specified pos.
+ */
+ protected String translateEquals( int pos )
{
return null;
}
@@ -759,6 +778,9 @@ public class PatternIncludesArtifactFilter
}
}
+ /**
+ * Simple pattern which performs a logical AND between one or more patterns.
+ */
static class AndPattern extends Pattern
{
private final Pattern[] patterns;
@@ -807,6 +829,9 @@ public class PatternIncludesArtifactFilter
}
}
+ /**
+ * Simple pattern which performs a logical OR between one or more patterns.
+ */
static class OrPattern extends Pattern
{
private final Pattern[] patterns;
@@ -831,16 +856,21 @@ public class PatternIncludesArtifactFilter
}
}
+ /**
+ * A positional matching pattern, to check if a token in the gatv coordinates
+ * having a position between posMin and posMax (both inclusives) can match
+ * the pattern.
+ */
static class PosPattern extends Pattern
{
- private final char[] token;
+ private final char[] patternCharArray;
private final int posMin;
private final int posMax;
- public PosPattern( String pattern, char[] token, int posMin, int posMax )
+ public PosPattern( String pattern, char[] patternCharArray, int posMin, int posMax )
{
super( pattern );
- this.token = token;
+ this.patternCharArray = patternCharArray;
this.posMin = posMin;
this.posMax = posMax;
}
@@ -850,7 +880,7 @@ public class PatternIncludesArtifactFilter
{
for ( int i = posMin; i <= posMax; i++ )
{
- if ( match( token, parts[i], i == 3 ) )
+ if ( match( patternCharArray, parts[i], i == 3 ) )
{
return true;
}
@@ -859,16 +889,20 @@ public class PatternIncludesArtifactFilter
}
}
+ /**
+ * Looks for an exact match in the gatv coordinates between
+ * posMin and posMax (both inclusives)
+ */
static class EqPattern extends Pattern
{
private final char[] token;
private final int posMin;
private final int posMax;
- public EqPattern( String pattern, char[] token, int posMin, int posMax )
+ public EqPattern( String pattern, char[] patternCharArray, int posMin, int posMax )
{
super( pattern );
- this.token = token;
+ this.token = patternCharArray;
this.posMin = posMin;
this.posMax = posMax;
}
@@ -886,6 +920,12 @@ public class PatternIncludesArtifactFilter
return false;
}
+ @Override
+ public String translateEquals()
+ {
+ return translateEquals( 0 );
+ }
+
public String translateEquals( int pos )
{
return posMin == pos && posMax == pos
@@ -895,6 +935,9 @@ public class PatternIncludesArtifactFilter
}
+ /**
+ * Matches all input
+ */
static class MatchAllPattern extends Pattern
{
public MatchAllPattern( String pattern )
@@ -909,6 +952,9 @@ public class PatternIncludesArtifactFilter
}
}
+ /**
+ * Negative pattern
+ */
static class NegativePattern extends Pattern
{
private final Pattern inner;