View Javadoc

1   package org.kohsuke.args4j;
2   
3   import org.kohsuke.args4j.spi.Setter;
4   
5   import java.lang.reflect.Field;
6   
7   /***
8    * {@link Setter} that sets to a {@link Field}.
9    *
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 void addValue(Object value) {
26          try {
27              f.set(bean,value);
28          } catch (IllegalAccessException _) {
29              // try again
30              f.setAccessible(true);
31              try {
32                  f.set(bean,value);
33              } catch (IllegalAccessException e) {
34                  throw new IllegalAccessError(e.getMessage());
35              }
36          }
37      }
38  }