Author: dennisl Date: Fri Jun 16 15:53:10 2006 New Revision: 414949 URL: http://svn.apache.org/viewvc?rev=414949&view=rev Log: Add PluginConfigurationConverter for maven-pmd-plugin
Added: maven/sandbox/plugins/maven-maven1-plugin/src/main/java/org/apache/maven/maven1converter/plugins/PCCPmd.java (with props) maven/sandbox/plugins/maven-maven1-plugin/src/test/java/org/apache/maven/maven1converter/plugins/PCCPmdTest.java (with props) maven/sandbox/plugins/maven-maven1-plugin/src/test/resources/PCCPmdTest.properties (with props) Modified: maven/sandbox/plugins/maven-maven1-plugin/src/main/java/org/apache/maven/maven1converter/PomV3ConvertMojo.java Modified: maven/sandbox/plugins/maven-maven1-plugin/src/main/java/org/apache/maven/maven1converter/PomV3ConvertMojo.java URL: http://svn.apache.org/viewvc/maven/sandbox/plugins/maven-maven1-plugin/src/main/java/org/apache/maven/maven1converter/PomV3ConvertMojo.java?rev=414949&r1=414948&r2=414949&view=diff ============================================================================== --- maven/sandbox/plugins/maven-maven1-plugin/src/main/java/org/apache/maven/maven1converter/PomV3ConvertMojo.java (original) +++ maven/sandbox/plugins/maven-maven1-plugin/src/main/java/org/apache/maven/maven1converter/PomV3ConvertMojo.java Fri Jun 16 15:53:10 2006 @@ -16,28 +16,20 @@ * limitations under the License. */ -import java.io.File; -import java.io.FileInputStream; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.io.Writer; -import java.util.Properties; - import org.apache.maven.maven1converter.plugins.PCCChanges; import org.apache.maven.maven1converter.plugins.PCCCheckstyle; import org.apache.maven.maven1converter.plugins.PCCCompiler; import org.apache.maven.maven1converter.plugins.PCCJar; import org.apache.maven.maven1converter.plugins.PCCJavadoc; import org.apache.maven.maven1converter.plugins.PCCMultiproject; +import org.apache.maven.maven1converter.plugins.PCCPmd; import org.apache.maven.maven1converter.plugins.PCCSurefire; import org.apache.maven.maven1converter.plugins.PCCWar; import org.apache.maven.maven1converter.plugins.PluginConfigurationConverter; import org.apache.maven.model.Model; -import org.apache.maven.model.v3_0_0.io.xpp3.MavenXpp3Reader; import org.apache.maven.model.converter.PomV3ToV4Translator; import org.apache.maven.model.io.xpp3.MavenXpp3Writer; +import org.apache.maven.model.v3_0_0.io.xpp3.MavenXpp3Reader; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; @@ -46,6 +38,15 @@ import org.dom4j.Element; import org.dom4j.io.SAXReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.Writer; +import java.util.Properties; + /** * Converts a Maven 1 project.xml (v3 pom) to a Maven 2 pom.xml (v4 pom). * @goal convert @@ -76,6 +77,7 @@ new PCCJar(), new PCCJavadoc(), new PCCMultiproject(), + new PCCPmd(), new PCCSurefire(), new PCCWar() }; Added: maven/sandbox/plugins/maven-maven1-plugin/src/main/java/org/apache/maven/maven1converter/plugins/PCCPmd.java URL: http://svn.apache.org/viewvc/maven/sandbox/plugins/maven-maven1-plugin/src/main/java/org/apache/maven/maven1converter/plugins/PCCPmd.java?rev=414949&view=auto ============================================================================== --- maven/sandbox/plugins/maven-maven1-plugin/src/main/java/org/apache/maven/maven1converter/plugins/PCCPmd.java (added) +++ maven/sandbox/plugins/maven-maven1-plugin/src/main/java/org/apache/maven/maven1converter/plugins/PCCPmd.java Fri Jun 16 15:53:10 2006 @@ -0,0 +1,96 @@ +package org.apache.maven.maven1converter.plugins; + +/* + * Copyright 2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.maven.plugin.MojoExecutionException; +import org.codehaus.plexus.util.xml.Xpp3Dom; + +import java.util.Properties; +import java.util.StringTokenizer; + +/** + * A <code>PluginConfigurationConverter</code> for the maven-pmd-plugin. + * + * @author Dennis Lundberg + * @version $Id: PCCPmd.java 409264 2006-05-24 23:13:13 +0000 (on, 24 maj 2006) carlos $ + */ +public class PCCPmd extends AbstractPluginConfigurationConverter +{ + /** + * @see AbstractPluginConfigurationConverter#getArtifactId() + */ + public String getArtifactId() + { + return "maven-pmd-plugin"; + } + + public String getType() + { + return TYPE_REPORT_PLUGIN; + } + + protected void buildConfiguration( Xpp3Dom configuration, org.apache.maven.model.v3_0_0.Model v3Model, + Properties projectProperties ) + throws MojoExecutionException + { + addConfigurationChild( configuration, projectProperties, "maven.pmd.excludes", "excludes" ); + + addConfigurationChild( configuration, projectProperties, "maven.pmd.failonruleviolation", "failOnViolation" ); + + addConfigurationChild( configuration, projectProperties, "maven.pmd.cpd.minimumtokencount", "minimumTokens" ); + + String rulesetfiles = projectProperties.getProperty( "maven.pmd.rulesetfiles" ); + if ( rulesetfiles != null ) + { + StringTokenizer tokenizer = new StringTokenizer( rulesetfiles, "," ); + if ( tokenizer.hasMoreTokens() ) + { + Xpp3Dom rulesets = new Xpp3Dom( "rulesets" ); + while ( tokenizer.hasMoreTokens() ) + { + addConfigurationChild( rulesets, "ruleset", translate( tokenizer.nextToken() ) ); + } + if ( rulesets.getChildCount() > 0 ) + { + configuration.addChild( rulesets ); + } + } + } + + addConfigurationChild( configuration, projectProperties, "maven.pmd.targetjdk", "targetJdk" ); + } + + /** + * In the Maven 1 plugin the built-in rulesets where accessed by prefixing + * them with "rulesets/", but in the Maven 2 plugin the prefix "/rulesets/" + * is used. + * + * @param mavenOneRuleset A ruleset from the Maven 1 configuration + * @return A ruleset suitable for the Maven 2 configuration + */ + private String translate( String mavenOneRuleset ) + { + if ( mavenOneRuleset != null && mavenOneRuleset.startsWith( "rulesets/" ) ) + { + return "/" + mavenOneRuleset; + } + else + { + return mavenOneRuleset; + } + } +} Propchange: maven/sandbox/plugins/maven-maven1-plugin/src/main/java/org/apache/maven/maven1converter/plugins/PCCPmd.java ------------------------------------------------------------------------------ svn:eol-style = native Added: maven/sandbox/plugins/maven-maven1-plugin/src/test/java/org/apache/maven/maven1converter/plugins/PCCPmdTest.java URL: http://svn.apache.org/viewvc/maven/sandbox/plugins/maven-maven1-plugin/src/test/java/org/apache/maven/maven1converter/plugins/PCCPmdTest.java?rev=414949&view=auto ============================================================================== --- maven/sandbox/plugins/maven-maven1-plugin/src/test/java/org/apache/maven/maven1converter/plugins/PCCPmdTest.java (added) +++ maven/sandbox/plugins/maven-maven1-plugin/src/test/java/org/apache/maven/maven1converter/plugins/PCCPmdTest.java Fri Jun 16 15:53:10 2006 @@ -0,0 +1,86 @@ +package org.apache.maven.maven1converter.plugins; + +/* + * Copyright 2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import junit.framework.Assert; +import org.apache.maven.plugin.MojoExecutionException; +import org.codehaus.plexus.util.xml.Xpp3Dom; + +import java.io.IOException; + +/** + * @author Dennis Lundberg + * @version $Id: PCCPmdTest.java 409264 2006-05-24 23:13:13 +0000 (on, 24 maj 2006) carlos $ + */ +public class PCCPmdTest extends AbstractPCCTest +{ + protected void setUp() + throws Exception + { + super.setUp(); + + pluginConfigurationConverter = new PCCPmd(); + } + + public void testBuildConfiguration() + { + try + { + projectProperties.load( getClassLoader().getResourceAsStream( "PCCPmdTest.properties" ) ); + + pluginConfigurationConverter.buildConfiguration( configuration, v3Model, projectProperties ); + + String value = configuration.getChild( "excludes" ).getValue(); + Assert.assertEquals( "check excludes value", "**/*PropertyListParser*", value ); + + value = configuration.getChild( "failOnViolation" ).getValue(); + Assert.assertEquals( "check failOnViolation value", "true", value ); + + value = configuration.getChild( "minimumTokens" ).getValue(); + Assert.assertEquals( "check minimumTokens value", "50", value ); + + Xpp3Dom rulesets = configuration.getChild( "rulesets" ); + if ( rulesets.getChildCount() == 3 ) + { + Xpp3Dom rulesetOne = rulesets.getChild( 0 ); + Assert.assertEquals( "check rulesets/ruleset value", "fileupload_basic.xml", rulesetOne.getValue() ); + + Xpp3Dom rulesetTwo = rulesets.getChild( 1 ); + Assert.assertEquals( "check rulesets/ruleset value", "/rulesets/unusedcode.xml", + rulesetTwo.getValue() ); + + Xpp3Dom rulesetThree = rulesets.getChild( 2 ); + Assert.assertEquals( "check rulesets/ruleset value", "/rulesets/imports.xml", rulesetThree.getValue() ); + } + else + { + Assert.fail( "Wrong number of ruleset elements" ); + } + + value = configuration.getChild( "targetJdk" ).getValue(); + Assert.assertEquals( "check targetJdk value", "1.4", value ); + } + catch ( MojoExecutionException e ) + { + Assert.fail( e.getMessage() ); + } + catch ( IOException e ) + { + Assert.fail( "Unable to find the requested resource." ); + } + } +} Propchange: maven/sandbox/plugins/maven-maven1-plugin/src/test/java/org/apache/maven/maven1converter/plugins/PCCPmdTest.java ------------------------------------------------------------------------------ svn:eol-style = native Added: maven/sandbox/plugins/maven-maven1-plugin/src/test/resources/PCCPmdTest.properties URL: http://svn.apache.org/viewvc/maven/sandbox/plugins/maven-maven1-plugin/src/test/resources/PCCPmdTest.properties?rev=414949&view=auto ============================================================================== --- maven/sandbox/plugins/maven-maven1-plugin/src/test/resources/PCCPmdTest.properties (added) +++ maven/sandbox/plugins/maven-maven1-plugin/src/test/resources/PCCPmdTest.properties Fri Jun 16 15:53:10 2006 @@ -0,0 +1,19 @@ +# Copyright 2006 The Apache Software Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +maven.pmd.cpd.minimumtokencount=50 +maven.pmd.excludes=**/*PropertyListParser* +maven.pmd.failonruleviolation=true +maven.pmd.rulesetfiles=fileupload_basic.xml,rulesets/unusedcode.xml,rulesets/imports.xml +maven.pmd.targetjdk=1.4 Propchange: maven/sandbox/plugins/maven-maven1-plugin/src/test/resources/PCCPmdTest.properties ------------------------------------------------------------------------------ svn:eol-style = native