1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package jgroup.relacs.config;
20
21 import java.io.Serializable;
22 import java.util.Map;
23
24
25
26
27
28
29
30 public class ClassData
31 implements Serializable
32 {
33
34 private static final long serialVersionUID = -504244408760314856L;
35
36
37
38
39
40
41 private String className;
42
43
44 private String[] classArgs;
45
46
47
48
49
50 private Map<String,String> properties = null;
51
52
53 private transient String shortClassName;
54
55
56
57
58
59
60 public ClassData(String className, String[] classArgs)
61
62 {
63
64 this.className = className;
65 this.classArgs = classArgs;
66 }
67
68
69
70
71
72
73 public Class getClassObject()
74 {
75 Class cl = null;
76 try {
77 cl = Class.forName(className);
78 } catch (ClassNotFoundException cnf) {
79
80
81
82
83
84 }
85 return cl;
86 }
87
88 public String getName()
89 {
90 return className;
91 }
92
93 public String getShortName()
94 {
95 if (shortClassName == null) {
96 shortClassName = className.substring(className.lastIndexOf('.') + 1);
97 }
98 return shortClassName;
99 }
100
101 public String[] getArgs()
102 {
103 return classArgs;
104 }
105
106 public String getArgString()
107 {
108 StringBuilder buf = new StringBuilder();
109 for (int i = 0; i < classArgs.length; i++) {
110 buf.append((i != 0) ? " " : "");
111 buf.append(classArgs[i]);
112 }
113 return buf.toString();
114 }
115
116 public void setProperties(Map<String,String> properties)
117 {
118 this.properties = properties;
119 }
120
121 public String getCommand(String jvmCmd, String appStarter)
122 {
123 StringBuilder buf = new StringBuilder(jvmCmd);
124 buf.append(" -Djgroup.log.app=");
125 buf.append(getShortName());
126 if (properties != null) {
127 for (Map.Entry<String,String> entry : properties.entrySet()) {
128 buf.append(" -D");
129 buf.append(entry.getKey());
130 buf.append("=");
131 buf.append(entry.getValue());
132 }
133 }
134 buf.append(" ");
135 buf.append(appStarter);
136 buf.append(" ");
137 buf.append(className);
138 buf.append(" ");
139 buf.append(getArgString());
140 return buf.toString();
141 }
142
143
144
145
146
147
148
149
150 public String toString()
151 {
152 StringBuilder buf = new StringBuilder();
153 buf.append("[");
154 buf.append(className);
155 if (classArgs.length > 0) {
156 buf.append(", ");
157 buf.append(getArgString());
158 }
159 buf.append("]");
160 return buf.toString();
161 }
162
163
164
165
166
167
168 public int hashCode()
169 {
170 int hash = className.hashCode();
171 for (int i = 0; i < classArgs.length; i++)
172 hash ^= classArgs[i].hashCode();
173 return hash;
174 }
175
176
177
178
179
180
181
182 public boolean equals(Object obj)
183 {
184 if (!(obj instanceof ClassData))
185 return false;
186 ClassData cd = (ClassData) obj;
187 if (!(className.equals(cd.className)) || classArgs.length != cd.classArgs.length) {
188 return false;
189 }
190 boolean eq = true;
191 for (int i = 0; eq && i < classArgs.length; i++) {
192 eq &= classArgs.equals(cd.classArgs);
193 }
194 return eq;
195 }
196
197 }