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();
 


Reply via email to