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 2019/09/07 12:24:31 UTC

[maven] 01/01: [MNG-6760] ExclusionArtifactFilter result invalid when wildcard exclusion is followed by other exclusions

This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a commit to branch MNG-6760
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 3eb242c57165cf7786db9e6a9fbfc790912fa2e2
Author: rfscholte <rf...@apache.org>
AuthorDate: Sat Sep 7 14:24:21 2019 +0200

    [MNG-6760] ExclusionArtifactFilter result invalid when wildcard exclusion is followed by other exclusions
---
 .../resolver/filter/ExclusionArtifactFilter.java   | 14 +++++----
 .../filter/ExclusionArtifactFilterTest.java        | 33 ++++++++++++++++++++++
 2 files changed, 41 insertions(+), 6 deletions(-)

diff --git a/maven-core/src/main/java/org/apache/maven/artifact/resolver/filter/ExclusionArtifactFilter.java b/maven-core/src/main/java/org/apache/maven/artifact/resolver/filter/ExclusionArtifactFilter.java
index e0c9994..dd50c31 100644
--- a/maven-core/src/main/java/org/apache/maven/artifact/resolver/filter/ExclusionArtifactFilter.java
+++ b/maven-core/src/main/java/org/apache/maven/artifact/resolver/filter/ExclusionArtifactFilter.java
@@ -47,16 +47,18 @@ public class ExclusionArtifactFilter implements ArtifactFilter
             {
                 return false;
             }
-            if ( WILDCARD.equals( exclusion.getGroupId() ) )
+            if ( WILDCARD.equals( exclusion.getGroupId() )
+                && exclusion.getArtifactId().equals( artifact.getArtifactId() ) )
             {
-                return !exclusion.getArtifactId().equals( artifact.getArtifactId() );
+                return false;
             }
-            if ( WILDCARD.equals( exclusion.getArtifactId() ) )
+            if ( WILDCARD.equals( exclusion.getArtifactId() )
+                && exclusion.getGroupId().equals( artifact.getGroupId() ) )
             {
-                return !exclusion.getGroupId().equals( artifact.getGroupId() );
+                return false;
             }
-            if ( exclusion.getGroupId().equals( artifact.getGroupId() ) && exclusion.getArtifactId().equals(
-                    artifact.getArtifactId() ) )
+            if ( exclusion.getGroupId().equals( artifact.getGroupId() )
+                && exclusion.getArtifactId().equals( artifact.getArtifactId() ) )
             {
                 return false;
             }
diff --git a/maven-core/src/test/java/org/apache/maven/artifact/resolver/filter/ExclusionArtifactFilterTest.java b/maven-core/src/test/java/org/apache/maven/artifact/resolver/filter/ExclusionArtifactFilterTest.java
index 62a4911..53b6aad 100644
--- a/maven-core/src/test/java/org/apache/maven/artifact/resolver/filter/ExclusionArtifactFilterTest.java
+++ b/maven-core/src/test/java/org/apache/maven/artifact/resolver/filter/ExclusionArtifactFilterTest.java
@@ -24,6 +24,7 @@ import org.apache.maven.model.Exclusion;
 import org.junit.Before;
 import org.junit.Test;
 
+import java.util.Arrays;
 import java.util.Collections;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -120,4 +121,36 @@ public class ExclusionArtifactFilterTest
 
         assertThat( filter.include( artifact ), is( false ) );
     }
+    
+    @Test
+    public void testMultipleExclusionsExcludeArtifactIdWildcard()
+    {
+        Exclusion exclusion1 = new Exclusion();
+        exclusion1.setGroupId( "org.apache.groovy" );
+        exclusion1.setArtifactId( "*" );
+        
+        Exclusion exclusion2 = new Exclusion();
+        exclusion2.setGroupId( "org.apache.maven" );
+        exclusion2.setArtifactId( "maven-core" );
+        
+        ExclusionArtifactFilter filter = new ExclusionArtifactFilter( Arrays.asList( exclusion1, exclusion2 ) );
+        
+        assertThat( filter.include( artifact ), is( false ) );
+    }
+    
+    @Test
+    public void testMultipleExclusionsExcludeGroupIdWildcard()
+    {
+        Exclusion exclusion1 = new Exclusion();
+        exclusion1.setGroupId( "*" );
+        exclusion1.setArtifactId( "maven-model" );
+        
+        Exclusion exclusion2 = new Exclusion();
+        exclusion2.setGroupId( "org.apache.maven" );
+        exclusion2.setArtifactId( "maven-core" );
+        
+        ExclusionArtifactFilter filter = new ExclusionArtifactFilter( Arrays.asList( exclusion1, exclusion2 ) );
+        
+        assertThat( filter.include( artifact ), is( false ) );
+    }
 }
\ No newline at end of file