1 package org.apache.maven.scm;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.io.Serializable;
24 import java.util.Date;
25 import java.util.HashMap;
26 import java.util.Map;
27
28
29
30
31
32
33 public class CommandParameters
34 implements Serializable
35 {
36 private static final long serialVersionUID = -7346070735958137283L;
37
38 private Map<String, Object> parameters = new HashMap<String, Object>();
39
40
41
42
43
44
45
46
47
48
49
50
51 public String getString( CommandParameter parameter )
52 throws ScmException
53 {
54 Object object = getObject( String.class, parameter );
55
56 return object.toString();
57 }
58
59
60
61
62
63
64
65
66
67 public String getString( CommandParameter parameter, String defaultValue )
68 throws ScmException
69 {
70 Object object = getObject( String.class, parameter, null );
71
72 if ( object == null )
73 {
74 return defaultValue;
75 }
76
77 return object.toString();
78 }
79
80
81
82
83
84
85
86
87 public void setString( CommandParameter parameter, String value )
88 throws ScmException
89 {
90 setObject( parameter, value );
91 }
92
93
94
95
96
97
98
99
100
101
102
103
104 public int getInt( CommandParameter parameter )
105 throws ScmException
106 {
107 return ( (Integer) getObject( Integer.class, parameter ) ).intValue();
108 }
109
110
111
112
113
114
115
116
117
118 public int getInt( CommandParameter parameter, int defaultValue )
119 throws ScmException
120 {
121 Integer value = ( (Integer) getObject( Integer.class, parameter, null ) );
122
123 if ( value == null )
124 {
125 return defaultValue;
126 }
127
128 return value.intValue();
129 }
130
131
132
133
134
135
136
137
138 public void setInt( CommandParameter parameter, int value )
139 throws ScmException
140 {
141 setObject( parameter, Integer.valueOf( value ) );
142 }
143
144
145
146
147
148
149
150
151
152
153
154
155 public Date getDate( CommandParameter parameter )
156 throws ScmException
157 {
158 return (Date) getObject( Date.class, parameter );
159 }
160
161
162
163
164
165
166
167
168
169 public Date getDate( CommandParameter parameter, Date defaultValue )
170 throws ScmException
171 {
172 return (Date) getObject( Date.class, parameter, defaultValue );
173 }
174
175
176
177
178
179
180
181
182 public void setDate( CommandParameter parameter, Date date )
183 throws ScmException
184 {
185 setObject( parameter, date );
186 }
187
188
189
190
191
192
193
194
195
196
197
198
199 public boolean getBoolean( CommandParameter parameter )
200 throws ScmException
201 {
202 return Boolean.valueOf( getString( parameter ) ).booleanValue();
203 }
204
205
206
207
208
209
210
211
212
213 public boolean getBoolean( CommandParameter parameter, boolean defaultValue )
214 throws ScmException
215 {
216 return Boolean.valueOf( getString( parameter, Boolean.toString( defaultValue ) ) ).booleanValue();
217 }
218
219
220
221
222
223
224
225
226
227
228
229
230 public ScmVersion getScmVersion( CommandParameter parameter )
231 throws ScmException
232 {
233 return (ScmVersion) getObject( ScmVersion.class, parameter );
234 }
235
236
237
238
239
240
241
242
243
244 public ScmVersion getScmVersion( CommandParameter parameter, ScmVersion defaultValue )
245 throws ScmException
246 {
247 return (ScmVersion) getObject( ScmVersion.class, parameter, defaultValue );
248 }
249
250
251
252
253
254
255
256
257 public void setScmVersion( CommandParameter parameter, ScmVersion scmVersion )
258 throws ScmException
259 {
260 setObject( parameter, scmVersion );
261 }
262
263
264
265
266
267
268
269
270
271
272 public File[] getFileArray( CommandParameter parameter )
273 throws ScmException
274 {
275 return (File[]) getObject( File[].class, parameter );
276 }
277
278
279
280
281
282
283
284 public File[] getFileArray( CommandParameter parameter, File[] defaultValue )
285 throws ScmException
286 {
287 return (File[]) getObject( File[].class, parameter, defaultValue );
288 }
289
290
291 public ScmTagParameters getScmTagParameters( CommandParameter parameter )
292 throws ScmException
293 {
294 return (ScmTagParameters) getObject( ScmTagParameters.class, parameter, new ScmTagParameters() );
295 }
296
297 public void setScmTagParameters( CommandParameter parameter, ScmTagParameters scmTagParameters )
298 throws ScmException
299 {
300 setObject( parameter, scmTagParameters );
301 }
302
303 public void setScmBranchParameters( CommandParameter parameter, ScmBranchParameters scmBranchParameters )
304 throws ScmException
305 {
306 setObject( parameter, scmBranchParameters );
307 }
308
309 public ScmBranchParameters getScmBranchParameters( CommandParameter parameter )
310 throws ScmException
311 {
312 return (ScmBranchParameters) getObject( ScmBranchParameters.class, parameter, new ScmBranchParameters() );
313 }
314
315
316
317
318
319
320
321
322
323
324
325
326
327 private Object getObject( Class<?> clazz, CommandParameter parameter )
328 throws ScmException
329 {
330 Object object = getObject( clazz, parameter, null );
331
332 if ( object == null )
333 {
334 throw new ScmException( "Missing parameter: '" + parameter.getName() + "'." );
335 }
336
337 return object;
338 }
339
340
341
342
343
344
345
346
347
348
349 private Object getObject( Class<?> clazz, CommandParameter parameter, Object defaultValue )
350 throws ScmException
351 {
352 Object object = parameters.get( parameter.getName() );
353
354 if ( object == null )
355 {
356 return defaultValue;
357 }
358
359 if ( clazz != null && !clazz.isAssignableFrom( object.getClass() ) )
360 {
361 throw new ScmException(
362 "Wrong parameter type for '" + parameter.getName() + ". " + "Expected: " + clazz.getName() + ", got: "
363 + object.getClass().getName() );
364 }
365
366 return object;
367 }
368
369
370
371
372
373
374
375
376 private void setObject( CommandParameter parameter, Object value )
377 throws ScmException
378 {
379 Object object = getObject( null, parameter, null );
380
381 if ( object != null )
382 {
383 throw new ScmException( "The parameter is already set: " + parameter.getName() );
384 }
385
386 parameters.put( parameter.getName(), value );
387 }
388
389
390
391
392
393
394 public void remove( CommandParameter parameter )
395 {
396 parameters.remove( parameter.getName() );
397 }
398 }