package org.jboss.seam.wicket.ioc; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import org.jboss.seam.util.Reflections; /** * Implementation of BijectedAttribute for a field * @author Pete Muir * */ public abstract class BijectedField<T extends Annotation> extends InjectedField<T> implements BijectedAttribute<T> { private String contextVariableName; public BijectedField(Field field, T annotation) { super(field, annotation); contextVariableName = getSpecifiedContextVariableName(); if (contextVariableName == null || "".equals(contextVariableName)) { contextVariableName = field.getName(); } } public Object get(Object bean) { field.setAccessible(true); return Reflections.getAndWrap(field, bean); } public String getContextVariableName() { return contextVariableName; } protected abstract String getSpecifiedContextVariableName(); @Override public String toString() { return "BijectedField(" + Reflections.toString(field) + ')'; } }