[MPLUGIN-148] PluginXdocGenerator generates poorly formed output when default values contain XML
Submitted by: Brent N Atkinson o Enriched with test git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@821512 13f79535-47bb-0310-9956-ffa450edef68master
parent
6cb48fbe1e
commit
d11dfa4223
|
|
@ -51,7 +51,7 @@ public class MyMojo
|
||||||
/**
|
/**
|
||||||
* This is a test.
|
* This is a test.
|
||||||
*
|
*
|
||||||
* @parameter expression="${string}" default-value="${project.version}"
|
* @parameter expression="${string}" default-value="${project.version}/</markup-must-be-escaped>"
|
||||||
* @deprecated Just testing.
|
* @deprecated Just testing.
|
||||||
* @since 1.1
|
* @since 1.1
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ try
|
||||||
{
|
{
|
||||||
File file = new File( siteDir, path );
|
File file = new File( siteDir, path );
|
||||||
System.out.println( "Checking for existence of doc file: " + file );
|
System.out.println( "Checking for existence of doc file: " + file );
|
||||||
if ( !file.isFile() )
|
if ( !file.isFile() || file.length() <= 0 )
|
||||||
{
|
{
|
||||||
System.out.println( "FAILED!" );
|
System.out.println( "FAILED!" );
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -563,7 +563,8 @@ public class PluginXdocGenerator
|
||||||
w.startElement( "ul" );
|
w.startElement( "ul" );
|
||||||
addedUl = true;
|
addedUl = true;
|
||||||
}
|
}
|
||||||
writeDetail( getString( "pluginxdoc.mojodescriptor.parameter.default" ), parameter.getDefaultValue(), w );
|
writeDetail( getString( "pluginxdoc.mojodescriptor.parameter.default" ),
|
||||||
|
escapeXml( parameter.getDefaultValue() ), w );
|
||||||
|
|
||||||
if ( addedUl )
|
if ( addedUl )
|
||||||
{
|
{
|
||||||
|
|
@ -696,7 +697,7 @@ public class PluginXdocGenerator
|
||||||
if ( StringUtils.isNotEmpty( parameter.getDefaultValue() ) )
|
if ( StringUtils.isNotEmpty( parameter.getDefaultValue() ) )
|
||||||
{
|
{
|
||||||
w.writeMarkup( format( "pluginxdoc.mojodescriptor.parameter.defaultValue",
|
w.writeMarkup( format( "pluginxdoc.mojodescriptor.parameter.defaultValue",
|
||||||
parameter.getDefaultValue() ) );
|
escapeXml( parameter.getDefaultValue() ) ) );
|
||||||
}
|
}
|
||||||
w.endElement(); //td
|
w.endElement(); //td
|
||||||
w.endElement(); //tr
|
w.endElement(); //tr
|
||||||
|
|
@ -781,4 +782,22 @@ public class PluginXdocGenerator
|
||||||
|
|
||||||
return messageFormat.format( args );
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,7 @@ public abstract class AbstractGeneratorTestCase
|
||||||
|
|
||||||
Parameter param = new Parameter();
|
Parameter param = new Parameter();
|
||||||
param.setExpression( "${project.build.directory}" );
|
param.setExpression( "${project.build.directory}" );
|
||||||
|
param.setDefaultValue( "</markup-must-be-escaped>" );
|
||||||
param.setName( "dir" );
|
param.setName( "dir" );
|
||||||
param.setRequired( true );
|
param.setRequired( true );
|
||||||
param.setType( "java.lang.String" );
|
param.setType( "java.lang.String" );
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,11 @@ package org.apache.maven.tools.plugin.generator;
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
import org.codehaus.plexus.util.ReaderFactory;
|
||||||
|
import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author <a href="mailto:jason@maven.org">Jason van Zyl </a>
|
* @author <a href="mailto:jason@maven.org">Jason van Zyl </a>
|
||||||
* @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
|
* @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
|
||||||
|
|
@ -27,5 +32,16 @@ package org.apache.maven.tools.plugin.generator;
|
||||||
public class PluginXdocGeneratorTest
|
public class PluginXdocGeneratorTest
|
||||||
extends AbstractGeneratorTestCase
|
extends AbstractGeneratorTestCase
|
||||||
{
|
{
|
||||||
|
|
||||||
// inherits tests from base class
|
// 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 ) );
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue