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.Selenese; import jp.vmi.selenium.selenese.TestSuite; import jp.vmi.selenium.selenese.result.Result; /** * Interceptor for logging and recoding test-suite result. */ abstract public class AbstractExecuteTestSuiteInterceptor implements MethodInterceptor { private static final int PARENT = 0; private static final int CONTEXT = 1; /* * Target signature: * Result TestSuite#execute(Selenese parent, Context context) */ @Override public final Object invoke(MethodInvocation invocation) throws Throwable { TestSuite testSuite = (TestSuite) invocation.getThis(); Object[] args = invocation.getArguments(); Selenese parent = (Selenese) args[PARENT]; Context context = (Context) args[CONTEXT]; return invoke(invocation, testSuite, parent, context); } abstract protected Result invoke(MethodInvocation invocation, TestSuite testSuite, Selenese parent, Context context) throws Throwable; }