1 package org.codehaus.mojo.retrotranslator;
2
3 import java.util.ArrayList;
4 import java.util.Iterator;
5 import java.util.List;
6 import java.util.StringTokenizer;
7
8 import org.apache.maven.plugin.AbstractMojo;
9 import org.apache.maven.plugin.MojoExecutionException;
10
11
12
13
14
15
16
17 public class HelpMojo
18 extends AbstractMojo
19 {
20
21 private static final int DEFAULT_WIDTH = 80;
22
23
24 private static final String DEFAULT_INDENT = repeat( " ", 2 );
25
26
27
28
29
30
31 private boolean detail;
32
33
34 public void execute()
35 throws MojoExecutionException
36 {
37 StringBuffer sb = new StringBuffer();
38
39 sb.append( "The 'org.codehaus.mojo:retrotranslator-maven-plugin' plugin has 5 goals:" ).append( "\n" );
40 sb.append( "\n" );
41
42 sb.append( "retrotranslator:help" ).append( "\n" );
43 for ( Iterator it = toLines( "Display help information on 'org.codehaus.mojo:retrotranslator-maven-plugin' plugin. Call 'mvn retrotranslator:help -Ddetail=true' to display all details." ).iterator(); it.hasNext(); )
44 {
45 sb.append( it.next().toString() ).append( "\n" );
46 }
47 if ( detail )
48 {
49 sb.append( "\n" );
50
51 sb.append( repeat( " ", 2 ) );
52 sb.append( "Available parameters:" ).append( "\n" );
53
54 sb.append( "\n" );
55
56 for ( Iterator it = toLines( "detail (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
57 {
58 sb.append( it.next().toString() ).append( "\n" );
59 }
60 for ( Iterator it = toLines( "If true, display all settable properies for each goal.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
61 {
62 sb.append( it.next().toString() ).append( "\n" );
63 }
64 }
65
66 sb.append( "\n" );
67
68 sb.append( "retrotranslator:translate" ).append( "\n" );
69 for ( Iterator it = toLines( "Retrotranslates jars and classes." ).iterator(); it.hasNext(); )
70 {
71 sb.append( it.next().toString() ).append( "\n" );
72 }
73 if ( detail )
74 {
75 sb.append( "\n" );
76
77 sb.append( repeat( " ", 2 ) );
78 sb.append( "Available parameters:" ).append( "\n" );
79
80 sb.append( "\n" );
81
82 for ( Iterator it = toLines( "advanced (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
83 {
84 sb.append( it.next().toString() ).append( "\n" );
85 }
86 for ( Iterator it = toLines( "Whether to use alternative implementations of Java 1.4 classes and methods for better Java 5 compatibility.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
87 {
88 sb.append( it.next().toString() ).append( "\n" );
89 }
90 for ( Iterator it = toLines( "backport", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
91 {
92 sb.append( it.next().toString() ).append( "\n" );
93 }
94 for ( Iterator it = toLines( "Informs the translator about user-defined backport packages. Package names should be separated by semicolons.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
95 {
96 sb.append( it.next().toString() ).append( "\n" );
97 }
98 for ( Iterator it = toLines( "destdir", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
99 {
100 sb.append( it.next().toString() ).append( "\n" );
101 }
102 for ( Iterator it = toLines( "The directory to place translated classes.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
103 {
104 sb.append( it.next().toString() ).append( "\n" );
105 }
106 for ( Iterator it = toLines( "destjar", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
107 {
108 sb.append( it.next().toString() ).append( "\n" );
109 }
110 for ( Iterator it = toLines( "The JAR file to place translated classes.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
111 {
112 sb.append( it.next().toString() ).append( "\n" );
113 }
114 for ( Iterator it = toLines( "dirsets", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
115 {
116 sb.append( it.next().toString() ).append( "\n" );
117 }
118 for ( Iterator it = toLines( "Directories to include in the translation.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
119 {
120 sb.append( it.next().toString() ).append( "\n" );
121 }
122 for ( Iterator it = toLines( "embed", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
123 {
124 sb.append( it.next().toString() ).append( "\n" );
125 }
126 for ( Iterator it = toLines( "The package name for a private copy of retrotranslator-runtime-n.n.n.jar and backport-util-concurrent-n.n.jar to be put with translated classes.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
127 {
128 sb.append( it.next().toString() ).append( "\n" );
129 }
130 for ( Iterator it = toLines( "failonwarning (Default: 'true')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
131 {
132 sb.append( it.next().toString() ).append( "\n" );
133 }
134 for ( Iterator it = toLines( "Fails build when verification has failed.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
135 {
136 sb.append( it.next().toString() ).append( "\n" );
137 }
138 for ( Iterator it = toLines( "filesets", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
139 {
140 sb.append( it.next().toString() ).append( "\n" );
141 }
142 for ( Iterator it = toLines( "Files to include in the translation.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
143 {
144 sb.append( it.next().toString() ).append( "\n" );
145 }
146 for ( Iterator it = toLines( "jarfilesets", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
147 {
148 sb.append( it.next().toString() ).append( "\n" );
149 }
150 for ( Iterator it = toLines( "Jar files to include in the translation.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
151 {
152 sb.append( it.next().toString() ).append( "\n" );
153 }
154 for ( Iterator it = toLines( "lazy (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
155 {
156 sb.append( it.next().toString() ).append( "\n" );
157 }
158 for ( Iterator it = toLines( "Asks the translator to only transform classes compiled with a target greater than the current one.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
159 {
160 sb.append( it.next().toString() ).append( "\n" );
161 }
162 for ( Iterator it = toLines( "retainapi (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
163 {
164 sb.append( it.next().toString() ).append( "\n" );
165 }
166 for ( Iterator it = toLines( "Asks the translator to modify classes for JVM 1.4 compatibility but keep use of Java 5 API.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
167 {
168 sb.append( it.next().toString() ).append( "\n" );
169 }
170 for ( Iterator it = toLines( "retainflags (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
171 {
172 sb.append( it.next().toString() ).append( "\n" );
173 }
174 for ( Iterator it = toLines( "Asks the translator to keep Java 5 specific access modifiers.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
175 {
176 sb.append( it.next().toString() ).append( "\n" );
177 }
178 for ( Iterator it = toLines( "srcmask (Default: '*.class')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
179 {
180 sb.append( it.next().toString() ).append( "\n" );
181 }
182 for ( Iterator it = toLines( "The wildcard pattern specifying files that should be translated (either bytecode or UTF-8 text), e.g. '*.class*.tld'. There are three special characters: '*?'.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
183 {
184 sb.append( it.next().toString() ).append( "\n" );
185 }
186 for ( Iterator it = toLines( "stripsign (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
187 {
188 sb.append( it.next().toString() ).append( "\n" );
189 }
190 for ( Iterator it = toLines( "Asks the translator to strip signature (generics) information.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
191 {
192 sb.append( it.next().toString() ).append( "\n" );
193 }
194 for ( Iterator it = toLines( "target (Default: '1.4')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
195 {
196 sb.append( it.next().toString() ).append( "\n" );
197 }
198 for ( Iterator it = toLines( "To make Java 6 classes compatible with Java 5 set this option to 1.5 and supply user-defined backport packages.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
199 {
200 sb.append( it.next().toString() ).append( "\n" );
201 }
202 for ( Iterator it = toLines( "verbose (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
203 {
204 sb.append( it.next().toString() ).append( "\n" );
205 }
206 for ( Iterator it = toLines( "Asks the translator for verbose output.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
207 {
208 sb.append( it.next().toString() ).append( "\n" );
209 }
210 for ( Iterator it = toLines( "verify (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
211 {
212 sb.append( it.next().toString() ).append( "\n" );
213 }
214 for ( Iterator it = toLines( "Asks the translator to examine translated bytecode for references to classes, methods, or fields that cannot be found in the provided classpath.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
215 {
216 sb.append( it.next().toString() ).append( "\n" );
217 }
218 for ( Iterator it = toLines( "verifyClasspath", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
219 {
220 sb.append( it.next().toString() ).append( "\n" );
221 }
222 for ( Iterator it = toLines( "The classpath for the verification including rt.jar, jce.jar, jsse.jar (from JRE 1.4). The retrotranslator-runtime-n.n.n.jar, and backport-util-concurrent-n.n.jar are included by default, they are not required to be defined here.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
223 {
224 sb.append( it.next().toString() ).append( "\n" );
225 }
226 }
227
228 sb.append( "\n" );
229
230 sb.append( "retrotranslator:translate-project" ).append( "\n" );
231 for ( Iterator it = toLines( "Retrotranslates the artifact for the current project." ).iterator(); it.hasNext(); )
232 {
233 sb.append( it.next().toString() ).append( "\n" );
234 }
235 if ( detail )
236 {
237 sb.append( "\n" );
238
239 sb.append( repeat( " ", 2 ) );
240 sb.append( "Available parameters:" ).append( "\n" );
241
242 sb.append( "\n" );
243
244 for ( Iterator it = toLines( "advanced (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
245 {
246 sb.append( it.next().toString() ).append( "\n" );
247 }
248 for ( Iterator it = toLines( "Whether to use alternative implementations of Java 1.4 classes and methods for better Java 5 compatibility.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
249 {
250 sb.append( it.next().toString() ).append( "\n" );
251 }
252 for ( Iterator it = toLines( "attach (Default: 'true')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
253 {
254 sb.append( it.next().toString() ).append( "\n" );
255 }
256 for ( Iterator it = toLines( "Flag to enable/disable attaching retrotranslated artifacts.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
257 {
258 sb.append( it.next().toString() ).append( "\n" );
259 }
260 for ( Iterator it = toLines( "backport", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
261 {
262 sb.append( it.next().toString() ).append( "\n" );
263 }
264 for ( Iterator it = toLines( "Informs the translator about user-defined backport packages. Package names should be separated by semicolons.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
265 {
266 sb.append( it.next().toString() ).append( "\n" );
267 }
268 for ( Iterator it = toLines( "baseName", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
269 {
270 sb.append( it.next().toString() ).append( "\n" );
271 }
272 for ( Iterator it = toLines( "The base-name of the generated artifact.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
273 {
274 sb.append( it.next().toString() ).append( "\n" );
275 }
276 for ( Iterator it = toLines( "classifier (Default: 'jdk14')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
277 {
278 sb.append( it.next().toString() ).append( "\n" );
279 }
280 for ( Iterator it = toLines( "The classifier used when attaching the retrotranslated project artifact.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
281 {
282 sb.append( it.next().toString() ).append( "\n" );
283 }
284 for ( Iterator it = toLines( "destJar", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
285 {
286 sb.append( it.next().toString() ).append( "\n" );
287 }
288 for ( Iterator it = toLines( "No description available.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
289 {
290 sb.append( it.next().toString() ).append( "\n" );
291 }
292 for ( Iterator it = toLines( "embed", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
293 {
294 sb.append( it.next().toString() ).append( "\n" );
295 }
296 for ( Iterator it = toLines( "The package name for a private copy of retrotranslator-runtime-n.n.n.jar and backport-util-concurrent-n.n.jar to be put with translated classes.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
297 {
298 sb.append( it.next().toString() ).append( "\n" );
299 }
300 for ( Iterator it = toLines( "failonwarning (Default: 'true')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
301 {
302 sb.append( it.next().toString() ).append( "\n" );
303 }
304 for ( Iterator it = toLines( "Fails build when verification has failed.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
305 {
306 sb.append( it.next().toString() ).append( "\n" );
307 }
308 for ( Iterator it = toLines( "lazy (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
309 {
310 sb.append( it.next().toString() ).append( "\n" );
311 }
312 for ( Iterator it = toLines( "Asks the translator to only transform classes compiled with a target greater than the current one.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
313 {
314 sb.append( it.next().toString() ).append( "\n" );
315 }
316 for ( Iterator it = toLines( "outputDirectory", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
317 {
318 sb.append( it.next().toString() ).append( "\n" );
319 }
320 for ( Iterator it = toLines( "Where to put the translated artifact.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
321 {
322 sb.append( it.next().toString() ).append( "\n" );
323 }
324 for ( Iterator it = toLines( "replace", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
325 {
326 sb.append( it.next().toString() ).append( "\n" );
327 }
328 for ( Iterator it = toLines( "Replace the artifact with the retrotranslated artifact.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
329 {
330 sb.append( it.next().toString() ).append( "\n" );
331 }
332 for ( Iterator it = toLines( "retainapi (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
333 {
334 sb.append( it.next().toString() ).append( "\n" );
335 }
336 for ( Iterator it = toLines( "Asks the translator to modify classes for JVM 1.4 compatibility but keep use of Java 5 API.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
337 {
338 sb.append( it.next().toString() ).append( "\n" );
339 }
340 for ( Iterator it = toLines( "retainflags (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
341 {
342 sb.append( it.next().toString() ).append( "\n" );
343 }
344 for ( Iterator it = toLines( "Asks the translator to keep Java 5 specific access modifiers.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
345 {
346 sb.append( it.next().toString() ).append( "\n" );
347 }
348 for ( Iterator it = toLines( "srcmask (Default: '*.class')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
349 {
350 sb.append( it.next().toString() ).append( "\n" );
351 }
352 for ( Iterator it = toLines( "The wildcard pattern specifying files that should be translated (either bytecode or UTF-8 text), e.g. '*.class*.tld'. There are three special characters: '*?'.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
353 {
354 sb.append( it.next().toString() ).append( "\n" );
355 }
356 for ( Iterator it = toLines( "stripsign (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
357 {
358 sb.append( it.next().toString() ).append( "\n" );
359 }
360 for ( Iterator it = toLines( "Asks the translator to strip signature (generics) information.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
361 {
362 sb.append( it.next().toString() ).append( "\n" );
363 }
364 for ( Iterator it = toLines( "target (Default: '1.4')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
365 {
366 sb.append( it.next().toString() ).append( "\n" );
367 }
368 for ( Iterator it = toLines( "To make Java 6 classes compatible with Java 5 set this option to 1.5 and supply user-defined backport packages.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
369 {
370 sb.append( it.next().toString() ).append( "\n" );
371 }
372 for ( Iterator it = toLines( "verbose (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
373 {
374 sb.append( it.next().toString() ).append( "\n" );
375 }
376 for ( Iterator it = toLines( "Asks the translator for verbose output.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
377 {
378 sb.append( it.next().toString() ).append( "\n" );
379 }
380 for ( Iterator it = toLines( "verify (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
381 {
382 sb.append( it.next().toString() ).append( "\n" );
383 }
384 for ( Iterator it = toLines( "Asks the translator to examine translated bytecode for references to classes, methods, or fields that cannot be found in the provided classpath.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
385 {
386 sb.append( it.next().toString() ).append( "\n" );
387 }
388 for ( Iterator it = toLines( "verifyClasspath", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
389 {
390 sb.append( it.next().toString() ).append( "\n" );
391 }
392 for ( Iterator it = toLines( "The classpath for the verification including rt.jar, jce.jar, jsse.jar (from JRE 1.4). The retrotranslator-runtime-n.n.n.jar, and backport-util-concurrent-n.n.jar are included by default, they are not required to be defined here.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
393 {
394 sb.append( it.next().toString() ).append( "\n" );
395 }
396 }
397
398 sb.append( "\n" );
399
400 sb.append( "retrotranslator:translate-war" ).append( "\n" );
401 for ( Iterator it = toLines( "Retrotranslates the classes in the war, as well as all jars in WEB-INF/lib. Creates a new war with the specified classifier with these retrotranslations." ).iterator(); it.hasNext(); )
402 {
403 sb.append( it.next().toString() ).append( "\n" );
404 }
405 if ( detail )
406 {
407 sb.append( "\n" );
408
409 sb.append( repeat( " ", 2 ) );
410 sb.append( "Available parameters:" ).append( "\n" );
411
412 sb.append( "\n" );
413
414 for ( Iterator it = toLines( "advanced (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
415 {
416 sb.append( it.next().toString() ).append( "\n" );
417 }
418 for ( Iterator it = toLines( "Whether to use alternative implementations of Java 1.4 classes and methods for better Java 5 compatibility.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
419 {
420 sb.append( it.next().toString() ).append( "\n" );
421 }
422 for ( Iterator it = toLines( "attach (Default: 'true')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
423 {
424 sb.append( it.next().toString() ).append( "\n" );
425 }
426 for ( Iterator it = toLines( "Flag to enable/disable attaching retrotranslated artifacts.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
427 {
428 sb.append( it.next().toString() ).append( "\n" );
429 }
430 for ( Iterator it = toLines( "backport", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
431 {
432 sb.append( it.next().toString() ).append( "\n" );
433 }
434 for ( Iterator it = toLines( "Informs the translator about user-defined backport packages. Package names should be separated by semicolons.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
435 {
436 sb.append( it.next().toString() ).append( "\n" );
437 }
438 for ( Iterator it = toLines( "baseName", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
439 {
440 sb.append( it.next().toString() ).append( "\n" );
441 }
442 for ( Iterator it = toLines( "The base-name of the generated artifact.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
443 {
444 sb.append( it.next().toString() ).append( "\n" );
445 }
446 for ( Iterator it = toLines( "classifier (Default: 'jdk14')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
447 {
448 sb.append( it.next().toString() ).append( "\n" );
449 }
450 for ( Iterator it = toLines( "The classifier used when attaching the retrotranslated project artifact.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
451 {
452 sb.append( it.next().toString() ).append( "\n" );
453 }
454 for ( Iterator it = toLines( "embed", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
455 {
456 sb.append( it.next().toString() ).append( "\n" );
457 }
458 for ( Iterator it = toLines( "The package name for a private copy of retrotranslator-runtime-n.n.n.jar and backport-util-concurrent-n.n.jar to be put with translated classes.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
459 {
460 sb.append( it.next().toString() ).append( "\n" );
461 }
462 for ( Iterator it = toLines( "failonwarning (Default: 'true')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
463 {
464 sb.append( it.next().toString() ).append( "\n" );
465 }
466 for ( Iterator it = toLines( "Fails build when verification has failed.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
467 {
468 sb.append( it.next().toString() ).append( "\n" );
469 }
470 for ( Iterator it = toLines( "jarfileset", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
471 {
472 sb.append( it.next().toString() ).append( "\n" );
473 }
474 for ( Iterator it = toLines( "A set of jar files to include in the translation. Note: any basedir will be ignored and reset to WEB-INF/lib", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
475 {
476 sb.append( it.next().toString() ).append( "\n" );
477 }
478 for ( Iterator it = toLines( "lazy (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
479 {
480 sb.append( it.next().toString() ).append( "\n" );
481 }
482 for ( Iterator it = toLines( "Asks the translator to only transform classes compiled with a target greater than the current one.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
483 {
484 sb.append( it.next().toString() ).append( "\n" );
485 }
486 for ( Iterator it = toLines( "outputDirectory", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
487 {
488 sb.append( it.next().toString() ).append( "\n" );
489 }
490 for ( Iterator it = toLines( "Where to put the translated artifact.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
491 {
492 sb.append( it.next().toString() ).append( "\n" );
493 }
494 for ( Iterator it = toLines( "retainapi (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
495 {
496 sb.append( it.next().toString() ).append( "\n" );
497 }
498 for ( Iterator it = toLines( "Asks the translator to modify classes for JVM 1.4 compatibility but keep use of Java 5 API.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
499 {
500 sb.append( it.next().toString() ).append( "\n" );
501 }
502 for ( Iterator it = toLines( "retainflags (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
503 {
504 sb.append( it.next().toString() ).append( "\n" );
505 }
506 for ( Iterator it = toLines( "Asks the translator to keep Java 5 specific access modifiers.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
507 {
508 sb.append( it.next().toString() ).append( "\n" );
509 }
510 for ( Iterator it = toLines( "srcmask (Default: '*.class')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
511 {
512 sb.append( it.next().toString() ).append( "\n" );
513 }
514 for ( Iterator it = toLines( "The wildcard pattern specifying files that should be translated (either bytecode or UTF-8 text), e.g. '*.class*.tld'. There are three special characters: '*?'.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
515 {
516 sb.append( it.next().toString() ).append( "\n" );
517 }
518 for ( Iterator it = toLines( "stripsign (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
519 {
520 sb.append( it.next().toString() ).append( "\n" );
521 }
522 for ( Iterator it = toLines( "Asks the translator to strip signature (generics) information.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
523 {
524 sb.append( it.next().toString() ).append( "\n" );
525 }
526 for ( Iterator it = toLines( "target (Default: '1.4')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
527 {
528 sb.append( it.next().toString() ).append( "\n" );
529 }
530 for ( Iterator it = toLines( "To make Java 6 classes compatible with Java 5 set this option to 1.5 and supply user-defined backport packages.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
531 {
532 sb.append( it.next().toString() ).append( "\n" );
533 }
534 for ( Iterator it = toLines( "verbose (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
535 {
536 sb.append( it.next().toString() ).append( "\n" );
537 }
538 for ( Iterator it = toLines( "Asks the translator for verbose output.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
539 {
540 sb.append( it.next().toString() ).append( "\n" );
541 }
542 for ( Iterator it = toLines( "verify (Default: 'false')", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
543 {
544 sb.append( it.next().toString() ).append( "\n" );
545 }
546 for ( Iterator it = toLines( "Asks the translator to examine translated bytecode for references to classes, methods, or fields that cannot be found in the provided classpath.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
547 {
548 sb.append( it.next().toString() ).append( "\n" );
549 }
550 for ( Iterator it = toLines( "verifyClasspath", repeat( " ", 4 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
551 {
552 sb.append( it.next().toString() ).append( "\n" );
553 }
554 for ( Iterator it = toLines( "The classpath for the verification including rt.jar, jce.jar, jsse.jar (from JRE 1.4). The retrotranslator-runtime-n.n.n.jar, and backport-util-concurrent-n.n.jar are included by default, they are not required to be defined here.", repeat( " ", 6 ), DEFAULT_WIDTH ).iterator(); it.hasNext(); )
555 {
556 sb.append( it.next().toString() ).append( "\n" );
557 }
558 }
559
560 sb.append( "\n" );
561
562 sb.append( "retrotranslator:help" ).append( "\n" );
563 for ( Iterator it = toLines( "Display help information on 'org.codehaus.mojo:retrotranslator-maven-plugin' plugin. Call 'mvn retrotranslator:help -Ddetail=true' to display all details." ).iterator(); it.hasNext(); )
564 {
565 sb.append( it.next().toString() ).append( "\n" );
566 }
567
568 if ( getLog().isInfoEnabled() )
569 {
570 getLog().info( sb.toString() );
571 }
572 }
573
574
575
576
577
578
579
580
581
582
583 private static String repeat( String str, int repeat )
584 {
585 StringBuffer buffer = new StringBuffer( repeat * str.length() );
586
587 for ( int i = 0; i < repeat; i++ )
588 {
589 buffer.append( str );
590 }
591
592 return buffer.toString();
593 }
594
595
596
597
598
599
600
601
602
603 private static List toLines( String str )
604 {
605 return toLines( str, DEFAULT_INDENT, DEFAULT_WIDTH );
606 }
607
608
609
610
611
612
613
614
615
616
617
618
619 private static List toLines( String str, String indent, int size )
620 {
621 List sentences = new ArrayList();
622
623 if ( indent == null )
624 {
625 indent = "";
626 }
627
628 if ( size < 0 )
629 {
630 throw new IllegalArgumentException( "size should be positive" );
631 }
632
633 StringBuffer tmp = new StringBuffer( indent );
634 StringTokenizer tokenizer = new StringTokenizer( str, " " );
635 while ( tokenizer.hasMoreTokens() )
636 {
637 String word = tokenizer.nextToken();
638
639 if ( tmp.length() + word.length() + 1 < size )
640 {
641 tmp.append( word ).append( " " );
642 }
643 else
644 {
645 sentences.add( tmp.toString() );
646 tmp = new StringBuffer( indent );
647 tmp.append( word ).append( " " );
648 }
649 }
650
651 if ( tmp.toString().length() > 0 )
652 {
653 sentences.add( tmp.toString() );
654 }
655
656 return sentences;
657 }
658 }