package org.springframework.benchmark;
import org.aopalliance.intercept.MethodInterceptor;
import org.springframework.aop.Advisor;
import org.springframework.aop.framework.AbstractAopProxyTests;
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.beans.ITestBean;
import org.springframework.beans.TestBean;
import org.springframework.load.AbortTestException;
import org.springframework.load.AbstractTest;
import org.springframework.load.TestFailedException;
/**
* @author Rod Johnson
*/
public class AopPrototypeTest extends AbstractTest {
private ITestBean advised;
public AopPrototypeTest() {
ProxyFactory pf = new ProxyFactory(new Class[] { ITestBean.class });
MethodInterceptor static1 = new Advices.NopInterceptor();
MethodInterceptor static2 = new Advices.ReadDataInterceptor();
pf.addAdvice(static1);
pf.addAdvice(static2);
Advisor static3 = new Advices.SetterPointCut(new Advices.NopInterceptor());
Advisor static4 = new Advices.SetterPointCut(new Advices.ReadDataInterceptor());
pf.addAdvisor(static3);
pf.addAdvisor(static4);
pf.addAdvisor(new Advices.ObjectReturnPointCut(new Advices.NopInterceptor()));
Advisor dynamic1 = new AbstractAopProxyTests.StringSetterNullReplacementAdvice();
//pf.addAdvice(dynamic1);
TestBean target = new TestBean();
target.setName("gary");
pf.setTarget(target);
this.advised = (ITestBean) pf.getProxy();
}
/**
* @see org.springframework.load.AbstractTest#runPass(int)
*/
protected void runPass(int i) throws TestFailedException, AbortTestException, Exception {
int newAge = 14;
this.advised.setAge(newAge);
// Nothing on getAge: simulate repeated calls to non-advised methods
this.advised.getAge();
this.advised.getAge();
this.advised.getAge();
if (this.advised.getAge() != newAge)
throw new TestFailedException("Age should have been " + newAge);
//System.out.println(this.advised.getName());
this.advised.setAge(-1);
this.advised.getName();
this.advised.setName("tony");
if (!this.advised.getName().equals("tony"))
throw new TestFailedException("Name should have been " + "tony");
this.advised.setName(null);
// Nothing on getName()
if (!this.advised.getName().equals(""))
throw new TestFailedException("null stopper should have done its magic");
// Interceptor on this
if (this.advised.returnsThis() != this.advised)
throw new TestFailedException("return this should have been magiced");
}
}