package org.kohsuke.args4j.spi;
import org.kohsuke.args4j.CmdLineParser;
import java.lang.reflect.Field;
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Method;
import java.util.List;
/**
* Factory of {@link Setter}s.
*
* @author Kohsuke Kawaguchi
*/
public class Setters {
public static Setter create(CmdLineParser parser, AccessibleObject fieldOrMethod, Object bean) {
if (fieldOrMethod instanceof Method) {
return new MethodSetter(parser,bean,(Method) fieldOrMethod);
} else {
return create((Field)fieldOrMethod,bean);
}
}
public static Setter create(Field f, Object bean) {
if(f.getType().isArray())
return new ArrayFieldSetter(bean,f);
if(List.class.isAssignableFrom(f.getType()))
return new MultiValueFieldSetter(bean,f);
else
return new FieldSetter(bean,f);
}
}