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 <[email protected]>
Authored: Thu Nov 21 22:17:43 2013 +0100
Committer: Robert Scholte <[email protected]>
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()

Reply via email to