1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
package com.beust.jcommander;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* Encapsulates the operations common to @Parameter and @DynamicParameter
*/
public class WrappedParameter {
private Parameter m_parameter;
private DynamicParameter m_dynamicParameter;
public WrappedParameter(Parameter p) {
m_parameter = p;
}
public WrappedParameter(DynamicParameter p) {
m_dynamicParameter = p;
}
public Parameter getParameter() {
return m_parameter;
}
public DynamicParameter getDynamicParameter() {
return m_dynamicParameter;
}
public int arity() {
return m_parameter != null ? m_parameter.arity() : 1;
}
public boolean hidden() {
return m_parameter != null ? m_parameter.hidden() : m_dynamicParameter.hidden();
}
public boolean required() {
return m_parameter != null ? m_parameter.required() : m_dynamicParameter.required();
}
public boolean password() {
return m_parameter != null ? m_parameter.password() : false;
}
public String[] names() {
return m_parameter != null ? m_parameter.names() : m_dynamicParameter.names();
}
public boolean variableArity() {
return m_parameter != null ? m_parameter.variableArity() : false;
}
public Class<? extends IParameterValidator> validateWith() {
return m_parameter != null ? m_parameter.validateWith() : m_dynamicParameter.validateWith();
}
public Class<? extends IValueValidator> validateValueWith() {
return m_parameter != null
? m_parameter.validateValueWith()
: m_dynamicParameter.validateValueWith();
}
public boolean echoInput() {
return m_parameter != null ? m_parameter.echoInput() : false;
}
public void addValue(Parameterized parameterized, Object object, Object value) {
if (m_parameter != null) {
parameterized.set(object, value);
} else {
String a = m_dynamicParameter.assignment();
String sv = value.toString();
int aInd = sv.indexOf(a);
if (aInd == -1) {
throw new ParameterException(
"Dynamic parameter expected a value of the form a" + a + "b"
+ " but got:" + sv);
}
callPut(object, parameterized, sv.substring(0, aInd), sv.substring(aInd + 1));
}
}
private void callPut(Object object, Parameterized parameterized, String key, String value) {
try {
Method m;
m = findPut(parameterized.getType());
m.invoke(parameterized.get(object), key, value);
} catch (SecurityException e) {
e.printStackTrace();
} catch(IllegalAccessException e) {
e.printStackTrace();
} catch(InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
private Method findPut(Class<?> cls) throws SecurityException, NoSuchMethodException {
return cls.getMethod("put", Object.class, Object.class);
}
public String getAssignment() {
return m_dynamicParameter != null ? m_dynamicParameter.assignment() : "";
}
public boolean isHelp() {
return m_parameter != null && m_parameter.help();
}
public boolean isNonOverwritableForced() {
return m_parameter != null && m_parameter.forceNonOverwritable();
}
}
|