From 8a7640051ab2a4487e841fea6e21b95ac2d05ffe Mon Sep 17 00:00:00 2001 From: Konrad Windszus Date: Wed, 26 Oct 2022 20:10:26 +0200 Subject: [PATCH] [MPLUGIN-427] only emit simple parameter type for configuration (#163) --- .../PluginDescriptorFilesGenerator.java | 3 +- .../generator/AbstractGeneratorTestCase.java | 8 +++++- .../PluginDescriptorFilesGeneratorTest.java | 28 ++++++++++++++++++- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorFilesGenerator.java b/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorFilesGenerator.java index a21a4e443..cce415f0e 100644 --- a/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorFilesGenerator.java +++ b/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorFilesGenerator.java @@ -587,7 +587,8 @@ else if ( type != DescriptorType.LIMITED_FOR_HELP_MOJO || parameter.isEditable() w.startElement( parameter.getName() ); - String parameterType = parameter.getType(); + // strip type by parameter type (generics) information + String parameterType = StringUtils.chomp( parameter.getType(), "<" ); if ( StringUtils.isNotEmpty( parameterType ) ) { w.addAttribute( "implementation", parameterType ); diff --git a/maven-plugin-tools-generators/src/test/java/org/apache/maven/tools/plugin/generator/AbstractGeneratorTestCase.java b/maven-plugin-tools-generators/src/test/java/org/apache/maven/tools/plugin/generator/AbstractGeneratorTestCase.java index 1adcc5d06..c51406d1f 100644 --- a/maven-plugin-tools-generators/src/test/java/org/apache/maven/tools/plugin/generator/AbstractGeneratorTestCase.java +++ b/maven-plugin-tools-generators/src/test/java/org/apache/maven/tools/plugin/generator/AbstractGeneratorTestCase.java @@ -20,6 +20,7 @@ */ import org.apache.maven.model.Build; +import org.apache.maven.plugin.descriptor.DuplicateParameterException; import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.apache.maven.plugin.descriptor.Parameter; import org.apache.maven.plugin.descriptor.PluginDescriptor; @@ -114,7 +115,7 @@ public String getOutputDirectory() return basedir + "/target"; } } ); - + extendPluginDescriptor( pluginDescriptor ); generator.execute( destinationDirectory, new DefaultPluginToolsRequest( mavenProject, pluginDescriptor ) ); validate( destinationDirectory ); @@ -122,6 +123,11 @@ public String getOutputDirectory() FileUtils.deleteDirectory( destinationDirectory ); } + protected void extendPluginDescriptor( PluginDescriptor pluginDescriptor ) throws DuplicateParameterException + { + // may be overwritten + } + // ---------------------------------------------------------------------- // // ---------------------------------------------------------------------- diff --git a/maven-plugin-tools-generators/src/test/java/org/apache/maven/tools/plugin/generator/PluginDescriptorFilesGeneratorTest.java b/maven-plugin-tools-generators/src/test/java/org/apache/maven/tools/plugin/generator/PluginDescriptorFilesGeneratorTest.java index 3e8decd8e..b2c3b3ec3 100644 --- a/maven-plugin-tools-generators/src/test/java/org/apache/maven/tools/plugin/generator/PluginDescriptorFilesGeneratorTest.java +++ b/maven-plugin-tools-generators/src/test/java/org/apache/maven/tools/plugin/generator/PluginDescriptorFilesGeneratorTest.java @@ -29,12 +29,14 @@ import java.net.URISyntaxException; import java.util.List; +import org.apache.maven.plugin.descriptor.DuplicateParameterException; import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.apache.maven.plugin.descriptor.Parameter; import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.apache.maven.plugin.descriptor.PluginDescriptorBuilder; import org.apache.maven.tools.plugin.javadoc.JavadocLinkGenerator; import org.codehaus.plexus.component.repository.ComponentDependency; +import org.codehaus.plexus.configuration.PlexusConfiguration; import org.codehaus.plexus.testing.PlexusTest; import org.codehaus.plexus.util.ReaderFactory; import org.junit.jupiter.api.Test; @@ -50,6 +52,17 @@ public class PluginDescriptorFilesGeneratorTest extends AbstractGeneratorTestCase { + @Override + protected void extendPluginDescriptor( PluginDescriptor pluginDescriptor ) throws DuplicateParameterException + { + Parameter parameterWithGenerics = new Parameter(); + parameterWithGenerics.setName( "parameterWithGenerics" ); + parameterWithGenerics.setType("java.util.Collection"); + parameterWithGenerics.setExpression( "${customParam}" ); + parameterWithGenerics.setDefaultValue( "a,b,c" ); + pluginDescriptor.getMojos().get( 0 ).addParameter( parameterWithGenerics ); + } + @Override protected void validate( File destinationDirectory ) throws Exception @@ -113,8 +126,21 @@ private void checkMojo( MojoDescriptor mojoDescriptor ) assertNotNull( mojoDescriptor.isDependencyResolutionRequired() ); - // check the parameter. + // check the default parameter checkParameter( mojoDescriptor.getParameters().get( 0 ) ); + + // check another parameter with generics type information + Parameter parameterWithGenerics = mojoDescriptor.getParameters().get( 2 ); + assertNotNull( parameterWithGenerics ); + assertEquals( "parameterWithGenerics", parameterWithGenerics.getName() ); + assertEquals( "java.util.Collection", parameterWithGenerics.getType() ); + + PlexusConfiguration configurations = mojoDescriptor.getMojoConfiguration(); + assertNotNull( configurations ); + PlexusConfiguration configuration = configurations.getChild( "parameterWithGenerics" ); + assertEquals( "java.util.Collection", configuration.getAttribute( "implementation" ) ); + assertEquals( "a,b,c", configuration.getAttribute( "default-value") ); + assertEquals( "${customParam}", configuration.getValue() ); } private void checkParameter( Parameter parameter )