⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fieldreadparameter.java

📁 pojo的mvc框架
💻 JAVA
字号:
package xyz.frame.introspector;import java.lang.reflect.Field;import java.util.Collection;import org.apache.log4j.Logger;import xyz.frame.annotations.Conversion;import xyz.frame.annotations.Read;import xyz.frame.component.ComponentInstantiationException;import xyz.frame.component.FieldAnnotation;import xyz.frame.converter.Converter;import xyz.frame.util.GettingException;import xyz.frame.util.ReflectionUtil;import xyz.frame.util.SettingException;/** * A field based read parameter *  * @author Guilherme Silveira */public class FieldReadParameter implements ReadParameter {		private static final Logger logger = Logger			.getLogger(FieldReadParameter.class);	private Field field;	private Class<? extends Converter> converter;	private String key;	private boolean mightCreate;	public FieldReadParameter(FieldAnnotation<Read> info) {		Read read = info.getAnnotation();		this.field = info.getField();		this.key = new KeyExtractor().extractReadKey(info);		this.mightCreate = read.create();		if (field.isAnnotationPresent(Conversion.class)) {			this.converter = field.getAnnotation(Conversion.class).value();		}		logger.debug("Created new FieldReadParameter " + this.key);	}	/**	 * The parameter key	 * 	 * @return key	 */	public String getKey() {		return key;	}	/**	 * Should it instantiate required fields on the fly?	 * 	 * @return true if it should instantiate them	 */	public boolean mightCreate() {		return this.mightCreate;	}	/**	 * Returns the field its working with	 * 	 * @return the field the field itself	 */	public Field getField() {		return field;	}	/**	 * Returns the overriden converter class attached to this read parameter	 * 	 * @return the converter class	 */	public Class<? extends Converter> getOverridenConverter() {		return this.converter;	}	/**	 * 	 * @throws SettingException	 *             setting exception	 * @see xyz.frame.introspector.ReadParameter#guaranteeExistence(java.lang.Object)	 */	public Object guaranteeExistence(Object component) throws SettingException {		try {			Object value = ReflectionUtil.get(component, field);			if (value == null && mightCreate()) {				if (Collection.class.isAssignableFrom(field.getType())) {					value = ReflectionUtil.instantiateCollection(field							.getType());				} else {					value = ReflectionUtil.genericInstantiate(field.getType());				}				ReflectionUtil.setField(component, field, value);			}			return value;		} catch (GettingException e) {			throw new SettingException(e.getMessage(), e);		} catch (ComponentInstantiationException e) {			throw new SettingException(e.getMessage(), e.getCause());		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -