| package org.kohsuke.args4j; |
| |
| import java.lang.reflect.Field; |
| |
| import org.kohsuke.args4j.spi.ConfigElement; |
| import org.kohsuke.args4j.spi.OptionImpl; |
| import org.kohsuke.args4j.spi.Setters; |
| |
| /** |
| * This metadata parser makes all field available to the CmdLineParser. |
| * @author Jan Materne |
| * |
| */ |
| public class FieldParser { |
| |
| public void parse(CmdLineParser parser, Object bean) throws ClassNotFoundException { |
| for(Class c=bean.getClass(); c!=null; c=c.getSuperclass()) { |
| System.out.println("Class: " + c); |
| for( Field f : c.getDeclaredFields() ) { |
| Option o = new OptionImpl(createConfigElement(f)); |
| parser.addOption(Setters.create(f, bean), o ); |
| } |
| } |
| } |
| |
| private ConfigElement createConfigElement(Field f) { |
| ConfigElement rv = new ConfigElement(); |
| rv.field = f.getName(); |
| rv.name = "-" + f.getName(); |
| return rv; |
| } |
| |
| } |