All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kohsuke.args4j.spi.FieldGetter Maven / Gradle / Ivy

There is a newer version: 1.3.10
Show newest version
package org.kohsuke.args4j.spi;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

import org.openimaj.util.pair.IndependentPair;

/**
 * A field getter calls .toString() on the underlying object
 * 
 * @author Sina Samangooei ([email protected])
 * @author Jonathon Hare ([email protected])
 * 
 */
public class FieldGetter extends AbstractGetter {

	/**
	 * @param name
	 * @param bean
	 * @param f
	 */
	public FieldGetter(String name, Object bean, Field f) {
		super(name, bean, f);
	}

	@Override
	public List>> getStringValues() {
		List>> ret = new ArrayList>>();

		Object b;
		try {
			b = f.get(bean);
		} catch (Exception _) {
			// try again
			f.setAccessible(true);
			try {
				b = f.get(bean);

			} catch (Exception e) {
				throw new IllegalAccessError(e.getMessage());
			}
		}
		
		if (b == null)
			return ret;
		
		Class c = b.getClass();
		IndependentPair> pair;
		if (c == Boolean.class) {
			if (!(Boolean) b) {
				pair = new IndependentPair>(null, c);
			} else {
				pair = new IndependentPair>(b.toString(), c);
			}
		} else {
			pair = new IndependentPair>(b.toString(), c);
		}

		ret.add(pair);

		return ret;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy