package org.jboss.seam.jsf;
import java.io.Serializable;
import javax.el.ValueExpression;
import javax.faces.context.FacesContext;
import javax.faces.el.EvaluationException;
import javax.faces.el.PropertyNotFoundException;
import javax.faces.el.ValueBinding;
/**
* Nobody should be using ValueBinding anymore, but if they
* are, we need this.
*
* @author Gavin King
*
*/
@SuppressWarnings("deprecation")
@Deprecated
public class UnifiedELValueBinding extends ValueBinding implements Serializable
{
private transient ValueExpression valueExpression;
private String expressionString;
public UnifiedELValueBinding(String expressionString)
{
this.expressionString = expressionString;
}
public UnifiedELValueBinding() {}
@Override
public String getExpressionString()
{
return expressionString;
}
@Override
public Class getType(FacesContext ctx) throws EvaluationException, PropertyNotFoundException {
return getValueExpression(ctx).getType( ctx.getELContext() );
}
@Override
public Object getValue(FacesContext ctx) throws EvaluationException, PropertyNotFoundException {
return getValueExpression(ctx).getValue( ctx.getELContext() );
}
@Override
public boolean isReadOnly(FacesContext ctx) throws EvaluationException, PropertyNotFoundException {
return getValueExpression(ctx).isReadOnly( ctx.getELContext() );
}
@Override
public void setValue(FacesContext ctx, Object value) throws EvaluationException, PropertyNotFoundException {
getValueExpression(ctx).setValue( ctx.getELContext(), value);
}
@Override
public String toString()
{
return getExpressionString();
}
private ValueExpression getValueExpression(FacesContext ctx)
{
if (valueExpression==null)
{
valueExpression = ctx.getApplication().getExpressionFactory()
.createValueExpression( ctx.getELContext(), expressionString, Object.class );
}
return valueExpression;
}
}