Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] Avoid toString and hashCode exec/call being adviced

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: Avoid toString and hashCode exec/call being adviced
Sent from the AspectJ - users mailing list archive at Nabble.com.

Back to the top