Coverage Report - org.apache.maven.plugin.jxr.HelpMojo
 
Classes in this File Line Coverage Branch Coverage Complexity
HelpMojo
0%
0/180
0%
0/62
4,667
 
 1  
 package org.apache.maven.plugin.jxr;
 2  
 
 3  
 import java.util.ArrayList;
 4  
 import java.util.Iterator;
 5  
 import java.util.List;
 6  
 
 7  
 import org.apache.maven.plugin.AbstractMojo;
 8  
 import org.apache.maven.plugin.MojoExecutionException;
 9  
 
 10  
 /**
 11  
  * Display help information on maven-jxr-plugin.<br/> Call <pre>  mvn jxr:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</pre> to display parameter details.
 12  
  *
 13  
  * @version generated on Wed Jun 02 20:34:40 CEST 2010
 14  
  * @author org.apache.maven.tools.plugin.generator.PluginHelpGenerator (version 2.6)
 15  
  * @goal help
 16  
  * @requiresProject false
 17  
  */
 18  0
 public class HelpMojo
 19  
     extends AbstractMojo
 20  
 {
 21  
     /**
 22  
      * If <code>true</code>, display all settable properties for each goal.
 23  
      * 
 24  
      * @parameter expression="${detail}" default-value="false"
 25  
      */
 26  
     private boolean detail;
 27  
 
 28  
     /**
 29  
      * The name of the goal for which to show help. If unspecified, all goals will be displayed.
 30  
      * 
 31  
      * @parameter expression="${goal}"
 32  
      */
 33  
     private java.lang.String goal;
 34  
 
 35  
     /**
 36  
      * The maximum length of a display line, should be positive.
 37  
      * 
 38  
      * @parameter expression="${lineLength}" default-value="80"
 39  
      */
 40  
     private int lineLength;
 41  
 
 42  
     /**
 43  
      * The number of spaces per indentation level, should be positive.
 44  
      * 
 45  
      * @parameter expression="${indentSize}" default-value="2"
 46  
      */
 47  
     private int indentSize;
 48  
 
 49  
 
 50  
     /** {@inheritDoc} */
 51  
     public void execute()
 52  
         throws MojoExecutionException
 53  
     {
 54  0
         if ( lineLength <= 0 )
 55  
         {
 56  0
             getLog().warn( "The parameter 'lineLength' should be positive, using '80' as default." );
 57  0
             lineLength = 80;
 58  
         }
 59  0
         if ( indentSize <= 0 )
 60  
         {
 61  0
             getLog().warn( "The parameter 'indentSize' should be positive, using '2' as default." );
 62  0
             indentSize = 2;
 63  
         }
 64  
 
 65  0
         StringBuffer sb = new StringBuffer();
 66  
 
 67  0
         append( sb, "org.apache.maven.plugins:maven-jxr-plugin:2.2", 0 );
 68  0
         append( sb, "", 0 );
 69  
 
 70  0
         append( sb, "Maven JXR Plugin", 0 );
 71  0
         append( sb, "Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project\'s build, reporting and documentation from a central piece of information.", 1 );
 72  0
         append( sb, "", 0 );
 73  
 
 74  0
         if ( goal == null || goal.length() <= 0 )
 75  
         {
 76  0
             append( sb, "This plugin has 3 goals:", 0 );
 77  0
             append( sb, "", 0 );
 78  
         }
 79  
 
 80  0
         if ( goal == null || goal.length() <= 0 || "help".equals( goal ) )
 81  
         {
 82  0
             append( sb, "jxr:help", 0 );
 83  0
             append( sb, "Display help information on maven-jxr-plugin.\nCall\n\u00a0\u00a0mvn\u00a0jxr:help\u00a0-Ddetail=true\u00a0-Dgoal=<goal-name>\nto display parameter details.", 1 );
 84  0
             append( sb, "", 0 );
 85  0
             if ( detail )
 86  
             {
 87  0
                 append( sb, "Available parameters:", 1 );
 88  0
                 append( sb, "", 0 );
 89  
 
 90  0
                 append( sb, "detail (Default: false)", 2 );
 91  0
                 append( sb, "If true, display all settable properties for each goal.", 3 );
 92  0
                 append( sb, "", 0 );
 93  
 
 94  0
                 append( sb, "goal", 2 );
 95  0
                 append( sb, "The name of the goal for which to show help. If unspecified, all goals will be displayed.", 3 );
 96  0
                 append( sb, "", 0 );
 97  
 
 98  0
                 append( sb, "indentSize (Default: 2)", 2 );
 99  0
                 append( sb, "The number of spaces per indentation level, should be positive.", 3 );
 100  0
                 append( sb, "", 0 );
 101  
 
 102  0
                 append( sb, "lineLength (Default: 80)", 2 );
 103  0
                 append( sb, "The maximum length of a display line, should be positive.", 3 );
 104  0
                 append( sb, "", 0 );
 105  
             }
 106  
         }
 107  
 
 108  0
         if ( goal == null || goal.length() <= 0 || "jxr".equals( goal ) )
 109  
         {
 110  0
             append( sb, "jxr:jxr", 0 );
 111  0
             append( sb, "Creates an html-based, cross referenced version of Java source code for a project.", 1 );
 112  0
             append( sb, "", 0 );
 113  0
             if ( detail )
 114  
             {
 115  0
                 append( sb, "Available parameters:", 1 );
 116  0
                 append( sb, "", 0 );
 117  
 
 118  0
                 append( sb, "aggregate (Default: false)", 2 );
 119  0
                 append( sb, "Whether to build an aggregated report at the root, or build individual reports.", 3 );
 120  0
                 append( sb, "", 0 );
 121  
 
 122  0
                 append( sb, "bottom (Default: Copyright &#169; {inceptionYear}-{currentYear} {projectOrganizationName}. All Rights Reserved.)", 2 );
 123  0
                 append( sb, "String uses at the bottom of the Xref HTML files.", 3 );
 124  0
                 append( sb, "", 0 );
 125  
 
 126  0
                 append( sb, "destDir", 2 );
 127  0
                 append( sb, "Folder where the Xref files will be copied to.", 3 );
 128  0
                 append( sb, "", 0 );
 129  
 
 130  0
                 append( sb, "docTitle", 2 );
 131  0
                 append( sb, "Title of main page of the Xref HTML files.", 3 );
 132  0
                 append( sb, "", 0 );
 133  
 
 134  0
                 append( sb, "excludes", 2 );
 135  0
                 append( sb, "A list of exclude patterns to use. By default no files are excluded.", 3 );
 136  0
                 append( sb, "", 0 );
 137  
 
 138  0
                 append( sb, "includes", 2 );
 139  0
                 append( sb, "A list of include patterns to use. By default all .java files are included.", 3 );
 140  0
                 append( sb, "", 0 );
 141  
 
 142  0
                 append( sb, "inputEncoding (Default: ${project.build.sourceEncoding})", 2 );
 143  0
                 append( sb, "File input encoding.", 3 );
 144  0
                 append( sb, "", 0 );
 145  
 
 146  0
                 append( sb, "javadocDir", 2 );
 147  0
                 append( sb, "Folder where Javadoc is generated for this project.", 3 );
 148  0
                 append( sb, "", 0 );
 149  
 
 150  0
                 append( sb, "linkJavadoc (Default: true)", 2 );
 151  0
                 append( sb, "Link the Javadoc from the Source XRef. Defaults to true and will link automatically if javadoc plugin is being used.", 3 );
 152  0
                 append( sb, "", 0 );
 153  
 
 154  0
                 append( sb, "outputDirectory", 2 );
 155  0
                 append( sb, "Output folder where the main page of the report will be generated. Note that this parameter is only relevant if the goal is run directly from the command line or from the default lifecycle. If the goal is run indirectly as part of a site generation, the output directory configured in the Maven Site Plugin will be used instead.", 3 );
 156  0
                 append( sb, "", 0 );
 157  
 
 158  0
                 append( sb, "outputEncoding (Default: ${project.reporting.outputEncoding})", 2 );
 159  0
                 append( sb, "File output encoding.", 3 );
 160  0
                 append( sb, "", 0 );
 161  
 
 162  0
                 append( sb, "sourcePath", 2 );
 163  0
                 append( sb, "Specifies the source path where the java files are located. The paths are separated by \';\'.", 3 );
 164  0
                 append( sb, "", 0 );
 165  
 
 166  0
                 append( sb, "stylesheet (Default: stylesheet.css)", 2 );
 167  0
                 append( sb, "Style sheet used for the Xref HTML files. Should not be used. If used, should be an absolute path, like \'${basedir}/myStyles.css\'.", 3 );
 168  0
                 append( sb, "", 0 );
 169  
 
 170  0
                 append( sb, "templateDir (Default: templates)", 2 );
 171  0
                 append( sb, "Directory where Velocity templates can be found to generate overviews, frames and summaries. Should not be used. If used, should be an absolute path, like \'${basedir}/myTemplates\'.", 3 );
 172  0
                 append( sb, "", 0 );
 173  
 
 174  0
                 append( sb, "windowTitle", 2 );
 175  0
                 append( sb, "Title of window of the Xref HTML files.", 3 );
 176  0
                 append( sb, "", 0 );
 177  
             }
 178  
         }
 179  
 
 180  0
         if ( goal == null || goal.length() <= 0 || "test-jxr".equals( goal ) )
 181  
         {
 182  0
             append( sb, "jxr:test-jxr", 0 );
 183  0
             append( sb, "Creates an html-based, cross referenced version of Java source code for a project\'s test sources.", 1 );
 184  0
             append( sb, "", 0 );
 185  0
             if ( detail )
 186  
             {
 187  0
                 append( sb, "Available parameters:", 1 );
 188  0
                 append( sb, "", 0 );
 189  
 
 190  0
                 append( sb, "aggregate (Default: false)", 2 );
 191  0
                 append( sb, "Whether to build an aggregated report at the root, or build individual reports.", 3 );
 192  0
                 append( sb, "", 0 );
 193  
 
 194  0
                 append( sb, "bottom (Default: Copyright &#169; {inceptionYear}-{currentYear} {projectOrganizationName}. All Rights Reserved.)", 2 );
 195  0
                 append( sb, "String uses at the bottom of the Xref HTML files.", 3 );
 196  0
                 append( sb, "", 0 );
 197  
 
 198  0
                 append( sb, "destDir", 2 );
 199  0
                 append( sb, "Folder where the Xref files will be copied to.", 3 );
 200  0
                 append( sb, "", 0 );
 201  
 
 202  0
                 append( sb, "docTitle", 2 );
 203  0
                 append( sb, "Title of main page of the Xref HTML files.", 3 );
 204  0
                 append( sb, "", 0 );
 205  
 
 206  0
                 append( sb, "excludes", 2 );
 207  0
                 append( sb, "A list of exclude patterns to use. By default no files are excluded.", 3 );
 208  0
                 append( sb, "", 0 );
 209  
 
 210  0
                 append( sb, "includes", 2 );
 211  0
                 append( sb, "A list of include patterns to use. By default all .java files are included.", 3 );
 212  0
                 append( sb, "", 0 );
 213  
 
 214  0
                 append( sb, "inputEncoding (Default: ${project.build.sourceEncoding})", 2 );
 215  0
                 append( sb, "File input encoding.", 3 );
 216  0
                 append( sb, "", 0 );
 217  
 
 218  0
                 append( sb, "linkJavadoc (Default: true)", 2 );
 219  0
                 append( sb, "Link the Javadoc from the Source XRef. Defaults to true and will link automatically if javadoc plugin is being used.", 3 );
 220  0
                 append( sb, "", 0 );
 221  
 
 222  0
                 append( sb, "outputDirectory", 2 );
 223  0
                 append( sb, "Output folder where the main page of the report will be generated. Note that this parameter is only relevant if the goal is run directly from the command line or from the default lifecycle. If the goal is run indirectly as part of a site generation, the output directory configured in the Maven Site Plugin will be used instead.", 3 );
 224  0
                 append( sb, "", 0 );
 225  
 
 226  0
                 append( sb, "outputEncoding (Default: ${project.reporting.outputEncoding})", 2 );
 227  0
                 append( sb, "File output encoding.", 3 );
 228  0
                 append( sb, "", 0 );
 229  
 
 230  0
                 append( sb, "stylesheet (Default: stylesheet.css)", 2 );
 231  0
                 append( sb, "Style sheet used for the Xref HTML files. Should not be used. If used, should be an absolute path, like \'${basedir}/myStyles.css\'.", 3 );
 232  0
                 append( sb, "", 0 );
 233  
 
 234  0
                 append( sb, "templateDir (Default: templates)", 2 );
 235  0
                 append( sb, "Directory where Velocity templates can be found to generate overviews, frames and summaries. Should not be used. If used, should be an absolute path, like \'${basedir}/myTemplates\'.", 3 );
 236  0
                 append( sb, "", 0 );
 237  
 
 238  0
                 append( sb, "testJavadocDir", 2 );
 239  0
                 append( sb, "Folder where Test Javadoc is generated for this project.", 3 );
 240  0
                 append( sb, "", 0 );
 241  
 
 242  0
                 append( sb, "windowTitle", 2 );
 243  0
                 append( sb, "Title of window of the Xref HTML files.", 3 );
 244  0
                 append( sb, "", 0 );
 245  
             }
 246  
         }
 247  
 
 248  0
         if ( getLog().isInfoEnabled() )
 249  
         {
 250  0
             getLog().info( sb.toString() );
 251  
         }
 252  0
     }
 253  
 
 254  
     /**
 255  
      * <p>Repeat a String <code>n</code> times to form a new string.</p>
 256  
      *
 257  
      * @param str String to repeat
 258  
      * @param repeat number of times to repeat str
 259  
      * @return String with repeated String
 260  
      * @throws NegativeArraySizeException if <code>repeat < 0</code>
 261  
      * @throws NullPointerException if str is <code>null</code>
 262  
      */
 263  
     private static String repeat( String str, int repeat )
 264  
     {
 265  0
         StringBuffer buffer = new StringBuffer( repeat * str.length() );
 266  
 
 267  0
         for ( int i = 0; i < repeat; i++ )
 268  
         {
 269  0
             buffer.append( str );
 270  
         }
 271  
 
 272  0
         return buffer.toString();
 273  
     }
 274  
 
 275  
     /** 
 276  
      * Append a description to the buffer by respecting the indentSize and lineLength parameters.
 277  
      * <b>Note</b>: The last character is always a new line.
 278  
      * 
 279  
      * @param sb The buffer to append the description, not <code>null</code>.
 280  
      * @param description The description, not <code>null</code>.
 281  
      * @param indent The base indentation level of each line, must not be negative.
 282  
      */
 283  
     private void append( StringBuffer sb, String description, int indent )
 284  
     {
 285  0
         for ( Iterator it = toLines( description, indent, indentSize, lineLength ).iterator(); it.hasNext(); )
 286  
         {
 287  0
             sb.append( it.next().toString() ).append( '\n' );
 288  
         }
 289  0
     }
 290  
 
 291  
     /** 
 292  
      * Splits the specified text into lines of convenient display length.
 293  
      * 
 294  
      * @param text The text to split into lines, must not be <code>null</code>.
 295  
      * @param indent The base indentation level of each line, must not be negative.
 296  
      * @param indentSize The size of each indentation, must not be negative.
 297  
      * @param lineLength The length of the line, must not be negative.
 298  
      * @return The sequence of display lines, never <code>null</code>.
 299  
      * @throws NegativeArraySizeException if <code>indent < 0</code>
 300  
      */
 301  
     private static List toLines( String text, int indent, int indentSize, int lineLength )
 302  
     {
 303  0
         List lines = new ArrayList();
 304  
 
 305  0
         String ind = repeat( "\t", indent );
 306  0
         String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" );
 307  0
         for ( int i = 0; i < plainLines.length; i++ )
 308  
         {
 309  0
             toLines( lines, ind + plainLines[i], indentSize, lineLength );
 310  
         }
 311  
 
 312  0
         return lines;
 313  
     }
 314  
 
 315  
     /** 
 316  
      * Adds the specified line to the output sequence, performing line wrapping if necessary.
 317  
      * 
 318  
      * @param lines The sequence of display lines, must not be <code>null</code>.
 319  
      * @param line The line to add, must not be <code>null</code>.
 320  
      * @param indentSize The size of each indentation, must not be negative.
 321  
      * @param lineLength The length of the line, must not be negative.
 322  
      */
 323  
     private static void toLines( List lines, String line, int indentSize, int lineLength )
 324  
     {
 325  0
         int lineIndent = getIndentLevel( line );
 326  0
         StringBuffer buf = new StringBuffer( 256 );
 327  0
         String[] tokens = line.split( " +" );
 328  0
         for ( int i = 0; i < tokens.length; i++ )
 329  
         {
 330  0
             String token = tokens[i];
 331  0
             if ( i > 0 )
 332  
             {
 333  0
                 if ( buf.length() + token.length() >= lineLength )
 334  
                 {
 335  0
                     lines.add( buf.toString() );
 336  0
                     buf.setLength( 0 );
 337  0
                     buf.append( repeat( " ", lineIndent * indentSize ) );
 338  
                 }
 339  
                 else
 340  
                 {
 341  0
                     buf.append( ' ' );
 342  
                 }
 343  
             }
 344  0
             for ( int j = 0; j < token.length(); j++ )
 345  
             {
 346  0
                 char c = token.charAt( j );
 347  0
                 if ( c == '\t' )
 348  
                 {
 349  0
                     buf.append( repeat( " ", indentSize - buf.length() % indentSize ) );
 350  
                 }
 351  0
                 else if ( c == '\u00A0' )
 352  
                 {
 353  0
                     buf.append( ' ' );
 354  
                 }
 355  
                 else
 356  
                 {
 357  0
                     buf.append( c );
 358  
                 }
 359  
             }
 360  
         }
 361  0
         lines.add( buf.toString() );
 362  0
     }
 363  
 
 364  
     /** 
 365  
      * Gets the indentation level of the specified line.
 366  
      * 
 367  
      * @param line The line whose indentation level should be retrieved, must not be <code>null</code>.
 368  
      * @return The indentation level of the line.
 369  
      */
 370  
     private static int getIndentLevel( String line )
 371  
     {
 372  0
         int level = 0;
 373  0
         for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ )
 374  
         {
 375  0
             level++;
 376  
         }
 377  0
         for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ )
 378  
         {
 379  0
             if ( line.charAt( i ) == '\t' )
 380  
             {
 381  0
                 level++;
 382  0
                 break;
 383  
             }
 384  
         }
 385  0
         return level;
 386  
     }
 387  
 }