JBoss.org Community Documentation
The ReflectionAspect
also helps with getting rid of the JBoss AOP
"plumbing" information. You bind it to a set of caller pointcuts, using the
followingjboss-aop.xml entries :
<bind pointcut="call(* java.lang.Class->getInterfaces())"> <advice name="interceptGetInterfaces" \ aspect="org.jboss.test.aop.reflection.ReflectionAspectTester"/> </bind> <bind pointcut="call(* java.lang.Class->getDeclaredMethods())"> <advice name="interceptGetDeclaredMethods" \ aspect="org.jboss.test.aop.reflection.ReflectionAspectTester"/> </bind> <bind pointcut="call(* java.lang.Class->getDeclaredMethod(..))"> <advice name="interceptGetDeclaredMethod" \ aspect="org.jboss.test.aop.reflection.ReflectionAspectTester"/> </bind> <bind pointcut="call(* java.lang.Class->getMethods())"> <advice name="interceptGetMethods" \ aspect="org.jboss.test.aop.reflection.ReflectionAspectTester"/> </bind> <bind pointcut="call(* java.lang.Class->getMethod(..))"> <advice name="interceptGetMethod" \ aspect="org.jboss.test.aop.reflection.ReflectionAspectTester"/> </bind> <bind pointcut="call(* java.lang.Class->getDeclaredFields())"> <advice name="interceptGetDeclaredFields" \ aspect="org.jboss.test.aop.reflection.ReflectionAspectTester"/> </bind> <bind pointcut="call(* java.lang.Class->getDeclaredClasses())"> <advice name="interceptGetDeclaredClasses" \ aspect="org.jboss.test.aop.reflection.ReflectionAspectTester"/> </bind> <bind pointcut="call(* java.lang.Class->getDeclaredField(..))"> <advice name="interceptGetDeclaredField" \ aspect="org.jboss.test.aop.reflection.ReflectionAspectTester"/> </bind>
This way the calls to Class.getMethods()
etc. only return information
that is present in the "raw" class, by filtering out the stuff added to the class by JBoss
AOP.