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 ) );
+ }
+
}