Package org.kohsuke.args4j

Source Code of org.kohsuke.args4j.ClassParser

package org.kohsuke.args4j;

import org.kohsuke.args4j.spi.MethodSetter;
import org.kohsuke.args4j.spi.Setters;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
* Parser for analyzing Args4J annotations in the class hierarchy.
*
* This can be used to feed option bindings that span across multiple instances.
*
* @author Jan Materne
*/
public class ClassParser {
    public void parse(Object bean, CmdLineParser parser) {
        // recursively process all the methods/fields.
        for( Class c=bean.getClass(); c!=null; c=c.getSuperclass()) {
            for( Method m : c.getDeclaredMethods() ) {
                Option o = m.getAnnotation(Option.class);
                if(o!=null) {
                  parser.addOption(new MethodSetter(parser,bean,m), o);
                }
                Argument a = m.getAnnotation(Argument.class);
                if(a!=null) {
                    parser.addArgument(new MethodSetter(parser,bean,m), a);
                }
            }

            for( Field f : c.getDeclaredFields() ) {
                Option o = f.getAnnotation(Option.class);
                if(o!=null) {
                  parser.addOption(Setters.create(f,bean),o);
                }
                Argument a = f.getAnnotation(Argument.class);
                if(a!=null) {
                  parser.addArgument(Setters.create(f,bean), a);
                }
            }
        }
  }
}
TOP

Related Classes of org.kohsuke.args4j.ClassParser

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.