package org.springmodules.validation.bean.context.aop;
/**
*
* @author Uri Boness
*/
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Method;
import junit.framework.TestCase;
import org.aopalliance.intercept.MethodInvocation;
import org.springmodules.validation.bean.context.DefaultValidationContext;
import org.springmodules.validation.bean.context.ValidationContextHolder;
import org.springmodules.validation.util.Switch;
public class AbstractValidationContextInterceptorTests extends TestCase {
public void testInvoke() throws Throwable {
AbstractValidationContextInterceptor interceptor = new AbstractValidationContextInterceptor() {
protected String[] getValidationContextTokens(MethodInvocation methodInvocation) {
return new String[] { "ctx1", "ctx2" };
}
};
final Switch methodCalledSwitch = new Switch();
MethodInvocation invocation = new MethodInvocation() {
public Method getMethod() {
return null;
}
public Object[] getArguments() {
return new Object[0];
}
public Object proceed() throws Throwable {
methodCalledSwitch.turnOn();
assertNotNull(ValidationContextHolder.getValidationContext());
assertTrue(DefaultValidationContext.class.isInstance(ValidationContextHolder.getValidationContext()));
DefaultValidationContext context = (DefaultValidationContext)ValidationContextHolder.getValidationContext();
String[] tokens = context.getTokens();
assertNotNull(tokens);
assertEquals(2, tokens.length);
assertEquals("ctx1", tokens[0]);
assertEquals("ctx2", tokens[1]);
return "result";
}
public Object getThis() {
return null;
}
public AccessibleObject getStaticPart() {
return null;
}
};
Object result = interceptor.invoke(invocation);
assertTrue(methodCalledSwitch.isOn());
assertEquals("result", result);
}
}