Author: kenney Date: Thu Jul 6 10:55:41 2006 New Revision: 419630 URL: http://svn.apache.org/viewvc?rev=419630&view=rev Log: PR: MNG-2293 Submitted by: Jerome Lacoste Reviewed by: Kenney Westerhof Modifications: minor cosmetic changes.
Add an 'implementation' parameter to @parameter annotation, so a default implementation can be specified in Mojo's in case the Mojo parameter is an interface. Merged from trunk r413054. Carlos already merged some documentation updates for the integration tests, so these are not included here. Added: maven/components/branches/maven-2.0.x/integration-tests/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/Bla.java - copied unchanged from r413054, maven/components/trunk/integration-tests/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/Bla.java maven/components/branches/maven-2.0.x/integration-tests/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/ParameterImplementationMojo.java - copied unchanged from r413054, maven/components/trunk/integration-tests/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/ParameterImplementationMojo.java maven/components/branches/maven-2.0.x/integration-tests/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/sub/ - copied from r413054, maven/components/trunk/integration-tests/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/sub/ maven/components/branches/maven-2.0.x/integration-tests/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/sub/MyBla.java - copied unchanged from r413054, maven/components/trunk/integration-tests/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/sub/MyBla.java maven/components/branches/maven-2.0.x/maven-core-it/it0107/ - copied from r413054, maven/components/trunk/maven-core-it/it0107/ maven/components/branches/maven-2.0.x/maven-core-it/it0107/cli-options.txt - copied unchanged from r413054, maven/components/trunk/maven-core-it/it0107/cli-options.txt maven/components/branches/maven-2.0.x/maven-core-it/it0107/goals.txt - copied unchanged from r413054, maven/components/trunk/maven-core-it/it0107/goals.txt maven/components/branches/maven-2.0.x/maven-core-it/it0107/pom.xml - copied unchanged from r413054, maven/components/trunk/maven-core-it/it0107/pom.xml maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-java/src/test/resources/source2/ - copied from r413054, maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/test/resources/source2/ maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-java/src/test/resources/source2/Bla.java - copied unchanged from r413054, maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/test/resources/source2/Bla.java maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-java/src/test/resources/source2/JavaExtractorTestThree.java - copied unchanged from r413054, maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/test/resources/source2/JavaExtractorTestThree.java maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-java/src/test/resources/source2/sub/ - copied from r413054, maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/test/resources/source2/sub/ maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-java/src/test/resources/source2/sub/MyBla.java - copied unchanged from r413054, maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/test/resources/source2/sub/MyBla.java Modified: maven/components/branches/maven-2.0.x/maven-core-it/integration-tests.txt maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java maven/components/branches/maven-2.0.x/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/Parameter.java maven/components/branches/maven-2.0.x/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-java/src/test/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractorTest.java maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/validation/DefaultModelValidatorTest.java Modified: maven/components/branches/maven-2.0.x/maven-core-it/integration-tests.txt URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-core-it/integration-tests.txt?rev=419630&r1=419629&r2=419630&view=diff ============================================================================== --- maven/components/branches/maven-2.0.x/maven-core-it/integration-tests.txt (original) +++ maven/components/branches/maven-2.0.x/maven-core-it/integration-tests.txt Thu Jul 6 10:55:41 2006 @@ -1,3 +1,4 @@ +it0107 #it0106 MNG-2318 not yet fixed #it0105 not fixed until 2.1 #it0104 Commenting out, not fixed until post-2.0.4, due to dependency on new plexus-container-default version. Modified: maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=419630&r1=419629&r2=419630&view=diff ============================================================================== --- maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original) +++ maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Thu Jul 6 10:55:41 2006 @@ -877,6 +877,7 @@ String paramName = parameter.getName(); String alias = parameter.getAlias(); + String implementation = parameter.getImplementation(); PlexusConfiguration pomConfig = fromPom.getChild( paramName ); PlexusConfiguration aliased = null; @@ -900,7 +901,7 @@ pomConfig = buildTopDownMergedConfiguration( pomConfig, aliased ); } - boolean addedPomConfig = false; + PlexusConfiguration toAdd = null; if ( pomConfig != null ) { @@ -908,15 +909,29 @@ if ( StringUtils.isNotEmpty( pomConfig.getValue( null ) ) || pomConfig.getChildCount() > 0 ) { - result.addChild( pomConfig ); - - addedPomConfig = true; + toAdd = pomConfig; } } - if ( !addedPomConfig && mojoConfig != null ) + if ( toAdd == null && mojoConfig != null ) { - result.addChild( copyConfiguration( mojoConfig ) ); + toAdd = copyConfiguration( mojoConfig ); + } + + if ( toAdd != null ) + { + if ( implementation != null + && toAdd.getAttribute( "implementation", null ) == null ) + { + + XmlPlexusConfiguration implementationConf = new XmlPlexusConfiguration( paramName ); + + implementationConf.setAttribute( "implementation", parameter.getImplementation() ); + + toAdd = buildTopDownMergedConfiguration( toAdd, implementationConf ); + } + + result.addChild( toAdd ); } } } Modified: maven/components/branches/maven-2.0.x/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/Parameter.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/Parameter.java?rev=419630&r1=419629&r2=419630&view=diff ============================================================================== --- maven/components/branches/maven-2.0.x/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/Parameter.java (original) +++ maven/components/branches/maven-2.0.x/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/Parameter.java Thu Jul 6 10:55:41 2006 @@ -40,6 +40,8 @@ private String defaultValue; + private String implementation; + private Requirement requirement; // ---------------------------------------------------------------------- @@ -159,5 +161,15 @@ public void setRequirement( Requirement requirement ) { this.requirement = requirement; + } + + public String getImplementation() + { + return implementation; + } + + public void setImplementation( String implementation ) + { + this.implementation = implementation; } } Modified: maven/components/branches/maven-2.0.x/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java?rev=419630&r1=419629&r2=419630&view=diff ============================================================================== --- maven/components/branches/maven-2.0.x/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java (original) +++ maven/components/branches/maven-2.0.x/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java Thu Jul 6 10:55:41 2006 @@ -250,6 +250,8 @@ parameter.setDeprecated( d.getChild( "deprecated" ).getValue() ); + parameter.setImplementation( d.getChild( "implementation" ).getValue() ); + parameters.add( parameter ); } Modified: maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java?rev=419630&r1=419629&r2=419630&view=diff ============================================================================== --- maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java (original) +++ maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java Thu Jul 6 10:55:41 2006 @@ -335,6 +335,11 @@ element( w, "deprecated", parameter.getDeprecated() ); } + if ( parameter.getImplementation() != null ) + { + element( w, "implementation", parameter.getImplementation() ); + } + element( w, "required", Boolean.toString( parameter.isRequired() ) ); element( w, "editable", Boolean.toString( parameter.isEditable() ) ); Modified: maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java?rev=419630&r1=419629&r2=419630&view=diff ============================================================================== --- maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java (original) +++ maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java Thu Jul 6 10:55:41 2006 @@ -60,6 +60,11 @@ public static final String PARAMETER_DEFAULT_VALUE = "default-value"; /** + * This defines the default implementation in the case the parameter type is an interface. + */ + public static final String PARAMETER_IMPLEMENTATION = "implementation"; + + /** * This indicates the base name of the bean properties used to read/write this parameter's value. * So: * @@ -422,6 +427,9 @@ } pd.setDefaultValue( parameter.getNamedParameter( PARAMETER_DEFAULT_VALUE ) ); + + pd.setImplementation( parameter.getNamedParameter( PARAMETER_IMPLEMENTATION ) ); + } mojoDescriptor.addParameter( pd ); Modified: maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-java/src/test/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractorTest.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-java/src/test/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractorTest.java?rev=419630&r1=419629&r2=419630&view=diff ============================================================================== --- maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-java/src/test/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractorTest.java (original) +++ maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-java/src/test/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractorTest.java Thu Jul 6 10:55:41 2006 @@ -19,12 +19,16 @@ import junit.framework.TestCase; import org.apache.maven.model.Model; import org.apache.maven.project.MavenProject; +import org.apache.maven.plugin.descriptor.MojoDescriptor; +import org.apache.maven.plugin.descriptor.Parameter; import org.apache.maven.plugin.descriptor.PluginDescriptor; import java.io.File; import java.net.URL; import java.util.List; +import source2.sub.MyBla; + /** * @author jdcasey */ @@ -56,6 +60,40 @@ assertEquals( 2, results.size() ); } + public void testShouldPropagateImplementationParameter() + throws Exception + { + JavaMojoDescriptorExtractor extractor = new JavaMojoDescriptorExtractor(); + + File sourceFile = fileOf( "dir-flag.txt" ); + System.out.println( "found source file: " + sourceFile ); + + File dir = sourceFile.getParentFile(); + + Model model = new Model(); + model.setArtifactId( "maven-unitTesting-plugin" ); + + MavenProject project = new MavenProject( model ); + + project.setFile( new File( dir, "pom.xml" ) ); + project.addCompileSourceRoot( new File( dir, "source2" ).getPath() ); + + PluginDescriptor pluginDescriptor = new PluginDescriptor(); + pluginDescriptor.setGoalPrefix( "test" ); + List results = extractor.execute( project, pluginDescriptor ); + assertEquals( 1, results.size() ); + + MojoDescriptor mojoDescriptor = (MojoDescriptor) results.get( 0 ); + + List parameters = mojoDescriptor.getParameters(); + + assertEquals( 1, parameters.size() ); + + Parameter parameter = (Parameter) parameters.get( 0 ); + + assertEquals( MyBla.class.getName(), parameter.getImplementation() ); + } + private File fileOf( String classpathResource ) { ClassLoader cl = Thread.currentThread().getContextClassLoader(); @@ -70,4 +108,4 @@ return result; } -} \ No newline at end of file +} Modified: maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/validation/DefaultModelValidatorTest.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/validation/DefaultModelValidatorTest.java?rev=419630&r1=419629&r2=419630&view=diff ============================================================================== --- maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/validation/DefaultModelValidatorTest.java (original) +++ maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/validation/DefaultModelValidatorTest.java Thu Jul 6 10:55:41 2006 @@ -216,7 +216,7 @@ private ModelValidationResult validate( String testName ) throws Exception { - Reader input = new FileReader( getFileForClasspathResource( "/validation/" + testName ) ); + Reader input = new FileReader( getFileForClasspathResource( "validation/" + testName ) ); MavenXpp3Reader reader = new MavenXpp3Reader();