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
214 public boolean getBoolean( CommandParameter parameter, boolean defaultValue )
215 throws ScmException
216 {
217 return Boolean.valueOf( getString( parameter, Boolean.toString( defaultValue ) ) ).booleanValue();
218 }
219
220
221
222
223
224
225
226
227
228
229
230
231 public ScmVersion getScmVersion( CommandParameter parameter )
232 throws ScmException
233 {
234 return (ScmVersion) getObject( ScmVersion.class, parameter );
235 }
236
237
238
239
240
241
242
243
244
245 public ScmVersion getScmVersion( CommandParameter parameter, ScmVersion defaultValue )
246 throws ScmException
247 {
248 return (ScmVersion) getObject( ScmVersion.class, parameter, defaultValue );
249 }
250
251
252
253
254
255
256
257
258 public void setScmVersion( CommandParameter parameter, ScmVersion scmVersion )
259 throws ScmException
260 {
261 setObject( parameter, scmVersion );
262 }
263
264
265
266
267
268
269
270
271
272
273 public File[] getFileArray( CommandParameter parameter )
274 throws ScmException
275 {
276 return (File[]) getObject( File[].class, parameter );
277 }
278
279
280
281
282
283
284
285 public File[] getFileArray( CommandParameter parameter, File[] defaultValue )
286 throws ScmException
287 {
288 return (File[]) getObject( File[].class, parameter, defaultValue );
289 }
290
291
292 public ScmTagParameters getScmTagParameters( CommandParameter parameter )
293 throws ScmException
294 {
295 return (ScmTagParameters) getObject( ScmTagParameters.class, parameter, new ScmTagParameters() );
296 }
297
298 public void setScmTagParameters( CommandParameter parameter, ScmTagParameters scmTagParameters )
299 throws ScmException
300 {
301 setObject( parameter, scmTagParameters );
302 }
303
304 public void setScmBranchParameters( CommandParameter parameter, ScmBranchParameters scmBranchParameters )
305 throws ScmException
306 {
307 setObject( parameter, scmBranchParameters );
308 }
309
310 public ScmBranchParameters getScmBranchParameters( CommandParameter parameter )
311 throws ScmException
312 {
313 return (ScmBranchParameters) getObject( ScmBranchParameters.class, parameter, new ScmBranchParameters() );
314 }
315
316
317
318
319
320
321
322
323
324
325
326
327
328 private Object getObject( Class<?> clazz, CommandParameter parameter )
329 throws ScmException
330 {
331 Object object = getObject( clazz, parameter, null );
332
333 if ( object == null )
334 {
335 throw new ScmException( "Missing parameter: '" + parameter.getName() + "'." );
336 }
337
338 return object;
339 }
340
341
342
343
344
345
346
347
348
349
350 private Object getObject( Class<?> clazz, CommandParameter parameter, Object defaultValue )
351 throws ScmException
352 {
353 Object object = parameters.get( parameter.getName() );
354
355 if ( object == null )
356 {
357 return defaultValue;
358 }
359
360 if ( clazz != null && !clazz.isAssignableFrom( object.getClass() ) )
361 {
362 throw new ScmException(
363 "Wrong parameter type for '" + parameter.getName() + ". " + "Expected: " + clazz.getName() + ", got: "
364 + object.getClass().getName() );
365 }
366
367 return object;
368 }
369
370
371
372
373
374
375
376
377 private void setObject( CommandParameter parameter, Object value )
378 throws ScmException
379 {
380 Object object = getObject( null, parameter, null );
381
382 if ( object != null )
383 {
384 throw new ScmException( "The parameter is already set: " + parameter.getName() );
385 }
386
387 parameters.put( parameter.getName(), value );
388 }
389
390
391
392
393
394
395 public void remove( CommandParameter parameter )
396 {
397 parameters.remove( parameter.getName() );
398 }
399 }