/**
*
*/
package org.jboss.seam.el;
import javax.el.ELContext;
import javax.el.MethodExpression;
import javax.el.MethodInfo;
import javax.el.MethodNotFoundException;
/**
*
* @author Gavin King
*
*/
class OptionalParameterMethodExpression extends MethodExpression
{
private MethodExpression withParam;
private MethodExpression withNoParam;
public OptionalParameterMethodExpression(MethodExpression withParam, MethodExpression withNoParam)
{
this.withParam = withParam;
this.withNoParam = withNoParam;
}
@Override
public MethodInfo getMethodInfo(ELContext ctx)
{
return withParam.getMethodInfo(ctx);
}
@Override
public Object invoke(ELContext ctx, Object[] args)
{
try
{
return withParam.invoke(ctx, args);
}
catch (MethodNotFoundException mnfe)
{
try
{
return withNoParam.invoke(ctx, new Object[0]);
}
catch (MethodNotFoundException mnfe2)
{
throw mnfe;
}
}
}
@Override
public String getExpressionString()
{
return withParam.getExpressionString();
}
@Override
public boolean isLiteralText()
{
return withParam.isLiteralText();
}
@Override
public boolean equals(Object object)
{
if ( !(object instanceof OptionalParameterMethodExpression) ) return false;
OptionalParameterMethodExpression other = (OptionalParameterMethodExpression) object;
return withParam.equals(other.withParam);
}
@Override
public int hashCode()
{
return withParam.hashCode();
}
}