Thanks a bunch guys!
I think i got the basic caller pointcut working for MethodCalledByMethodInvocation.
Here is a simple set of classes that i used for this purpose:
| package DCR2;
|
| public class HelloAOP {
| public static void main(String args[]){
| new callTest().printText();
| }
| public void callMe(){
| System.out.println("AOP!");
| }
| }
|
|
| package DCR2;
|
| public class callTest {
| public void printText(){
| callMe();
| }
| public void callMe(){
| System.out.println("AOP!");
| }
| }
|
| package DCR2;
|
| import org.jboss.aop.advice.Interceptor;
| import org.jboss.aop.joinpoint.Invocation;
| import org.jboss.aop.joinpoint.MethodCalledByMethodInvocation;
|
| public class HelloAOPInterceptor implements Interceptor{
| public String getName(){
| return "HelloAOPInterceptor";
| }
| public Object invoke(Invocation invocation) throws Throwable{
| if (invocation instanceof MethodCalledByMethodInvocation){
| System.out.print("MethodCalledByMethodInvocation, ");
| }
| else System.out.print("Hello, ");
| return invocation.invokeNext();
| }
| }
|
|
|
And my jboss-aop.xml looks like:
|
|
| <?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
| <aop>
| <bind pointcut="call(public void DCR2.callTest->callMe()) and
withincode(public void DCR2.callTest->printText())">
| <interceptor class="DCR2.HelloAOPInterceptor"/>
| </bind>
| </aop>
|
The output after running the project should be:
MethodCalledByMethodInvocation, AOP!
The reason i used the callTest class in between is that i could not get the interceptor to
work if i had a statement
| new HelloAOP().callMe();
|
| (a method call in the constructor)
|
| instead of:
| new callTest().printText();
|
What i could do on the whole is to see if a call for a method is coming from another
method or not. My next step is to see if i can differentiate between a method call coming
from a JSP page(JSP->EJB) and the method calling method(EJB->EJB).
I may have to comeback for your help again.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3993189#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...