/* Converter.java
Purpose:
Description:
History:
Jun 22, 2011 9:55:14 AM, Created by henrichen
Copyright (C) 2011 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.bind;
import org.zkoss.zk.ui.Component;
/**
* Generic binding conversion interface.
* <b>U</b> is the value type of the Component attribute, <b>B</b> is the property type of the Bean
* and <b>C</b> is the component type of the converter.
* <p/>
*
* @author henrichen
* @author dennis
* @since 6.0.0
*/
public interface Converter<U, B, C extends Component> {
/**
* Indicates the returned value should be ignored to load to a component or save to a bean,
* It is useful for writing a converter to manipulate component directly when loading or saving
* Note : <br/>
* If you want to return {@link #IGNORED_VALUE} in the converter method, then you need to set <b>U</b> or <b>B</b> to Object.
* @since 6.0.1
*/
public Object IGNORED_VALUE = new Object();
/**
* Coerces a value to another value to load to a component
* @param beanProp the bean value
* @param component the component to be loaded the value
* @param ctx the bind context
* @return the value to load to a component
*/
public U coerceToUi(B beanProp, C component, BindContext ctx);
/**
* Coerces a value to bean value to save to a bean
* @param compAttr the value of component attribute.
* @param component the component provides the value
* @param ctx the bind context
* @return the value to save to a bean
*/
public B coerceToBean(U compAttr, C component, BindContext ctx);
}