/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.internal.gosu.parser.statements;
import gw.internal.gosu.parser.Statement;
import gw.internal.gosu.parser.CannotExecuteGosuException;
import gw.internal.gosu.parser.expressions.BeanMethodCallExpression;
import gw.lang.parser.statements.IBeanMethodCallStatement;
import gw.lang.parser.statements.ITerminalStatement;
/**
* Represents a bean-method-call statement as specified in the Gosu grammar:
* <pre>
* <i>bean-method-call</i>
* <member-access> <b>(</b> [<argument-list>] <b>)</b>
* </pre>
* <p/>
*
* @see gw.lang.parser.IGosuParser
*/
public final class BeanMethodCallStatement extends Statement implements IBeanMethodCallStatement
{
protected BeanMethodCallExpression _methodCall;
/**
* Constructs a BeanMethodCallStatement.
*/
public BeanMethodCallStatement()
{
}
/**
* @return The method call corresponding to this statement.
*/
public BeanMethodCallExpression getBeanMethodCall()
{
return _methodCall;
}
/**
* @param methodCall The method call corresponding to this statement.
*/
public void setBeanMethodCall( BeanMethodCallExpression methodCall )
{
_methodCall = methodCall;
}
/**
* Executes the bean method call.
*/
public Object execute()
{
if( !isCompileTimeConstant() )
{
return super.execute();
}
throw new CannotExecuteGosuException();
}
@Override
protected ITerminalStatement getLeastSignificantTerminalStatement_internal( boolean[] bAbsolute )
{
bAbsolute[0] = false;
return null;
}
/**
* @return
*/
@Override
public String toString()
{
return _methodCall.toString();
}
}