Hello all,

this is going to be a long one, so please bear with me. I can assure you
that I've searched the net for a solution before writing this post



I'm using aspectj to follow the excecution of my flow, so this is how my
advice looks like:

public aspect MyAspect{

        pointcut flowCut(): (call(* com.mycomp..*(..)) ||
call(com.mycomp..*.new(..)));

        pointcut notAspect(): !within(MyAspect);

        Object around(): notAspect() && flowCut(){

                Date startDate = new Date(System.currentTimeMillis());
                System.out.println("enter " + thisJoinPoint.getSignature()
                                 + " caller=" + thisJoinPoint.getThis() + " 
calling method="
                                + 
thisEnclosingJoinPointStaticPart.getSignature());

                Object result = proceed();

                Date endDate = new Date(System.currentTimeMillis());
                System.out.println("exit " + thisJoinPoint.getSignature() + "; 
caller="
                                + thisJoinPoint.getThis() + "; calling method=" 
                                +
thisEnclosingJoinPointStaticPart.getSignature()
                                + "; result: " + result + "; elapsed "
                                + (endDate.getTime() - startDate.getTime()) + " 
millisecs");

                return result;
        }
}


I'm using "caller="+ thisJoinPoint.getThis() because i want to know the
specific instance of the caller. now my problem is that if one of my
classes, under com.mycomp..* overrides the toString method, i don't get the
instance number and the toString is activated, resulting in stack overflow.

I haven't managed to figure yet how the hashCode method is activated, but
after I commented out all the toSring implementations, I started getting
stack over flows that narroed down again to string builder and toString
calls

So my question is
what changes are needed to my pointcuts definitions so I'll be able to avoid
the recursive calls?
is there a better way to know who is the calling object?

-- 
View this message in context: 
http://www.nabble.com/Avoid-toString-and-hashCode-exec-call-being-adviced-tp21688532p21688532.html
Sent from the AspectJ - users mailing list archive at Nabble.com.
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to