package org.jboss.seam.databinding; import java.lang.annotation.Annotation; import org.jboss.seam.ScopeType; /** * Allows some "bound type" to be exposed to * the user interface via a "wrapper type". * * @author Gavin King * * @param <Out> the annotation type * @param <Type> the bound type * @param <WrapperType> the wrapper type */ public interface DataBinder<Out extends Annotation, Type, WrapperType> { String getVariableName(Out out); ScopeType getVariableScope(Out out); WrapperType wrap(Out out, Type value); Type getWrappedData(Out out, WrapperType wrapper); Object getSelection(Out out, WrapperType wrapper); boolean isDirty(Out out, WrapperType wrapper, Type value); }