You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2016/06/14 21:43:44 UTC
svn commit: r1748472 - in
/maven/shared/trunk/maven-common-artifact-filters/src:
main/java/org/apache/maven/shared/artifact/filter/resolve/transform/
test/java/org/apache/maven/shared/artifact/filter/resolve/transform/
Author: rfscholte
Date: Tue Jun 14 21:43:44 2016
New Revision: 1748472
URL: http://svn.apache.org/viewvc?rev=1748472&view=rev
Log:
[MSHARED-599] Allow classifier in PatternInclusionsFilter
Modified:
maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherFilterTransformer.java
maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherFilterTransformer.java
maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherFilterTransformerTest.java
maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherFilterTransformerTest.java
Modified: maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherFilterTransformer.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherFilterTransformer.java?rev=1748472&r1=1748471&r2=1748472&view=diff
==============================================================================
--- maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherFilterTransformer.java (original)
+++ maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherFilterTransformer.java Tue Jun 14 21:43:44 2016
@@ -22,6 +22,8 @@ package org.apache.maven.shared.artifact
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.apache.maven.shared.artifact.filter.resolve.AbstractFilter;
import org.apache.maven.shared.artifact.filter.resolve.AndFilter;
@@ -93,6 +95,18 @@ public class EclipseAetherFilterTransfor
@Override
public DependencyFilter transform( PatternInclusionsFilter filter )
{
+ // if any include contains a classifier:
+ // split all includes and make it an or-filter for every include
+ // for the classifier, add an and-filter with a classifierfilter and patterninclusionfilter
+
+ for ( String include : filter.getIncludes() )
+ {
+ if ( include.matches( ".*:.*:.*:.*:.*" ) )
+ {
+ return newAdvancedPatternInclusionFilter( filter.getIncludes() );
+ }
+ }
+
return new PatternInclusionsDependencyFilter( filter.getIncludes() );
}
@@ -108,4 +122,47 @@ public class EclipseAetherFilterTransfor
}
};
}
+
+ private DependencyFilter newAdvancedPatternInclusionFilter( Collection<String> includes )
+ {
+ List<DependencyFilter> filters = new ArrayList<DependencyFilter>( includes.size() );
+
+ Pattern pattern = Pattern.compile( "(.*:.*:.*):(.+)(:.*)" );
+ for ( String include : includes )
+ {
+ Matcher matcher = pattern.matcher( include );
+ if ( matcher.matches() )
+ {
+ DependencyFilter patternFilter =
+ new PatternInclusionsDependencyFilter( matcher.group( 1 ) + matcher.group( 3 ) );
+
+ final String classifier = matcher.group( 2 );
+
+ DependencyFilter classifierFilter = new DependencyFilter()
+ {
+ @Override
+ public boolean accept( DependencyNode node, List<DependencyNode> parents )
+ {
+ String nodeClassifier = node.getArtifact().getClassifier();
+
+ if ( nodeClassifier == null )
+ {
+ return false;
+ }
+ else
+ {
+ return "*".equals( classifier ) || nodeClassifier.matches( classifier );
+ }
+ }
+ };
+
+ filters.add( new AndDependencyFilter( patternFilter, classifierFilter ) );
+ }
+ else
+ {
+ filters.add( new PatternInclusionsDependencyFilter( include ) );
+ }
+ }
+ return new OrDependencyFilter( filters );
+ }
}
Modified: maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherFilterTransformer.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherFilterTransformer.java?rev=1748472&r1=1748471&r2=1748472&view=diff
==============================================================================
--- maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherFilterTransformer.java (original)
+++ maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherFilterTransformer.java Tue Jun 14 21:43:44 2016
@@ -22,6 +22,8 @@ package org.apache.maven.shared.artifact
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.apache.maven.shared.artifact.filter.resolve.AbstractFilter;
import org.apache.maven.shared.artifact.filter.resolve.AndFilter;
@@ -93,6 +95,18 @@ public class SonatypeAetherFilterTransfo
@Override
public DependencyFilter transform( PatternInclusionsFilter filter )
{
+ // if any include contains a classifier:
+ // split all includes and make it an or-filter for every include
+ // for the classifier, add an and-filter with a classifierfilter and patterninclusionfilter
+
+ for ( String include : filter.getIncludes() )
+ {
+ if ( include.matches( ".*:.*:.*:.*:.*" ) )
+ {
+ return newAdvancedPatternInclusionFilter( filter.getIncludes() );
+ }
+ }
+
return new PatternInclusionsDependencyFilter( filter.getIncludes() );
}
@@ -108,4 +122,47 @@ public class SonatypeAetherFilterTransfo
}
};
}
+
+ private DependencyFilter newAdvancedPatternInclusionFilter( Collection<String> includes )
+ {
+ List<DependencyFilter> filters = new ArrayList<DependencyFilter>( includes.size() );
+
+ Pattern pattern = Pattern.compile( "(.*:.*:.*):(.+)(:.*)" );
+ for ( String include : includes )
+ {
+ Matcher matcher = pattern.matcher( include );
+ if ( matcher.matches() )
+ {
+ DependencyFilter patternFilter =
+ new PatternInclusionsDependencyFilter( matcher.group( 1 ) + matcher.group( 3 ) );
+
+ final String classifier = matcher.group( 2 );
+
+ DependencyFilter classifierFilter = new DependencyFilter()
+ {
+ @Override
+ public boolean accept( DependencyNode node, List<DependencyNode> parents )
+ {
+ String nodeClassifier = node.getDependency().getArtifact().getClassifier();
+
+ if ( nodeClassifier == null )
+ {
+ return false;
+ }
+ else
+ {
+ return "*".equals( classifier ) || nodeClassifier.matches( classifier );
+ }
+ }
+ };
+
+ filters.add( new AndDependencyFilter( patternFilter, classifierFilter ) );
+ }
+ else
+ {
+ filters.add( new PatternInclusionsDependencyFilter( include ) );
+ }
+ }
+ return new OrDependencyFilter( filters );
+ }
}
Modified: maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherFilterTransformerTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherFilterTransformerTest.java?rev=1748472&r1=1748471&r2=1748472&view=diff
==============================================================================
--- maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherFilterTransformerTest.java (original)
+++ maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherFilterTransformerTest.java Tue Jun 14 21:43:44 2016
@@ -139,7 +139,22 @@ public class EclipseAetherFilterTransfor
assertFalse( dependencyFilter.accept( newDependencyNode( "x:a:v", "runtime" ), null ) );
}
-
+
+ @Test
+ public void testTransformClassifierPatternInclusionsFilter()
+ {
+ PatternInclusionsFilter filter =
+ new PatternInclusionsFilter( Collections.singletonList( "g:*:*:c:*" ) );
+
+ DependencyFilter dependencyFilter = filter.transform( transformer );
+
+ assertTrue( dependencyFilter.accept( newDependencyNode( "g:a:v:c:*", "runtime" ), null ) );
+
+ assertFalse( dependencyFilter.accept( newDependencyNode( "g:a:v", "runtime" ), null ) );
+
+ assertFalse( dependencyFilter.accept( newDependencyNode( "x:a:v:c:*", "runtime" ), null ) );
+ }
+
@Test
public void testTransformAbstractFilter() throws Exception
{
Modified: maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherFilterTransformerTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherFilterTransformerTest.java?rev=1748472&r1=1748471&r2=1748472&view=diff
==============================================================================
--- maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherFilterTransformerTest.java (original)
+++ maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherFilterTransformerTest.java Tue Jun 14 21:43:44 2016
@@ -141,6 +141,22 @@ public class SonatypeAetherFilterTransfo
assertFalse( dependencyFilter.accept( newDependencyNode( "x:a:v", "runtime" ), null ) );
}
+
+ @Test
+ public void testTransformClassifierPatternInclusionsFilter()
+ {
+ PatternInclusionsFilter filter =
+ new PatternInclusionsFilter( Collections.singletonList( "g:*:*:c:*" ) );
+
+ DependencyFilter dependencyFilter = filter.transform( transformer );
+
+ assertTrue( dependencyFilter.accept( newDependencyNode( "g:a:v:c:*", "runtime" ), null ) );
+
+ assertFalse( dependencyFilter.accept( newDependencyNode( "g:a:v", "runtime" ), null ) );
+
+ assertFalse( dependencyFilter.accept( newDependencyNode( "x:a:v:c:*", "runtime" ), null ) );
+ }
+
@Test
public void testTransformAbstractFilter() throws Exception
{