package frostillicus.xsp.converter; import javax.faces.component.StateHolder; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import com.ibm.commons.util.StringUtil; /** * @since 1.0 */ public class EmptyValueConverter implements Converter, StateHolder { private boolean transient_; private String emptyString_; @Override public Object getAsObject(final FacesContext context, final UIComponent component, final String value) { return value; } @Override public String getAsString(final FacesContext context, final UIComponent component, final Object value) { String emptyString = getEmptyString(); if(StringUtil.isEmpty(emptyString)) { emptyString = "(empty)"; } if(value == null) { return emptyString; } String stringValue = value.toString(); if(StringUtil.isEmpty(StringUtil.trim(stringValue))) { return emptyString; } return stringValue; } public void setEmptyString(final String emptyString) { emptyString_ = emptyString; } public String getEmptyString() { return emptyString_; } @Override public void setTransient(final boolean newTransient) { transient_ = newTransient; } @Override public boolean isTransient() { return transient_; } @Override public void restoreState(final FacesContext facesContext, final Object state) { Object[] stateArray = (Object[])state; emptyString_ = (String)stateArray[0]; } @Override public Object saveState(final FacesContext facesContext) { return new Object[] { emptyString_ }; } }