[MNG-3131] Error message is misleading if a missing plugin parameter is of a 
type like List


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

Branch: refs/heads/master
Commit: f6f4ef5e03fe208d3c52a297a7fc6b7a819bb48c
Parents: c5c1eab
Author: rfscholte <rfscho...@apache.org>
Authored: Fri Mar 1 16:14:22 2013 +0100
Committer: rfscholte <rfscho...@apache.org>
Committed: Fri Mar 1 16:14:22 2013 +0100

----------------------------------------------------------------------
 .../maven/plugin/PluginParameterException.java     |   18 ++++++++-
 .../maven/plugin/PluginParameterExceptionTest.java |   33 +++++++++++++++
 2 files changed, 50 insertions(+), 1 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/f6f4ef5e/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterException.java
----------------------------------------------------------------------
diff --git 
a/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterException.java
 
b/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterException.java
index 350349d..4027fcc 100644
--- 
a/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterException.java
+++ 
b/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterException.java
@@ -23,6 +23,7 @@ import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
 import org.apache.maven.plugin.descriptor.Parameter;
@@ -83,6 +84,7 @@ public class PluginParameterException
             boolean isArray = param.getType().endsWith( "[]" );
             boolean isCollection = false;
             boolean isMap = false;
+            boolean isProperties = false;
             if ( !isArray )
             {
                 try
@@ -90,6 +92,7 @@ public class PluginParameterException
                     //assuming Type is available in current ClassLoader
                     isCollection = Collection.class.isAssignableFrom( 
Class.forName( param.getType() ) );
                     isMap = Map.class.isAssignableFrom( Class.forName( 
param.getType() ) );
+                    isProperties = Properties.class.isAssignableFrom( 
Class.forName( param.getType() ) );
                 }
                 catch ( ClassNotFoundException e )
                 {
@@ -106,6 +109,13 @@ public class PluginParameterException
                 messageBuffer.append(  '\n' );
                 messageBuffer.append( "    <item>" );
             }
+            else if ( isProperties )
+            {
+                messageBuffer.append(  '\n' );
+                messageBuffer.append( "    <property>\n" );
+                messageBuffer.append( "      <name>KEY</name>\n" );
+                messageBuffer.append( "      <value>" );
+            }
             else if ( isMap )
             {
                 messageBuffer.append(  '\n' );
@@ -116,7 +126,13 @@ public class PluginParameterException
             {
                 messageBuffer.append( "</item>\n" );
                 messageBuffer.append( "  " );
-            }    
+            }
+            else if ( isProperties )
+            {
+                messageBuffer.append( "</value>\n" );
+                messageBuffer.append( "    </property>\n" );
+                messageBuffer.append( "  " );
+            }
             else if ( isMap )
             {
                 messageBuffer.append( "</KEY>\n" );

http://git-wip-us.apache.org/repos/asf/maven/blob/f6f4ef5e/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExceptionTest.java
----------------------------------------------------------------------
diff --git 
a/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExceptionTest.java
 
b/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExceptionTest.java
index 4108b5c..7f94bac 100644
--- 
a/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExceptionTest.java
+++ 
b/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExceptionTest.java
@@ -127,5 +127,38 @@ public class PluginParameterExceptionTest
                 "</configuration>.\n", exception.buildDiagnosticMessage() );
     }
 
+    public void testMissingRequiredPropertiesTypeParameter()
+    {
+        MojoDescriptor mojoDescriptor = new MojoDescriptor();
+        mojoDescriptor.setGoal( "goal" );
+        PluginDescriptor pluginDescriptor = new PluginDescriptor();
+        pluginDescriptor.setGoalPrefix( "goalPrefix" );
+        pluginDescriptor.setArtifactId( "artifactId" );
+        mojoDescriptor.setPluginDescriptor( pluginDescriptor );
+
+        Parameter parameter = new Parameter();
+        parameter.setType( "java.util.Properties" );
+        parameter.setName( "toAddresses" );
+        
+        parameter.setRequired( true );
+
+        PluginParameterException exception =
+            new PluginParameterException( mojoDescriptor, 
Collections.singletonList( parameter ) );
+
+        assertEquals( "One or more required plugin parameters are 
invalid/missing for 'goalPrefix:goal'\n" + 
+                "\n" + 
+                "[0] Inside the definition for plugin 'artifactId', specify 
the following:\n" + 
+                "\n" + 
+                "<configuration>\n" + 
+                "  ...\n" + 
+                "  <toAddresses>\n" +
+                "    <property>\n" +
+                "      <name>KEY</name>\n" +
+                "      <value>VALUE</value>\n" +
+                "    </property>\n" +
+                "  </toAddresses>\n" + 
+                "</configuration>.\n", exception.buildDiagnosticMessage() );
+    }
+
 
 }

Reply via email to