diff --git a/maven-plugin-plugin/src/it/plugin-report/src/main/java/org/MyMojo.java b/maven-plugin-plugin/src/it/plugin-report/src/main/java/org/MyMojo.java index d48417e..eefc48a 100644 --- a/maven-plugin-plugin/src/it/plugin-report/src/main/java/org/MyMojo.java +++ b/maven-plugin-plugin/src/it/plugin-report/src/main/java/org/MyMojo.java @@ -51,7 +51,7 @@ public class MyMojo /** * This is a test. * - * @parameter expression="${string}" default-value="${project.version}" + * @parameter expression="${string}" default-value="${project.version}/" * @deprecated Just testing. * @since 1.1 */ diff --git a/maven-plugin-plugin/src/it/plugin-report/verify.bsh b/maven-plugin-plugin/src/it/plugin-report/verify.bsh index 08a534b..7c14d82 100644 --- a/maven-plugin-plugin/src/it/plugin-report/verify.bsh +++ b/maven-plugin-plugin/src/it/plugin-report/verify.bsh @@ -20,7 +20,7 @@ try { File file = new File( siteDir, path ); System.out.println( "Checking for existence of doc file: " + file ); - if ( !file.isFile() ) + if ( !file.isFile() || file.length() <= 0 ) { System.out.println( "FAILED!" ); return false; diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java index 6a8f82c..d98c1df 100644 --- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java +++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java @@ -563,7 +563,8 @@ public class PluginXdocGenerator w.startElement( "ul" ); addedUl = true; } - writeDetail( getString( "pluginxdoc.mojodescriptor.parameter.default" ), parameter.getDefaultValue(), w ); + writeDetail( getString( "pluginxdoc.mojodescriptor.parameter.default" ), + escapeXml( parameter.getDefaultValue() ), w ); if ( addedUl ) { @@ -696,7 +697,7 @@ public class PluginXdocGenerator if ( StringUtils.isNotEmpty( parameter.getDefaultValue() ) ) { w.writeMarkup( format( "pluginxdoc.mojodescriptor.parameter.defaultValue", - parameter.getDefaultValue() ) ); + escapeXml( parameter.getDefaultValue() ) ) ); } w.endElement(); //td w.endElement(); //tr @@ -781,4 +782,22 @@ public class PluginXdocGenerator return messageFormat.format( args ); } + + /** + * @param text the string to escape + * @return A string escaped with XML entities + */ + private String escapeXml( String text ) + { + if ( text != null ) + { + text = text.replaceAll( "&", "&" ); + text = text.replaceAll( "<", "<" ); + text = text.replaceAll( ">", ">" ); + text = text.replaceAll( "\"", """ ); + text = text.replaceAll( "\'", "'" ); + } + return text; + } + } diff --git a/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/AbstractGeneratorTestCase.java b/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/AbstractGeneratorTestCase.java index a2020f4..e987068 100644 --- a/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/AbstractGeneratorTestCase.java +++ b/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/AbstractGeneratorTestCase.java @@ -64,6 +64,7 @@ public abstract class AbstractGeneratorTestCase Parameter param = new Parameter(); param.setExpression( "${project.build.directory}" ); + param.setDefaultValue( "" ); param.setName( "dir" ); param.setRequired( true ); param.setType( "java.lang.String" ); diff --git a/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/PluginXdocGeneratorTest.java b/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/PluginXdocGeneratorTest.java index f14b467..ac438af 100644 --- a/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/PluginXdocGeneratorTest.java +++ b/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/PluginXdocGeneratorTest.java @@ -19,6 +19,11 @@ package org.apache.maven.tools.plugin.generator; * under the License. */ +import java.io.File; + +import org.codehaus.plexus.util.ReaderFactory; +import org.codehaus.plexus.util.xml.Xpp3DomBuilder; + /** * @author Jason van Zyl * @author Vincent Siveton @@ -27,5 +32,16 @@ package org.apache.maven.tools.plugin.generator; public class PluginXdocGeneratorTest extends AbstractGeneratorTestCase { + // inherits tests from base class + + protected void validate( File destinationDirectory ) + throws Exception + { + File docFile = new File( destinationDirectory, "testGoal-mojo.xml" ); + + // sanity check: is the output well-formed? + Xpp3DomBuilder.build( ReaderFactory.newXmlReader( docFile ) ); + } + }