package jp.vmi.selenium.selenese.inject; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import jp.vmi.selenium.selenese.Context; import jp.vmi.selenium.selenese.command.ICommand; import jp.vmi.selenium.selenese.result.Result; /** * Super class for DoCommand interceptor. */ abstract public class AbstractDoCommandInterceptor implements MethodInterceptor { private static final int CONTEXT = 0; private static final int COMMAND = 1; private static final int CUR_ARGS = 2; /* * target signature: * Result doCommand(Context context, ICommand command, String... curArgs) */ @Override public final Object invoke(MethodInvocation invocation) throws Throwable { Object[] args = invocation.getArguments(); Context context = (Context) args[CONTEXT]; ICommand command = (ICommand) args[COMMAND]; String[] curArgs = (String[]) args[CUR_ARGS]; return invoke(invocation, context, command, curArgs); } abstract protected Result invoke(MethodInvocation invocation, Context context, ICommand command, String[] curArgs) throws Throwable; }