1 package org.eclipse.jetty.start;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 public class CommandLineBuilder
7 {
8 private List<String> args;
9
10 public CommandLineBuilder(String bin)
11 {
12 args = new ArrayList<String>();
13 args.add(bin);
14 }
15
16
17
18
19
20
21
22
23
24 public void addArg(String arg)
25 {
26 args.add(quote(arg));
27 }
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 public void addEqualsArg(String name, String value)
48 {
49 if (value != null && value.length() > 0)
50 {
51 args.add(quote(name + "=" + value));
52 }
53 else
54 {
55 args.add(quote(name));
56 }
57 }
58
59
60
61
62
63
64
65
66
67 public void addRawArg(String arg)
68 {
69 args.add(arg);
70 }
71
72 public List<String> getArgs()
73 {
74 return args;
75 }
76
77
78
79
80
81
82
83 public static String quote(String arg)
84 {
85 boolean needsQuoting = arg.indexOf(' ') >= 0 || arg.indexOf('"') >= 0;
86 if (!needsQuoting)
87 {
88 return arg;
89 }
90 StringBuilder buf = new StringBuilder();
91
92 boolean escaped = false;
93 for (char c : arg.toCharArray())
94 {
95 if (!escaped && ((c == '"') || (c == ' ')))
96 {
97 buf.append("\\");
98 }
99 escaped = (c == '\\');
100 buf.append(c);
101 }
102
103 return buf.toString();
104 }
105
106 @Override
107 public String toString()
108 {
109 StringBuilder buf = new StringBuilder();
110
111 boolean delim = false;
112 for (String arg : args)
113 {
114 if (delim)
115 {
116 buf.append(' ');
117 }
118 buf.append(arg);
119 delim = true;
120 }
121
122 return buf.toString();
123 }
124 }