Subscribe

RSS Feed (xml)

Powered By

Skin Design:
Free Blogger Skins

Powered by Blogger

Thursday, November 22, 2007

java code for Control Flow

/*
Pro Spring
By Rob Harrop
Jan Machacek
ISBN: 1-59059-461-4
Publisher: Apress
*/

///////////////////////////////////////////////////////////////////////////////////////
public class TestBean {

public void foo() {
System.out.println("foo()");
}
}


///////////////////////////////////////////////////////////////////////////////////////
import java.lang.reflect.Method;

import org.springframework.aop.MethodBeforeAdvice;

public class SimpleBeforeAdvice implements MethodBeforeAdvice {


public void before(Method method, Object[] args, Object target)
throws Throwable {
System.out.println("Before method: " + method);
}

}


///////////////////////////////////////////////////////////////////////////////////////
import org.springframework.aop.Advisor;
import org.springframework.aop.Pointcut;
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.aop.support.ControlFlowPointcut;
import org.springframework.aop.support.DefaultPointcutAdvisor;

public class ControlFlowExample {

public static void main(String[] args) {
ControlFlowExample ex = new ControlFlowExample();
ex.run();
}

public void run() {
TestBean target = new TestBean();

// create advisor
Pointcut pc = new ControlFlowPointcut(ControlFlowExample.class, "test");
Advisor advisor = new DefaultPointcutAdvisor(pc,
new SimpleBeforeAdvice());

// create proxy
ProxyFactory pf = new ProxyFactory();
pf.setTarget(target);
pf.addAdvisor(advisor);

TestBean proxy = (TestBean) pf.getProxy();

System.out.println("Trying normal invoke");
proxy.foo();
System.out.println("Trying under ControlFlowExample.test()");
test(proxy);
}

private void test(TestBean bean) {
bean.foo();

}
}

No comments: