Webcam Chat QuickBooks Advice international calling cards international phone cards
JavaBeat Java Books Certifications Certifications Kits Articles Tutorials Tips QNA Book Store Interview Questions SCJP 1.5 SCJP 1.6 SCWCD 5.0 SCBCD 5.0 SCEA SCJA Feeds

Composable Pointcut Example

Topic :
Feedback Request New QnA Print Email

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);
}

}


//////////////////////////////////////////////////////////////////////////////////
public class SampleBean {

public String getName() {
return "Rob Harrop";
}

public void setName(String name) {

}

public int getAge() {
return 100;
}
}



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

import org.springframework.aop.Advisor;
import org.springframework.aop.ClassFilter;
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.aop.support.ComposablePointcut;
import org.springframework.aop.support.DefaultPointcutAdvisor;
import org.springframework.aop.support.StaticMethodMatcher;

public class ComposablePointcutExample {

public static void main(String[] args) {
// create target
SampleBean target = new SampleBean();


ComposablePointcut pc = new ComposablePointcut(ClassFilter.TRUE,
new GetterMethodMatcher());

System.out.println("Test 1");
SampleBean proxy = getProxy(pc, target);
testInvoke(proxy);

System.out.println("Test 2");
pc.union(new SetterMethodMatcher());
proxy = getProxy(pc, target);
testInvoke(proxy);

System.out.println("Test 3");
pc.intersection(new GetAgeMethodMatcher());
proxy = getProxy(pc, target);
testInvoke(proxy);

}

private static SampleBean getProxy(ComposablePointcut pc, SampleBean target) {
// create the advisor

Advisor advisor = new DefaultPointcutAdvisor(pc,
new SimpleBeforeAdvice());

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

return (SampleBean) pf.getProxy();
}

private static void testInvoke(SampleBean proxy) {
proxy.getAge();
proxy.getName();
proxy.setName("Rob Harrop");
}

private static class GetterMethodMatcher extends StaticMethodMatcher {

public boolean matches(Method method, Class cls) {
return (method.getName().startsWith("get"));
}

}

private static class GetAgeMethodMatcher extends StaticMethodMatcher {
public boolean matches(Method method, Class cls) {
return "getAge".equals(method.getName());
}
}

private static class SetterMethodMatcher extends StaticMethodMatcher {

public boolean matches(Method method, Class cls) {
return (method.getName().startsWith("set"));
}

}
}

Topic :
Feedback Request New QnA Print Email

All api java java 6.0 java 7.0 jdbc jsp servlet ejb jndi jms ejb 3.0 j2ee jee 5.0 jee 6.0 jsf struts spring Hibernate ajax JBoss Seam netbeans eclipse ant xml maven dojo junit javafx j2me log4j ESB JBoss Apache Quartz scjp mysql oracle gwt openjpa jmx yui google-guice android JBoss scwcd 5.0 scjp 1.5 scjp 1.6 scja scbcd 5.0

JavaBeat Website (2004-2011), India
javabeat | advertise | about us | contact | useful resources
Copyright (2004 - 2011), JavaBeat


Technology Blogs
Technology blogs Technology Blogs
blog log