Author: brett Date: Tue Jul 4 21:16:13 2006 New Revision: 419161 URL: http://svn.apache.org/viewvc?rev=419161&view=rev Log: [MPLUGIN-7] merge r418201, 417945 from trunk
Modified: maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java Modified: maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java?rev=419161&r1=419160&r2=419161&view=diff ============================================================================== --- maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java (original) +++ maven/components/branches/maven-2.0.x/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java Tue Jul 4 21:16:13 2006 @@ -28,6 +28,7 @@ import java.io.IOException; import java.util.Iterator; import java.util.List; +import java.util.ArrayList; /** * @todo add example usage tag that can be shown in the doco @@ -113,11 +114,7 @@ w.endElement(); // p - w.startElement( "p" ); - - w.writeText( "Parameters for the goal: " ); - - w.endElement(); // p + writeGoalAttributes( mojoDescriptor, w ); writeGoalParameterTable( mojoDescriptor, w ); @@ -128,188 +125,257 @@ w.endElement(); // document } - private void writeGoalParameterTable( MojoDescriptor mojoDescriptor, XMLWriter w ) + private void writeGoalAttributes( MojoDescriptor mojoDescriptor, XMLWriter w ) { - w.startElement( "table" ); - - w.startElement( "tr" ); - - w.startElement( "th" ); - - w.writeText( "Parameter" ); - - w.endElement(); // th + w.startElement( "p" ); + w.writeMarkup( "<b>Mojo Attributes</b>:" ); + w.startElement( "ul" ); - w.startElement( "th" ); + String value = mojoDescriptor.getDeprecated(); + if ( StringUtils.isNotEmpty( value ) ) + { + w.writeMarkup( "<li>This plugin goal has been deprecated: " + value + "</li>" ); + } - w.writeText( "Type" ); + if ( mojoDescriptor.isProjectRequired() ) + { + w.writeMarkup( "<li>Requires a Maven 2.0 project to execute.</li>" ); + } - w.endElement(); // th + if ( mojoDescriptor.isAggregator() ) + { + w.writeMarkup( "<li>Executes as an aggregator plugin.</li>" ); + } - w.startElement( "th" ); + if ( mojoDescriptor.isDirectInvocationOnly() ) + { + w.writeMarkup( "<li>Executes by direct invocation only.</li>" ); + } - w.writeText( "Expression" ); + value = mojoDescriptor.isDependencyResolutionRequired(); + if ( StringUtils.isNotEmpty( value ) ) + { + w.writeMarkup( "<li>Requires dependency resolution of artifacts in scope: <code>" + value + + "</code></li>" ); + } - w.endElement(); // th + value = mojoDescriptor.getPhase(); + if ( StringUtils.isNotEmpty( value ) ) + { + w.writeMarkup( "<li>Automatically executes within the lifecycle phase: <code>" + value + "</code></li>" ); + } - w.startElement( "th" ); + value = mojoDescriptor.getExecutePhase(); + if ( StringUtils.isNotEmpty( value ) ) + { + w.writeMarkup( "<li>Invokes the execution of the lifecycle phase <code>" + value + + "</code> prior to executing itself.</li>" ); + } - w.writeText( "Default Value" ); + value = mojoDescriptor.getExecuteGoal(); + if ( StringUtils.isNotEmpty( value ) ) + { + w.writeMarkup( "<li>Invokes the execution of this plugin's goal <code>" + value + + "</code> prior to executing itself.</li>" ); + } - w.endElement(); // th + value = mojoDescriptor.getExecuteLifecycle(); + if ( StringUtils.isNotEmpty( value ) ) + { + w.writeMarkup( "<li>Executes in its own lifecycle: <code>" + value + "</code></li>" ); + } - w.startElement( "th" ); + if ( mojoDescriptor.isOnlineRequired() ) + { + w.writeMarkup( "<li>Requires that mvn runs in online mode.</li>" ); + } - w.writeText( "Description" ); + if ( !mojoDescriptor.isInheritedByDefault() ) + { + w.writeMarkup( "<li>Is NOT inherited by default in multi-project builds.</li>" ); + } - w.endElement(); // th + w.endElement();//ul + w.endElement();//p + } - w.endElement(); // tr + private void writeGoalParameterTable( MojoDescriptor mojoDescriptor, XMLWriter w ) + { + List parameterList = mojoDescriptor.getParameters(); - List parameters = mojoDescriptor.getParameters(); + //remove components and read-only parameters + List list = filterParameters( parameterList ); - if ( parameters != null ) + if ( list != null ) { - for ( int i = 0; i < parameters.size(); i++ ) + if ( list.size() > 0 ) { - Parameter parameter = (Parameter) parameters.get( i ); - - w.startElement( "tr" ); - - // ---------------------------------------------------------------------- - // - // ---------------------------------------------------------------------- + writeParameterSummary( list, w ); - w.startElement( "td" ); - - String paramName = parameter.getAlias(); - - if ( StringUtils.isEmpty( paramName ) ) - { - paramName = parameter.getName(); - } - - w.startElement( "code" ); + writeParameterDetails( list, w ); + } + else + { + w.startElement( "" ); + } + } + } - w.writeText( paramName ); + private List filterParameters( List parameterList ) + { + List filtered = new ArrayList(); - w.endElement(); // code + for ( Iterator parameters = parameterList.iterator(); parameters.hasNext(); ) + { + Parameter parameter = (Parameter) parameters.next(); - if ( !parameter.isRequired() ) - { - w.writeMarkup( " <i>(Optional)</i>" ); - } + if ( parameter.isEditable() ) + { + String expression = parameter.getExpression(); - if ( parameter.getExpression() != null && parameter.getExpression().startsWith( "${component." ) ) + if ( expression != null && !expression.startsWith( "${component." ) ) { - w.writeMarkup( " <i>(Discovered)</i>" ); - } - else if ( parameter.getRequirement() != null ) - { - w.writeMarkup( " <i>(Discovered)</i>" ); + filtered.add( parameter ); } + } + } - w.endElement(); // td + return filtered; + } - // ---------------------------------------------------------------------- - // - // ---------------------------------------------------------------------- + private void writeParameterDetails( List parameterList, XMLWriter w ) + { + w.startElement( "subsection" ); + w.addAttribute( "name", "Parameter Details" ); - w.startElement( "td" ); + for( Iterator parameters = parameterList.iterator(); parameters.hasNext(); ) + { + Parameter parameter = (Parameter) parameters.next(); - w.startElement( "code" ); + w.writeMarkup( "<p><b><a name=\"" + parameter.getName() + "\">" + parameter.getName() + "</a></b></p>" ); - w.addAttribute( "title", parameter.getType() ); + String description = parameter.getDescription(); + if ( StringUtils.isEmpty( description ) ) + { + description = "No Description."; + } + w.writeMarkup( "<p>" + description + "</p>" ); - int index = parameter.getType().lastIndexOf( "." ); - if ( index >= 0 ) - { - w.writeText( parameter.getType().substring( index + 1 ) ); - } - else - { - w.writeText( parameter.getType() ); - } + w.startElement( "ul" ); - w.endElement(); // code + writeDetail( "Type", parameter.getType(), w ); - w.endElement(); // td + // TODO: requires that this field is in the plugin descriptor + // writeDetail( "Since", parameter.getSince(), w ); - // ---------------------------------------------------------------------- - // - // ---------------------------------------------------------------------- + if ( parameter.isRequired() ) + { + writeDetail( "Required", "Yes", w ); + } + else + { + writeDetail( "Required", "No", w ); + } - w.startElement( "td" ); + writeDetail( "Expression", parameter.getExpression(), w ); - w.startElement( "code" ); + writeDetail( "Default", parameter.getDefaultValue(), w ); - if ( StringUtils.isNotEmpty( parameter.getExpression() ) && - !parameter.getExpression().startsWith( "${component." ) ) - { - w.writeText( parameter.getExpression() ); - } - else - { - w.writeText( "-" ); - } + w.endElement();//ul - w.endElement(); // code + w.writeMarkup( "<hr/>" ); + } - w.endElement(); // td + w.endElement(); + } - // ---------------------------------------------------------------------- - // - // ---------------------------------------------------------------------- + private void writeDetail( String param, String value, XMLWriter w ) + { + if ( StringUtils.isNotEmpty( value ) ) + { + w.writeMarkup( "<li><b>" + param + "</b>: <code>" + value + "</code></li>" ); + } + } - w.startElement( "td" ); + private void writeParameterSummary( List parameterList, XMLWriter w ) + { + List requiredParams = getParametersByRequired( true, parameterList ); + if ( requiredParams.size() > 0 ) + { + writeParameterList( "Required Parameters", requiredParams, w ); + } - w.startElement( "code" ); + List optionalParams = getParametersByRequired( false, parameterList ); + if ( optionalParams.size() > 0 ) + { + writeParameterList( "Optional Parameters", optionalParams, w ); + } + } - if ( StringUtils.isNotEmpty( parameter.getDefaultValue() ) ) - { - w.writeText( parameter.getDefaultValue() ); - } - else - { - w.writeText( "-" ); - } + private void writeParameterList( String title, List parameterList, XMLWriter w ) + { + w.startElement( "subsection" ); + w.addAttribute( "name", title ); - w.endElement(); // code + w.startElement( "table" ); - w.endElement(); // td + w.startElement( "tr" ); + w.startElement( "th" ); + w.writeText( "Name" ); + w.endElement();//th + w.startElement( "th" ); + w.writeText( "Type" ); + w.endElement();//th + w.startElement( "th" ); + w.writeText( "Description" ); + w.endElement();//th + w.endElement();//tr - // ---------------------------------------------------------------------- - // - // ---------------------------------------------------------------------- + for( Iterator parameters = parameterList.iterator(); parameters.hasNext(); ) + { + Parameter parameter = (Parameter) parameters.next(); - w.startElement( "td" ); + w.startElement( "tr" ); + w.startElement( "td" ); + w.writeMarkup( "<b><a href=\"#" + parameter.getName() + "\">" + parameter.getName() + "</a></b>"); + w.endElement();//td + w.startElement( "td" ); + int index = parameter.getType().lastIndexOf( "." ); + w.writeMarkup( "<code>" + parameter.getType().substring( index + 1 ) + "</code>" ); + w.endElement();//td + w.startElement( "td" ); + String description = parameter.getDescription(); + if ( StringUtils.isEmpty( description ) ) + { + description = "No description."; + } + if ( StringUtils.isNotEmpty( parameter.getDefaultValue() ) ) + { + description = description + " Default value is <code>" + parameter.getDefaultValue() + "</code>."; + } + w.writeMarkup( description ); + w.endElement();//td + w.endElement(); //tr + } - if ( StringUtils.isNotEmpty( parameter.getDescription() ) ) - { - w.writeMarkup( parameter.getDescription() ); - } - else - { - w.writeText( "No description." ); - } + w.endElement();//table + w.endElement();//section + } - String deprecationWarning = parameter.getDeprecated(); - if ( deprecationWarning != null ) - { - w.writeMarkup( "<br/><b>Deprecated:</b> " ); - w.writeMarkup( deprecationWarning ); - if ( deprecationWarning.length() == 0 ) - { - w.writeText( "No reason given." ); - } - } + private List getParametersByRequired( boolean required, List parameterList ) + { + List list = new ArrayList(); - w.endElement(); // td + for ( Iterator parameters = parameterList.iterator(); parameters.hasNext(); ) + { + Parameter parameter = (Parameter) parameters.next(); - w.endElement(); // tr + if ( parameter.isRequired() == required ) + { + list.add( parameter ); } } - w.endElement(); // table + return list; } -} \ No newline at end of file +}