Author: vsiveton Date: Sat Aug 30 07:12:39 2008 New Revision: 690509 URL: http://svn.apache.org/viewvc?rev=690509&view=rev Log: o handle empty deprecated
Modified: maven/plugins/trunk/maven-help-plugin/src/main/java/org/apache/maven/plugins/help/DescribeMojo.java Modified: maven/plugins/trunk/maven-help-plugin/src/main/java/org/apache/maven/plugins/help/DescribeMojo.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-help-plugin/src/main/java/org/apache/maven/plugins/help/DescribeMojo.java?rev=690509&r1=690508&r2=690509&view=diff ============================================================================== --- maven/plugins/trunk/maven-help-plugin/src/main/java/org/apache/maven/plugins/help/DescribeMojo.java (original) +++ maven/plugins/trunk/maven-help-plugin/src/main/java/org/apache/maven/plugins/help/DescribeMojo.java Sat Aug 30 07:12:39 2008 @@ -57,7 +57,9 @@ import org.apache.maven.tools.plugin.util.PluginUtils; import org.codehaus.plexus.component.repository.exception.ComponentLookupException; import org.codehaus.plexus.configuration.PlexusConfigurationException; +import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration; import org.codehaus.plexus.util.StringUtils; +import org.codehaus.plexus.util.xml.Xpp3Dom; /** * Displays a list of the attributes for a Maven Plugin and/or Mojo (Maven plain Old Java Object). @@ -78,6 +80,9 @@ /** For unknown values */ private static final String UNKNOWN = "Unknown"; + /** For deprecated values */ + private static final String NO_REASON = "No reason given"; + // ---------------------------------------------------------------------- // Mojo components // ---------------------------------------------------------------------- @@ -602,6 +607,11 @@ appendAsParagraph( buffer, "Description", toDescription( md.getDescription() ), 1 ); String deprecation = md.getDeprecated(); + if ( StringUtils.isEmpty( deprecation ) ) + { + deprecation = getValue( md, "deprecated", NO_REASON ); + } + if ( StringUtils.isNotEmpty( deprecation ) ) { append( buffer, "Deprecated. " + deprecation, 1 ); @@ -687,7 +697,6 @@ append( buffer, "Available parameters:", 1 ); // indent 2 - int idx = 0; for ( Iterator it = params.iterator(); it.hasNext(); ) { Parameter parameter = (Parameter) it.next(); @@ -702,7 +711,8 @@ // defaultVal is ALWAYS null, this is a bug in PluginDescriptorBuilder try { - defaultVal = md.getMojoConfiguration().getChild( parameter.getName() ).getAttribute( "default-value" ); + defaultVal = + md.getMojoConfiguration().getChild( parameter.getName() ).getAttribute( "default-value" ); } catch ( PlexusConfigurationException e ) { @@ -714,14 +724,11 @@ { defaultVal = " (Default: " + defaultVal + ")"; } - if ( defaultVal == null ) defaultVal = ""; - + else + { + defaultVal = ""; + } append( buffer, parameter.getName() + defaultVal, 2); -// append( buffer, "[" + idx++ + "] Name", parameter.getName() -// + ( StringUtils.isEmpty( parameter.getAlias() ) ? "" : " (Alias: " + parameter.getAlias() + ")" ), -// 2 ); -// -// append( buffer, "Type", parameter.getType(), 2 ); String expression = parameter.getExpression(); if ( StringUtils.isNotEmpty( expression ) ) @@ -729,14 +736,17 @@ append( buffer, "Expression", expression, 3 ); } - //append( buffer, "Required", parameter.isRequired() + "", 2 ); - append( buffer, toDescription( parameter.getDescription() ), 3 ); String deprecation = parameter.getDeprecated(); + if ( StringUtils.isEmpty( deprecation ) ) + { + deprecation = getValue( md, parameter.getName(), "deprecated", NO_REASON ); + } + if ( StringUtils.isNotEmpty( deprecation ) ) { - append( buffer, "Deprecated." + deprecation, 3 ); + append( buffer, "Deprecated. " + deprecation, 3 ); } } } @@ -1039,6 +1049,122 @@ } /** + * @param md not null + * @param name not null + * @param defaultValue the default value if not found, could be null. + * @return the value of <code>name</code> from the Mojo descriptor or <code>defaultValue</code> if not found. + */ + private static String getValue( MojoDescriptor md, String name, String defaultValue ) + { + if ( md == null ) + { + throw new IllegalArgumentException( "MojoDescriptor parameter is required." ); + } + + if ( StringUtils.isEmpty( name ) ) + { + throw new IllegalArgumentException( "Name parameter is required." ); + } + + XmlPlexusConfiguration mojoConf = null; + try + { + mojoConf = (XmlPlexusConfiguration) md.getMojoConfiguration(); + } + catch ( ClassCastException e ) + { + return defaultValue; + } + + try + { + if ( ( mojoConf != null && mojoConf.getXpp3Dom() != null ) && ( mojoConf.getXpp3Dom().getParent() != null ) + && ( mojoConf.getXpp3Dom().getParent().getChild( name ) != null ) ) + { + String value = mojoConf.getXpp3Dom().getParent().getChild( name ).getValue(); + if ( StringUtils.isEmpty( value ) ) + { + value = defaultValue; + } + + return value; + } + } + catch ( RuntimeException e ) + { + return defaultValue; + } + + return defaultValue; + } + + /** + * @param md not null + * @param parameterName not null + * @param name not null + * @param defaultValue the default value if not found, could be null. + * @return the value of <code>name</code> for the <code>parameterName</code> from the Mojo descriptor or + * <code>defaultValue</code> if not found. + */ + private static String getValue( MojoDescriptor md, String parameterName, String name, String defaultValue ) + { + if ( md == null ) + { + throw new IllegalArgumentException( "MojoDescriptor parameter is required." ); + } + + if ( StringUtils.isEmpty( name ) ) + { + throw new IllegalArgumentException( "Name parameter is required." ); + } + + XmlPlexusConfiguration mojoConf = null; + try + { + mojoConf = (XmlPlexusConfiguration) md.getMojoConfiguration(); + } + catch ( ClassCastException e ) + { + return defaultValue; + } + + try + { + if ( ( mojoConf != null && mojoConf.getXpp3Dom() != null ) && ( mojoConf.getXpp3Dom().getParent() != null ) + && ( mojoConf.getXpp3Dom().getParent().getChild( "parameters" ) != null ) ) + { + Xpp3Dom[] parameters = mojoConf.getXpp3Dom().getParent().getChild( "parameters" ).getChildren(); + for ( int i = 0; i < parameters.length; i++ ) + { + Xpp3Dom parameter = parameters[i]; + if ( parameter == null || parameter.getChild( "name" ) == null + || !parameter.getChild( "name" ).getValue().equals( parameterName ) ) + { + continue; + } + + if ( parameter.getChild( name ) != null ) + { + String value = parameter.getChild( name ).getValue(); + if ( StringUtils.isEmpty( value ) ) + { + value = defaultValue; + } + + return value; + } + } + } + } + catch ( RuntimeException e ) + { + return defaultValue; + } + + return defaultValue; + } + + /** * Class to wrap Plugin information. */ static class PluginInfo