[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() ); + } + }