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 2013/11/21 22:18:22 UTC

git commit: [MNG-3832] Allow wildcards in dependency exclusions Already supported since M3.0, now adjust warnings

Updated Branches:
  refs/heads/master b5ce17bb8 -> 65c135d52


[MNG-3832] Allow wildcards in dependency exclusions
Already supported since M3.0, now adjust warnings


Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/65c135d5
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/65c135d5
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/65c135d5

Branch: refs/heads/master
Commit: 65c135d5298b2680f03593a221b15bb4689c89e9
Parents: b5ce17b
Author: Robert Scholte <rf...@codehaus.org>
Authored: Thu Nov 21 22:17:43 2013 +0100
Committer: Robert Scholte <rf...@codehaus.org>
Committed: Thu Nov 21 22:17:43 2013 +0100

----------------------------------------------------------------------
 .../model/validation/DefaultModelValidator.java | 41 ++++++++++++++++++--
 .../validation/DefaultModelValidatorTest.java   |  9 ++++-
 2 files changed, 45 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/65c135d5/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
index 67d255f..54597d9 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
@@ -64,6 +64,8 @@ public class DefaultModelValidator
 
     private static final Pattern ID_REGEX = Pattern.compile( "[A-Za-z0-9_\\-.]+" );
 
+    private static final Pattern ID_WITH_WILDCARDS_REGEX = Pattern.compile( "[A-Za-z0-9_\\-.?*]+" );
+
     private static final String ILLEGAL_FS_CHARS = "\\/:\"<>|?*";
 
     private static final String ILLEGAL_VERSION_CHARS = ILLEGAL_FS_CHARS;
@@ -526,11 +528,22 @@ public class DefaultModelValidator
         {
             for ( Exclusion exclusion : d.getExclusions() )
             {
-                validateId( prefix + "exclusions.exclusion.groupId", problems, Severity.WARNING, Version.V20,
-                            exclusion.getGroupId(), d.getManagementKey(), exclusion );
+                if ( request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 )
+                {
+                    validateId( prefix + "exclusions.exclusion.groupId", problems, Severity.WARNING, Version.V20,
+                                exclusion.getGroupId(), d.getManagementKey(), exclusion );
+
+                    validateId( prefix + "exclusions.exclusion.artifactId", problems, Severity.WARNING, Version.V20,
+                                exclusion.getArtifactId(), d.getManagementKey(), exclusion );
+                }
+                else
+                {
+                    validateIdWithWildcards( prefix + "exclusions.exclusion.groupId", problems, Severity.WARNING, Version.V30,
+                                exclusion.getGroupId(), d.getManagementKey(), exclusion );
 
-                validateId( prefix + "exclusions.exclusion.artifactId", problems, Severity.WARNING, Version.V20,
-                            exclusion.getArtifactId(), d.getManagementKey(), exclusion );
+                    validateIdWithWildcards( prefix + "exclusions.exclusion.artifactId", problems, Severity.WARNING, Version.V30,
+                                exclusion.getArtifactId(), d.getManagementKey(), exclusion );
+                }
             }
         }
     }
@@ -634,6 +647,26 @@ public class DefaultModelValidator
         }
     }
 
+    private boolean validateIdWithWildcards( String fieldName, ModelProblemCollector problems, Severity severity, Version version, String id,
+                                String sourceHint, InputLocationTracker tracker )
+    {
+        if ( !validateStringNotEmpty( fieldName, problems, severity, version, id, sourceHint, tracker ) )
+        {
+            return false;
+        }
+        else
+        {
+            boolean match = ID_WITH_WILDCARDS_REGEX.matcher( id ).matches();
+            if ( !match )
+            {
+                addViolation( problems, severity, version, fieldName, sourceHint, "with value '" + id
+                    + "' does not match a valid id pattern.", tracker );
+            }
+            return match;
+        }
+    }
+
+    
     private boolean validateStringNoExpression( String fieldName, ModelProblemCollector problems, Severity severity, Version version,
                                                 String string, InputLocationTracker tracker )
     {

http://git-wip-us.apache.org/repos/asf/maven/blob/65c135d5/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java b/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
index 065a06f..ac7ead0 100644
--- a/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
+++ b/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
@@ -555,7 +555,7 @@ public class DefaultModelValidatorTest
     public void testBadDependencyExclusionId()
         throws Exception
     {
-        SimpleProblemCollector result = validate( "bad-dependency-exclusion-id.xml" );
+        SimpleProblemCollector result = validateEffective( "bad-dependency-exclusion-id.xml", ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 );
 
         assertViolations( result, 0, 0, 2 );
 
@@ -563,6 +563,13 @@ public class DefaultModelValidatorTest
                         "'dependencies.dependency.exclusions.exclusion.groupId' for gid:aid:jar" );
         assertContains( result.getWarnings().get( 1 ),
                         "'dependencies.dependency.exclusions.exclusion.artifactId' for gid:aid:jar" );
+        
+        // MNG-3832: Aether (part of M3+) supports wildcard expressions for exclusions
+        
+        SimpleProblemCollector result_30 = validate( "bad-dependency-exclusion-id.xml" );
+
+        assertViolations( result_30, 0, 0, 0 );
+
     }
 
     public void testMissingDependencyExclusionId()