svn commit: r833040 - in /maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model: normalization/DefaultModelNormalizer.java validation/DefaultModelValidator.java

View: New views
1 Messages — Rating Filter:   Alert me  

svn commit: r833040 - in /maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model: normalization/DefaultModelNormalizer.java validation/DefaultModelValidator.java

by bentmann :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Author: bentmann
Date: Thu Nov  5 12:37:30 2009
New Revision: 833040

URL: http://svn.apache.org/viewvc?rev=833040&view=rev
Log:
[MNG-4427] Bad error message with duplicate dependencies that don't declare a version

Modified:
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java?rev=833040&r1=833039&r2=833040&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java Thu Nov  5 12:37:30 2009
@@ -69,20 +69,19 @@
             build.setPlugins( new ArrayList<Plugin>( normalized.values() ) );
         }
 
-        if ( request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 )
+        /*
+         * NOTE: This is primarily to keep backward-compat with Maven 2.x which did not validate that dependencies are
+         * unique within a single POM. Upon multiple declarations, 2.x just kept the last one but retained the order of
+         * the first occurrence. So when we're in lenient/compat mode, we have to deal with such broken POMs and mimic
+         * the way 2.x works. When we're in strict mode, the removal of duplicates just saves other merging steps from
+         * aftereffects and bogus error messages.
+         */
+        Map<String, Dependency> dependencies = new LinkedHashMap<String, Dependency>();
+        for ( Dependency dependency : model.getDependencies() )
         {
-            /*
-             * NOTE: This is to keep backward-compat with Maven 2.x which did not validate that dependencies are unique
-             * within a single POM. Upon multiple declarations, 2.x just kept the last one. So when we're in
-             * lenient/compat mode, we have to deal with such broken POMs and mimic the way 2.x works.
-             */
-            Map<String, Dependency> dependencies = new LinkedHashMap<String, Dependency>();
-            for ( Dependency dependency : model.getDependencies() )
-            {
-                dependencies.put( dependency.getManagementKey(), dependency );
-            }
-            model.setDependencies( new ArrayList<Dependency>( dependencies.values() ) );
+            dependencies.put( dependency.getManagementKey(), dependency );
         }
+        model.setDependencies( new ArrayList<Dependency>( dependencies.values() ) );
     }
 
     private static class DuplicateMerger

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java?rev=833040&r1=833039&r2=833040&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java Thu Nov  5 12:37:30 2009
@@ -377,13 +377,17 @@
                 boolean warning = request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0;
 
                 String msg;
-                if ( String.valueOf( existing.getVersion() ).equals( dependency.getVersion() ) )
+                if ( StringUtils.isEmpty( existing.getVersion() ) && StringUtils.isEmpty( dependency.getVersion() ) )
                 {
-                    msg = "duplicate declaration of " + dependency.getVersion();
+                    msg = "duplicate declaration";
+                }
+                else if ( existing.getVersion().equals( dependency.getVersion() ) )
+                {
+                    msg = "duplicate declaration of version " + dependency.getVersion();
                 }
                 else
                 {
-                    msg = existing.getVersion() + " vs " + dependency.getVersion();
+                    msg = "version " + existing.getVersion() + " vs " + dependency.getVersion();
                 }
 
                 addViolation( problems, warning, "'" + prefix