01: package org.kohsuke.args4j;
02:
03: import org.kohsuke.args4j.spi.Setter;
04:
05: import java.lang.reflect.Field;
06:
07: /**
08: * {@link Setter} that sets to a {@link Field}.
09: *
10: * @author Kohsuke Kawaguchi
11: */
12: final class FieldSetter implements Setter {
13: private final Field f;
14: private final Object bean;
15:
16: public FieldSetter(Object bean, Field f) {
17: this .bean = bean;
18: this .f = f;
19: }
20:
21: public Class getType() {
22: return f.getType();
23: }
24:
25: public boolean isMultiValued() {
26: return false;
27: }
28:
29: public void addValue(Object value) {
30: try {
31: f.set(bean, value);
32: } catch (IllegalAccessException _) {
33: // try again
34: f.setAccessible(true);
35: try {
36: f.set(bean, value);
37: } catch (IllegalAccessException e) {
38: throw new IllegalAccessError(e.getMessage());
39: }
40: }
41: }
42: }
|