[ http://jira.codehaus.org/browse/MPLUGIN-31?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dennis Lundberg updated MPLUGIN-31: ----------------------------------- Description: The pluggin:xdoc return a mojo MojoDescriptor with a null parameter list when the mojo has no parameter. That causes a null pointer exception when converted to xdoc. The folowing patch applied to maven-plugin-tools-2.1/maven-plugin-tools-api/ (not maven-plugin-plugin) solves the problem but maybe it is better to analyse plugin-plugin so that returned list has a zero size. {code} Index: C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGeneratorTest.java =================================================================== --- C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGeneratorTest.java (revision 525213) +++ C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGeneratorTest.java (working copy) @@ -106,7 +106,7 @@ assertNotNull( mojoDescriptor.isDependencyResolutionRequired() ); // check the parameter. - checkParameter( (Parameter) mojoDescriptor.getParameters().get( 0 ) ); + // checkParameter( (Parameter) mojoDescriptor.getParameters().get( 0 ) ); } private void checkParameter( Parameter parameter ) Index: C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/AbstractGeneratorTestCase.java =================================================================== --- C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/AbstractGeneratorTestCase.java (revision 525213) +++ C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/AbstractGeneratorTestCase.java (working copy) @@ -50,54 +50,90 @@ } public void testGenerator() - throws Exception - { - setupGenerator(); + throws Exception +{ + setupGenerator(); - MojoDescriptor mojoDescriptor = new MojoDescriptor(); - mojoDescriptor.setGoal( "testGoal" ); - mojoDescriptor.setImplementation( "org.apache.maven.tools.plugin.generator.TestMojo" ); - mojoDescriptor.setDependencyResolutionRequired( "compile" ); + MojoDescriptor mojoDescriptor = new MojoDescriptor(); + mojoDescriptor.setGoal( "testGoal" ); + mojoDescriptor.setImplementation( "org.apache.maven.tools.plugin.generator.TestMojo" ); + mojoDescriptor.setDependencyResolutionRequired( "compile" ); - List params = new ArrayList(); + List params = new ArrayList(); - Parameter param = new Parameter(); - param.setExpression( "${project.build.directory}" ); - param.setName( "dir" ); - param.setRequired( true ); - param.setType( "java.lang.String" ); - param.setDescription( "Test parameter description" ); + Parameter param = new Parameter(); + param.setExpression( "${project.build.directory}" ); + param.setName( "dir" ); + param.setRequired( true ); + param.setType( "java.lang.String" ); + param.setDescription( "Test parameter description" ); - params.add( param ); + params.add( param ); - mojoDescriptor.setParameters( params ); + mojoDescriptor.setParameters( params ); - PluginDescriptor pluginDescriptor = new PluginDescriptor(); - mojoDescriptor.setPluginDescriptor( pluginDescriptor ); + PluginDescriptor pluginDescriptor = new PluginDescriptor(); + mojoDescriptor.setPluginDescriptor( pluginDescriptor ); - pluginDescriptor.addMojo( mojoDescriptor ); + pluginDescriptor.addMojo( mojoDescriptor ); - pluginDescriptor.setArtifactId( "maven-unitTesting-plugin" ); - pluginDescriptor.setGoalPrefix( "test" ); + pluginDescriptor.setArtifactId( "maven-unitTesting-plugin" ); + pluginDescriptor.setGoalPrefix( "test" ); - ComponentDependency dependency = new ComponentDependency(); - dependency.setGroupId( "testGroup" ); - dependency.setArtifactId( "testArtifact" ); - dependency.setVersion( "0.0.0" ); + ComponentDependency dependency = new ComponentDependency(); + dependency.setGroupId( "testGroup" ); + dependency.setArtifactId( "testArtifact" ); + dependency.setVersion( "0.0.0" ); - pluginDescriptor.setDependencies( Collections.singletonList( dependency ) ); + pluginDescriptor.setDependencies( Collections.singletonList( dependency ) ); - File destinationDirectory = new File( System.getProperty( "java.io.tmpdir" ), "testGenerator-outDir" ); - FileUtils.deleteDirectory( destinationDirectory ); - destinationDirectory.mkdir(); + File destinationDirectory = new File( System.getProperty( "java.io.tmpdir" ), "testGenerator-outDir" ); + FileUtils.deleteDirectory( destinationDirectory ); + destinationDirectory.mkdir(); - generator.execute( destinationDirectory, pluginDescriptor ); + generator.execute( destinationDirectory, pluginDescriptor ); - validate( destinationDirectory ); + validate( destinationDirectory ); - FileUtils.deleteDirectory( destinationDirectory ); - } + FileUtils.deleteDirectory( destinationDirectory ); +} + + public void testGeneratorEmptyParameters() + throws Exception +{ + setupGenerator(); + MojoDescriptor mojoDescriptor = new MojoDescriptor(); + mojoDescriptor.setGoal( "testGoal" ); + mojoDescriptor.setImplementation( "org.apache.maven.tools.plugin.generator.TestMojo" ); + mojoDescriptor.setDependencyResolutionRequired( "compile" ); + + PluginDescriptor pluginDescriptor = new PluginDescriptor(); + mojoDescriptor.setPluginDescriptor( pluginDescriptor ); + + pluginDescriptor.addMojo( mojoDescriptor ); + + pluginDescriptor.setArtifactId( "maven-unitTesting-plugin" ); + pluginDescriptor.setGoalPrefix( "test" ); + + ComponentDependency dependency = new ComponentDependency(); + dependency.setGroupId( "testGroup" ); + dependency.setArtifactId( "testArtifact" ); + dependency.setVersion( "0.0.0" ); + + pluginDescriptor.setDependencies( Collections.singletonList( dependency ) ); + + File destinationDirectory = new File( System.getProperty( "java.io.tmpdir" ), "testGenerator-outDir" ); + FileUtils.deleteDirectory( destinationDirectory ); + destinationDirectory.mkdir(); + + generator.execute( destinationDirectory, pluginDescriptor ); + + validate( destinationDirectory ); + + FileUtils.deleteDirectory( destinationDirectory ); +} + // ---------------------------------------------------------------------- // // ---------------------------------------------------------------------- Index: C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java =================================================================== --- C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java (revision 525213) +++ C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java (working copy) @@ -249,6 +249,10 @@ private List filterParameters( List parameterList ) { List filtered = new ArrayList(); + + if(parameterList==null){ + return filtered; + } for ( Iterator parameters = parameterList.iterator(); parameters.hasNext(); ) { {code} was: The pluggin:xdoc return a mojo MojoDescriptor with a null parameter list when the mojo has no parameter. That causes a null pointer exception when converted to xdoc. The folowing patch applied to maven-plugin-tools-2.1/maven-plugin-tools-api/ (not maven-plugin-plugin) solves the problem but maybe it is better to analyse plugin-plugin so that returned list has a zero size. Index: C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGeneratorTest.java =================================================================== --- C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGeneratorTest.java (revision 525213) +++ C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGeneratorTest.java (working copy) @@ -106,7 +106,7 @@ assertNotNull( mojoDescriptor.isDependencyResolutionRequired() ); // check the parameter. - checkParameter( (Parameter) mojoDescriptor.getParameters().get( 0 ) ); + // checkParameter( (Parameter) mojoDescriptor.getParameters().get( 0 ) ); } private void checkParameter( Parameter parameter ) Index: C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/AbstractGeneratorTestCase.java =================================================================== --- C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/AbstractGeneratorTestCase.java (revision 525213) +++ C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/AbstractGeneratorTestCase.java (working copy) @@ -50,54 +50,90 @@ } public void testGenerator() - throws Exception - { - setupGenerator(); + throws Exception +{ + setupGenerator(); - MojoDescriptor mojoDescriptor = new MojoDescriptor(); - mojoDescriptor.setGoal( "testGoal" ); - mojoDescriptor.setImplementation( "org.apache.maven.tools.plugin.generator.TestMojo" ); - mojoDescriptor.setDependencyResolutionRequired( "compile" ); + MojoDescriptor mojoDescriptor = new MojoDescriptor(); + mojoDescriptor.setGoal( "testGoal" ); + mojoDescriptor.setImplementation( "org.apache.maven.tools.plugin.generator.TestMojo" ); + mojoDescriptor.setDependencyResolutionRequired( "compile" ); - List params = new ArrayList(); + List params = new ArrayList(); - Parameter param = new Parameter(); - param.setExpression( "${project.build.directory}" ); - param.setName( "dir" ); - param.setRequired( true ); - param.setType( "java.lang.String" ); - param.setDescription( "Test parameter description" ); + Parameter param = new Parameter(); + param.setExpression( "${project.build.directory}" ); + param.setName( "dir" ); + param.setRequired( true ); + param.setType( "java.lang.String" ); + param.setDescription( "Test parameter description" ); - params.add( param ); + params.add( param ); - mojoDescriptor.setParameters( params ); + mojoDescriptor.setParameters( params ); - PluginDescriptor pluginDescriptor = new PluginDescriptor(); - mojoDescriptor.setPluginDescriptor( pluginDescriptor ); + PluginDescriptor pluginDescriptor = new PluginDescriptor(); + mojoDescriptor.setPluginDescriptor( pluginDescriptor ); - pluginDescriptor.addMojo( mojoDescriptor ); + pluginDescriptor.addMojo( mojoDescriptor ); - pluginDescriptor.setArtifactId( "maven-unitTesting-plugin" ); - pluginDescriptor.setGoalPrefix( "test" ); + pluginDescriptor.setArtifactId( "maven-unitTesting-plugin" ); + pluginDescriptor.setGoalPrefix( "test" ); - ComponentDependency dependency = new ComponentDependency(); - dependency.setGroupId( "testGroup" ); - dependency.setArtifactId( "testArtifact" ); - dependency.setVersion( "0.0.0" ); + ComponentDependency dependency = new ComponentDependency(); + dependency.setGroupId( "testGroup" ); + dependency.setArtifactId( "testArtifact" ); + dependency.setVersion( "0.0.0" ); - pluginDescriptor.setDependencies( Collections.singletonList( dependency ) ); + pluginDescriptor.setDependencies( Collections.singletonList( dependency ) ); - File destinationDirectory = new File( System.getProperty( "java.io.tmpdir" ), "testGenerator-outDir" ); - FileUtils.deleteDirectory( destinationDirectory ); - destinationDirectory.mkdir(); + File destinationDirectory = new File( System.getProperty( "java.io.tmpdir" ), "testGenerator-outDir" ); + FileUtils.deleteDirectory( destinationDirectory ); + destinationDirectory.mkdir(); - generator.execute( destinationDirectory, pluginDescriptor ); + generator.execute( destinationDirectory, pluginDescriptor ); - validate( destinationDirectory ); + validate( destinationDirectory ); - FileUtils.deleteDirectory( destinationDirectory ); - } + FileUtils.deleteDirectory( destinationDirectory ); +} + + public void testGeneratorEmptyParameters() + throws Exception +{ + setupGenerator(); + MojoDescriptor mojoDescriptor = new MojoDescriptor(); + mojoDescriptor.setGoal( "testGoal" ); + mojoDescriptor.setImplementation( "org.apache.maven.tools.plugin.generator.TestMojo" ); + mojoDescriptor.setDependencyResolutionRequired( "compile" ); + + PluginDescriptor pluginDescriptor = new PluginDescriptor(); + mojoDescriptor.setPluginDescriptor( pluginDescriptor ); + + pluginDescriptor.addMojo( mojoDescriptor ); + + pluginDescriptor.setArtifactId( "maven-unitTesting-plugin" ); + pluginDescriptor.setGoalPrefix( "test" ); + + ComponentDependency dependency = new ComponentDependency(); + dependency.setGroupId( "testGroup" ); + dependency.setArtifactId( "testArtifact" ); + dependency.setVersion( "0.0.0" ); + + pluginDescriptor.setDependencies( Collections.singletonList( dependency ) ); + + File destinationDirectory = new File( System.getProperty( "java.io.tmpdir" ), "testGenerator-outDir" ); + FileUtils.deleteDirectory( destinationDirectory ); + destinationDirectory.mkdir(); + + generator.execute( destinationDirectory, pluginDescriptor ); + + validate( destinationDirectory ); + + FileUtils.deleteDirectory( destinationDirectory ); +} + // ---------------------------------------------------------------------- // // ---------------------------------------------------------------------- Index: C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java =================================================================== --- C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java (revision 525213) +++ C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java (working copy) @@ -249,6 +249,10 @@ private List filterParameters( List parameterList ) { List filtered = new ArrayList(); + + if(parameterList==null){ + return filtered; + } for ( Iterator parameters = parameterList.iterator(); parameters.hasNext(); ) { > The plugin:xdoc produce a null pointer exception when no parameter is provided > ------------------------------------------------------------------------------ > > Key: MPLUGIN-31 > URL: http://jira.codehaus.org/browse/MPLUGIN-31 > Project: Maven 2.x Plugin Plugin > Issue Type: Bug > Environment: Group Id: org.apache.maven.plugins > Artifact Id: maven-plugin-plugin > Version: 2.2 > Goal Prefix: plugin > version of plugin-plugin : 2.2 > Reporter: Clement Soullard > > The pluggin:xdoc return a mojo MojoDescriptor with a null parameter list > when the mojo has no parameter. > That causes a null pointer exception when converted to xdoc. > The folowing patch applied to maven-plugin-tools-2.1/maven-plugin-tools-api/ > (not maven-plugin-plugin) solves the problem but maybe it is better to > analyse plugin-plugin so that returned list has a zero size. > {code} > Index: > C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGeneratorTest.java > =================================================================== > --- > C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGeneratorTest.java > (revision 525213) > +++ > C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGeneratorTest.java > (working copy) > @@ -106,7 +106,7 @@ > assertNotNull( mojoDescriptor.isDependencyResolutionRequired() ); > > // check the parameter. > - checkParameter( (Parameter) mojoDescriptor.getParameters().get( 0 ) > ); > + // checkParameter( (Parameter) mojoDescriptor.getParameters().get( 0 > ) ); > } > > private void checkParameter( Parameter parameter ) > Index: > C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/AbstractGeneratorTestCase.java > =================================================================== > --- > C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/AbstractGeneratorTestCase.java > (revision 525213) > +++ > C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/AbstractGeneratorTestCase.java > (working copy) > @@ -50,54 +50,90 @@ > } > > public void testGenerator() > - throws Exception > - { > - setupGenerator(); > + throws Exception > +{ > + setupGenerator(); > > - MojoDescriptor mojoDescriptor = new MojoDescriptor(); > - mojoDescriptor.setGoal( "testGoal" ); > - mojoDescriptor.setImplementation( > "org.apache.maven.tools.plugin.generator.TestMojo" ); > - mojoDescriptor.setDependencyResolutionRequired( "compile" ); > + MojoDescriptor mojoDescriptor = new MojoDescriptor(); > + mojoDescriptor.setGoal( "testGoal" ); > + mojoDescriptor.setImplementation( > "org.apache.maven.tools.plugin.generator.TestMojo" ); > + mojoDescriptor.setDependencyResolutionRequired( "compile" ); > > - List params = new ArrayList(); > + List params = new ArrayList(); > > - Parameter param = new Parameter(); > - param.setExpression( "${project.build.directory}" ); > - param.setName( "dir" ); > - param.setRequired( true ); > - param.setType( "java.lang.String" ); > - param.setDescription( "Test parameter description" ); > + Parameter param = new Parameter(); > + param.setExpression( "${project.build.directory}" ); > + param.setName( "dir" ); > + param.setRequired( true ); > + param.setType( "java.lang.String" ); > + param.setDescription( "Test parameter description" ); > > - params.add( param ); > + params.add( param ); > > - mojoDescriptor.setParameters( params ); > + mojoDescriptor.setParameters( params ); > > - PluginDescriptor pluginDescriptor = new PluginDescriptor(); > - mojoDescriptor.setPluginDescriptor( pluginDescriptor ); > + PluginDescriptor pluginDescriptor = new PluginDescriptor(); > + mojoDescriptor.setPluginDescriptor( pluginDescriptor ); > > - pluginDescriptor.addMojo( mojoDescriptor ); > + pluginDescriptor.addMojo( mojoDescriptor ); > > - pluginDescriptor.setArtifactId( "maven-unitTesting-plugin" ); > - pluginDescriptor.setGoalPrefix( "test" ); > + pluginDescriptor.setArtifactId( "maven-unitTesting-plugin" ); > + pluginDescriptor.setGoalPrefix( "test" ); > > - ComponentDependency dependency = new ComponentDependency(); > - dependency.setGroupId( "testGroup" ); > - dependency.setArtifactId( "testArtifact" ); > - dependency.setVersion( "0.0.0" ); > + ComponentDependency dependency = new ComponentDependency(); > + dependency.setGroupId( "testGroup" ); > + dependency.setArtifactId( "testArtifact" ); > + dependency.setVersion( "0.0.0" ); > > - pluginDescriptor.setDependencies( Collections.singletonList( > dependency ) ); > + pluginDescriptor.setDependencies( Collections.singletonList( dependency > ) ); > > - File destinationDirectory = new File( System.getProperty( > "java.io.tmpdir" ), "testGenerator-outDir" ); > - FileUtils.deleteDirectory( destinationDirectory ); > - destinationDirectory.mkdir(); > + File destinationDirectory = new File( System.getProperty( > "java.io.tmpdir" ), "testGenerator-outDir" ); > + FileUtils.deleteDirectory( destinationDirectory ); > + destinationDirectory.mkdir(); > > - generator.execute( destinationDirectory, pluginDescriptor ); > + generator.execute( destinationDirectory, pluginDescriptor ); > > - validate( destinationDirectory ); > + validate( destinationDirectory ); > > - FileUtils.deleteDirectory( destinationDirectory ); > - } > + FileUtils.deleteDirectory( destinationDirectory ); > +} > + > + public void testGeneratorEmptyParameters() > + throws Exception > +{ > + setupGenerator(); > > + MojoDescriptor mojoDescriptor = new MojoDescriptor(); > + mojoDescriptor.setGoal( "testGoal" ); > + mojoDescriptor.setImplementation( > "org.apache.maven.tools.plugin.generator.TestMojo" ); > + mojoDescriptor.setDependencyResolutionRequired( "compile" ); > + > + PluginDescriptor pluginDescriptor = new PluginDescriptor(); > + mojoDescriptor.setPluginDescriptor( pluginDescriptor ); > + > + pluginDescriptor.addMojo( mojoDescriptor ); > + > + pluginDescriptor.setArtifactId( "maven-unitTesting-plugin" ); > + pluginDescriptor.setGoalPrefix( "test" ); > + > + ComponentDependency dependency = new ComponentDependency(); > + dependency.setGroupId( "testGroup" ); > + dependency.setArtifactId( "testArtifact" ); > + dependency.setVersion( "0.0.0" ); > + > + pluginDescriptor.setDependencies( Collections.singletonList( dependency > ) ); > + > + File destinationDirectory = new File( System.getProperty( > "java.io.tmpdir" ), "testGenerator-outDir" ); > + FileUtils.deleteDirectory( destinationDirectory ); > + destinationDirectory.mkdir(); > + > + generator.execute( destinationDirectory, pluginDescriptor ); > + > + validate( destinationDirectory ); > + > + FileUtils.deleteDirectory( destinationDirectory ); > +} > + > // ---------------------------------------------------------------------- > // > // ---------------------------------------------------------------------- > Index: > C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java > =================================================================== > --- > C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java > (revision 525213) > +++ > C:/maven-plugin-tools-2.1/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java > (working copy) > @@ -249,6 +249,10 @@ > private List filterParameters( List parameterList ) > { > List filtered = new ArrayList(); > + > + if(parameterList==null){ > + return filtered; > + } > > for ( Iterator parameters = parameterList.iterator(); > parameters.hasNext(); ) > { > {code} -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira