Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
LaunchCommand |
|
| 1.0;1 |
1 | /* | |
2 | * Licensed to the Apache Software Foundation (ASF) under one or more | |
3 | * contributor license agreements. See the NOTICE file distributed with | |
4 | * this work for additional information regarding copyright ownership. | |
5 | * The ASF licenses this file to You under the Apache License, Version 2.0 | |
6 | * (the "License"); you may not use this file except in compliance with | |
7 | * the License. You may obtain a copy of the License at | |
8 | * | |
9 | * http://www.apache.org/licenses/LICENSE-2.0 | |
10 | * | |
11 | * Unless required by applicable law or agreed to in writing, software | |
12 | * distributed under the License is distributed on an "AS IS" BASIS, | |
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 | * See the License for the specific language governing permissions and | |
15 | * limitations under the License. | |
16 | */ | |
17 | ||
18 | package org.apache.commons.launcher; | |
19 | ||
20 | import java.io.File; | |
21 | import java.util.ArrayList; | |
22 | import java.util.HashMap; | |
23 | ||
24 | /** | |
25 | * A class that represents the holds the various argument types that are used | |
26 | * in a Java command. In addition, it holds many of the flags that are used | |
27 | * by the {@link LaunchTask} class when executing a JVM process. | |
28 | * | |
29 | * @author Patrick Luby | |
30 | */ | |
31 | 0 | public class LaunchCommand { |
32 | ||
33 | //------------------------------------------------------------------ Fields | |
34 | ||
35 | /** | |
36 | * Cached appendOutput flag. | |
37 | */ | |
38 | 0 | private boolean appendOutput = false; |
39 | ||
40 | /** | |
41 | * Cached classpath. | |
42 | */ | |
43 | 0 | private String classpath = null; |
44 | ||
45 | /** | |
46 | * Cached debug flag. | |
47 | */ | |
48 | 0 | private boolean debug = false; |
49 | ||
50 | /** | |
51 | * Cached displayMinimizedWindow flag. | |
52 | */ | |
53 | 0 | private boolean displayMinimizedWindow = false; |
54 | ||
55 | /** | |
56 | * Cached disposeMinimizedWindow flag. | |
57 | */ | |
58 | 0 | private boolean disposeMinimizedWindow = true; |
59 | ||
60 | /** | |
61 | * Cached failOnError flag. | |
62 | */ | |
63 | 0 | private boolean failOnError = true; |
64 | ||
65 | /** | |
66 | * Cached main class name. | |
67 | */ | |
68 | 0 | private String mainClassName = null; |
69 | ||
70 | /** | |
71 | * Cached minimizedWindowIcon. | |
72 | */ | |
73 | 0 | private File minimizedWindowIcon = null; |
74 | ||
75 | /** | |
76 | * Cached minimizedWindowTitle. | |
77 | */ | |
78 | 0 | private String minimizedWindowTitle = null; |
79 | ||
80 | /** | |
81 | * Cached output file. | |
82 | */ | |
83 | 0 | private File outputFile = null; |
84 | ||
85 | /** | |
86 | * Cached print flag. | |
87 | */ | |
88 | 0 | private boolean print = false; |
89 | ||
90 | /** | |
91 | * Cached requireTools flag. | |
92 | */ | |
93 | 0 | private boolean requireTools = false; |
94 | ||
95 | /** | |
96 | * Cached redirect flag. | |
97 | */ | |
98 | 0 | private boolean redirect = false; |
99 | ||
100 | /** | |
101 | * Cached arg elements | |
102 | */ | |
103 | 0 | private ArrayList args = null; |
104 | ||
105 | /** | |
106 | * Cached jvmarg elements | |
107 | */ | |
108 | 0 | private ArrayList jvmArgs = null; |
109 | ||
110 | /** | |
111 | * Cached sysproperty elements | |
112 | */ | |
113 | 0 | private HashMap sysProperties = null; |
114 | ||
115 | /** | |
116 | * Cached useSystemIn flag. | |
117 | */ | |
118 | 0 | private boolean useSystemIn = true; |
119 | ||
120 | /** | |
121 | * Cached waitForChild flag. | |
122 | */ | |
123 | 0 | private boolean waitForChild = true; |
124 | ||
125 | //----------------------------------------------------------------- Methods | |
126 | ||
127 | /** | |
128 | * Get the class name. | |
129 | * | |
130 | * @return the class to execute <code>main(String[])</code> | |
131 | */ | |
132 | public String getClassname() { | |
133 | ||
134 | 0 | return mainClassName; |
135 | ||
136 | } | |
137 | ||
138 | /** | |
139 | * Get the classpath. | |
140 | * | |
141 | * @return the classpath | |
142 | */ | |
143 | public String getClasspath() { | |
144 | ||
145 | 0 | return classpath; |
146 | ||
147 | } | |
148 | ||
149 | /** | |
150 | * Get the debug flag. | |
151 | * | |
152 | * @return the debug flag | |
153 | */ | |
154 | public boolean getDebug() { | |
155 | ||
156 | 0 | return debug; |
157 | ||
158 | } | |
159 | ||
160 | /** | |
161 | * Get the displayMinimizedWindow flag. | |
162 | * | |
163 | * @return the displayMinimizedWindow flag | |
164 | */ | |
165 | public boolean getDisplayminimizedwindow() { | |
166 | ||
167 | 0 | return displayMinimizedWindow; |
168 | ||
169 | } | |
170 | ||
171 | /** | |
172 | * Get the disposeMinimizedWindow flag. | |
173 | * | |
174 | * @return the disposeMinimizedWindow flag | |
175 | */ | |
176 | public boolean getDisposeminimizedwindow() { | |
177 | ||
178 | 0 | return disposeMinimizedWindow; |
179 | ||
180 | } | |
181 | ||
182 | /** | |
183 | * Get the failOnError flag. | |
184 | * | |
185 | * @return the failOnError flag | |
186 | */ | |
187 | public boolean getFailonerror() { | |
188 | ||
189 | 0 | return failOnError; |
190 | ||
191 | } | |
192 | ||
193 | /** | |
194 | * Get the title for the minimized window that will be displayed in the | |
195 | * Windows taskbar. | |
196 | * | |
197 | * @return the title to set for any minimized window that is displayed | |
198 | * in the Windows taskbar | |
199 | */ | |
200 | public String getMinimizedwindowtitle() { | |
201 | ||
202 | 0 | return minimizedWindowTitle; |
203 | ||
204 | } | |
205 | ||
206 | /** | |
207 | * Get the icon file for the minimized window that will be displayed in the | |
208 | * Windows taskbar. | |
209 | * | |
210 | * @return the icon file to use for any minimized window that is displayed | |
211 | * in the Windows taskbar | |
212 | */ | |
213 | public File getMinimizedwindowicon() { | |
214 | ||
215 | 0 | return minimizedWindowIcon; |
216 | ||
217 | } | |
218 | ||
219 | /** | |
220 | * Get the file that the child JVM's System.out and System.err will be | |
221 | * redirected to. | |
222 | * | |
223 | * @return the File to redirect System.out and System.err to | |
224 | */ | |
225 | public File getOutput() { | |
226 | ||
227 | 0 | return outputFile; |
228 | ||
229 | } | |
230 | ||
231 | /** | |
232 | * Get the appendOutput flag. | |
233 | * | |
234 | * @return the appendOutput flag | |
235 | */ | |
236 | public boolean getAppendoutput() { | |
237 | ||
238 | 0 | return appendOutput; |
239 | ||
240 | } | |
241 | ||
242 | /** | |
243 | * Get the redirect flag. | |
244 | * | |
245 | * @return the redirect flag | |
246 | */ | |
247 | public boolean getRedirectoutput() { | |
248 | ||
249 | 0 | return redirect; |
250 | ||
251 | } | |
252 | ||
253 | /** | |
254 | * Get the list of nested arg elements. | |
255 | * | |
256 | * @return the list of {@link String} objects | |
257 | */ | |
258 | public ArrayList getArgs() { | |
259 | ||
260 | 0 | return args; |
261 | ||
262 | } | |
263 | ||
264 | /** | |
265 | * Get the list of nested jvmarg elements. | |
266 | * | |
267 | * @return the list of {@link String} objects | |
268 | */ | |
269 | public ArrayList getJvmargs() { | |
270 | ||
271 | 0 | return jvmArgs; |
272 | ||
273 | } | |
274 | ||
275 | /** | |
276 | * Get the print flag. | |
277 | * | |
278 | * @return the print flag | |
279 | */ | |
280 | public boolean getPrint() { | |
281 | ||
282 | 0 | return print; |
283 | ||
284 | } | |
285 | ||
286 | /** | |
287 | * Get the requireTools flag. | |
288 | * | |
289 | * @return the requireTools flag | |
290 | */ | |
291 | public boolean getRequiretools() { | |
292 | ||
293 | 0 | return requireTools; |
294 | ||
295 | } | |
296 | ||
297 | /** | |
298 | * Get the list of nested sysproperty elements. | |
299 | * | |
300 | * @return the {@link String} objects | |
301 | */ | |
302 | public HashMap getSysproperties() { | |
303 | ||
304 | 0 | return sysProperties; |
305 | ||
306 | } | |
307 | ||
308 | /** | |
309 | * Get the useSystemIn flag. | |
310 | * | |
311 | * @return the useSystemIn flag | |
312 | */ | |
313 | public boolean getUsesystemin() { | |
314 | ||
315 | 0 | return useSystemIn; |
316 | ||
317 | } | |
318 | ||
319 | /** | |
320 | * Get the waitForChild flag. | |
321 | * | |
322 | * @return the waitForChild flag | |
323 | */ | |
324 | public boolean getWaitforchild() { | |
325 | ||
326 | 0 | return waitForChild; |
327 | ||
328 | } | |
329 | ||
330 | /** | |
331 | * Set the print flag. | |
332 | * | |
333 | * @param print the print flag | |
334 | */ | |
335 | public void setPrint(boolean print) { | |
336 | ||
337 | 0 | this.print = print; |
338 | ||
339 | 0 | } |
340 | ||
341 | /** | |
342 | * Set the requireTools flag. | |
343 | * | |
344 | * @param requireTools the requireTools flag | |
345 | */ | |
346 | public void setRequiretools(boolean requireTools) { | |
347 | ||
348 | 0 | this.requireTools = requireTools; |
349 | ||
350 | 0 | } |
351 | ||
352 | /** | |
353 | * Set the useSystemIn flag. Setting this flag to false will cause this | |
354 | * task to not read System.in. This will cause the child JVM to never | |
355 | * receive any bytes when it reads System.in. Setting this flag to false | |
356 | * is useful in some Unix environments where processes cannot be put in | |
357 | * the background when they read System.in. | |
358 | * | |
359 | * @param useSystemIn the useSystemIn flag | |
360 | */ | |
361 | public void setUsesystemin(boolean useSystemIn) { | |
362 | ||
363 | 0 | this.useSystemIn = useSystemIn; |
364 | ||
365 | 0 | } |
366 | ||
367 | /** | |
368 | * Set the waitForChild flag. Setting this flag to true will cause this | |
369 | * task to wait for the child JVM to finish executing before the task | |
370 | * completes. Setting this flag to false will cause this task to complete | |
371 | * immediately after it starts the execution of the child JVM. Setting it | |
372 | * false emulates the "&" background operator in most Unix shells and is | |
373 | * most of set to false when launching server or GUI applications. | |
374 | * | |
375 | * @param waitForChild the waitForChild flag | |
376 | */ | |
377 | public void setWaitforchild(boolean waitForChild) { | |
378 | ||
379 | 0 | this.waitForChild = waitForChild; |
380 | ||
381 | 0 | } |
382 | ||
383 | /** | |
384 | * Set the class name. | |
385 | * | |
386 | * @param mainClassName the class to execute <code>main(String[])</code> | |
387 | */ | |
388 | public void setClassname(String mainClassName) { | |
389 | ||
390 | 0 | this.mainClassName = mainClassName; |
391 | ||
392 | 0 | } |
393 | ||
394 | /** | |
395 | * Set the classpath. | |
396 | * | |
397 | * @param classpath the classpath | |
398 | */ | |
399 | public void setClasspath(String classpath) { | |
400 | ||
401 | 0 | this.classpath = classpath; |
402 | ||
403 | 0 | } |
404 | ||
405 | /** | |
406 | * Set the debug flag. | |
407 | * | |
408 | * @param debug the debug flag | |
409 | */ | |
410 | public void setDebug(boolean debug) { | |
411 | ||
412 | 0 | this.debug = debug; |
413 | ||
414 | 0 | } |
415 | ||
416 | /** | |
417 | * Set the displayMinimizedWindow flag. Note that this flag has no effect | |
418 | * on non-Windows platforms. On Windows platform, setting this flag to true | |
419 | * will cause a minimized window to be displayed in the Windows task bar | |
420 | * while the child process is executing. This flag is usually set to true | |
421 | * for server applications that also have their "waitForChild" attribute | |
422 | * set to false via the {@link #setWaitforchild(boolean)} method. | |
423 | * | |
424 | * @param displayMinimizedWindow true if a minimized window should be | |
425 | * displayed in the Windows task bar while the child process is executing | |
426 | */ | |
427 | public void setDisplayminimizedwindow(boolean displayMinimizedWindow) { | |
428 | ||
429 | 0 | this.displayMinimizedWindow = displayMinimizedWindow; |
430 | ||
431 | 0 | } |
432 | ||
433 | /** | |
434 | * Set the disposeMinimizedWindow flag. Note that this flag has no effect | |
435 | * on non-Windows platforms. On Windows platform, setting this flag to true | |
436 | * will cause any minimized window that is display by setting the | |
437 | * "displayMinimizedWindow" attribute to true via the | |
438 | * {@link #setDisplayminimizedwindow(boolean)} to be automatically | |
439 | * disposed of when the child JVM's <code>main(String[])</code> returns. | |
440 | * This flag is normally used for applications that don't explicitly call | |
441 | * {@link System#exit(int)}. If an application does not explicitly call | |
442 | * {@link System#exit(int)}, an minimized windows need to be disposed of | |
443 | * for the child JVM to exit. | |
444 | * | |
445 | * @param disposeMinimizedWindow true if a minimized window in the Windows | |
446 | * taskbar should be automatically disposed of after the child JVM's | |
447 | * <code>main(String[])</code> returns | |
448 | */ | |
449 | public void setDisposeminimizedwindow(boolean disposeMinimizedWindow) { | |
450 | ||
451 | 0 | this.disposeMinimizedWindow = disposeMinimizedWindow; |
452 | ||
453 | 0 | } |
454 | ||
455 | /** | |
456 | * Set the failOnError flag. | |
457 | * | |
458 | * @param failOnError the failOnError flag | |
459 | */ | |
460 | public void setFailonerror(boolean failOnError) { | |
461 | ||
462 | 0 | this.failOnError = failOnError; |
463 | ||
464 | 0 | } |
465 | ||
466 | /** | |
467 | * Set the title for the minimized window that will be displayed in the | |
468 | * Windows taskbar. Note that this property has no effect on non-Windows | |
469 | * platforms. | |
470 | * | |
471 | * @param minimizedWindowTitle the title to set for any minimized window | |
472 | * that is displayed in the Windows taskbar | |
473 | */ | |
474 | public void setMinimizedwindowtitle(String minimizedWindowTitle) { | |
475 | ||
476 | 0 | this.minimizedWindowTitle = minimizedWindowTitle; |
477 | ||
478 | 0 | } |
479 | ||
480 | /** | |
481 | * Set the icon file for the minimized window that will be displayed in the | |
482 | * Windows taskbar. Note that this property has no effect on non-Windows | |
483 | * platforms. | |
484 | * | |
485 | * @param minimizedWindowIcon the icon file to use for any minimized window | |
486 | * that is displayed in the Windows taskbar | |
487 | */ | |
488 | public void setMinimizedwindowicon(File minimizedWindowIcon) { | |
489 | ||
490 | 0 | this.minimizedWindowIcon = minimizedWindowIcon; |
491 | ||
492 | 0 | } |
493 | ||
494 | /** | |
495 | * Set the file that the child JVM's System.out and System.err will be | |
496 | * redirected to. Output will only be redirected if the redirect flag | |
497 | * is set to true via the {@link #setRedirectoutput(boolean)} method. | |
498 | * | |
499 | * @param outputFile a File to redirect System.out and System.err to | |
500 | */ | |
501 | public void setOutput(File outputFile) { | |
502 | ||
503 | 0 | this.outputFile = outputFile; |
504 | ||
505 | 0 | } |
506 | ||
507 | /** | |
508 | * Set the appendOutput flag. Setting this flag to true will cause the child | |
509 | * JVM to append System.out and System.err to the file specified by the | |
510 | * {@link #setOutput(File)} method. Setting this flag to false will cause | |
511 | * the child to overwrite the file. | |
512 | * | |
513 | * @param appendOutput true if output should be appended to the output file | |
514 | */ | |
515 | public void setAppendoutput(boolean appendOutput) { | |
516 | ||
517 | 0 | this.appendOutput = appendOutput; |
518 | ||
519 | 0 | } |
520 | ||
521 | /** | |
522 | * Set the list of nested arg elements. | |
523 | * | |
524 | * @param args a list of {@link String} objects | |
525 | */ | |
526 | public void setArgs(ArrayList args) { | |
527 | ||
528 | 0 | this.args = args; |
529 | ||
530 | 0 | } |
531 | ||
532 | /** | |
533 | * Set the list of nested jvmarg elements. | |
534 | * | |
535 | * @param jvmArgs a list of {@link String} objects | |
536 | */ | |
537 | public void setJvmargs(ArrayList jvmArgs) { | |
538 | ||
539 | 0 | this.jvmArgs = jvmArgs; |
540 | ||
541 | 0 | } |
542 | ||
543 | /** | |
544 | * Set the list of nested sysproperty elements. | |
545 | * | |
546 | * @param sysProperties a map of {@link String} objects | |
547 | */ | |
548 | public void setSysproperties(HashMap sysProperties) { | |
549 | ||
550 | 0 | this.sysProperties = sysProperties; |
551 | ||
552 | 0 | } |
553 | ||
554 | /** | |
555 | * Set the redirect flag. Setting this flag to true will cause the child | |
556 | * JVM's System.out and System.err to be redirected to file set using the | |
557 | * {@link #setOutput(File)} method. Setting this flag to false will | |
558 | * cause no redirection. | |
559 | * | |
560 | * @param redirect true if System.out and System.err should be redirected | |
561 | */ | |
562 | public void setRedirectoutput(boolean redirect) { | |
563 | ||
564 | 0 | this.redirect = redirect; |
565 | ||
566 | 0 | } |
567 | ||
568 | } |