Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] identifying class not included in pointcut

Right, I see what you're saying. There is nothing special , as in possessing some kind of built in signifier, about being the first  modified method entered from an unmodified method. Unmodified methods just sort of don't exist in that universe at all.

So that being the case, it is also a true statement that that cflow cannot give you the actual stack trace since a stack trace could enter and exit -via jumping into and out of the native method stack,, at any time  and there's no special way using  AspectJ   to know   that just happened .

I have to do a little begging here. I still have that goal; I was hoping AspectJ would have a trick up its sleve but i see now  why it can't provide that, it's a very reasonable limitation .. and here[s the begging part... does anyone have any glimmering of an  idea how that might be done despite no longer qualifying as an aspectJ question ?  I hope I am not being inappropriate at this point.

Many thanks due to all who answered.

Sincerely...

 
On 03/27/2014 12:45 PM, Frank Pavageau wrote:
It's difficult to know that you're going through an unmodified method without modifying the method.

I guess you could maintain a (thread-local) stack of the methods called (by using a call(* *(..)) pointcut) and verifying in the weaved methods (using a execution(* *(..)) pointcut) that it matches the expected call. However, there would be several shortcomings:
  • you wouldn't detect calls that never result in a weaved method call, but that doesn't seem to be your concern anyway
  • you'd have to deal with polymorphism since the signature you see at the call join point is not always the same as the one you see at the execution join point
You'd also have to evaluate the performance impact of intercepting each call.

Frank


2014-03-27 15:37 GMT+01:00 trhouse <trhouse@xxxxxxxxx>:

If I could know when the program had entered a non instrumented method,that would suffice since I could just throw a global flag of some description, though thinking about it now, that's a lot of flag checking I'm setting myself up for... 

It seems like a very basic fact about any program utilizing aspectj -now we have left instrumented code, now we are reentrant. AspectJ does not support this scenario? Can anyone confirm that statement?

Thank you!

On Mar 26, 2014 12:29 AM, "Andy Clement" <andrew.clement@xxxxxxxxx> wrote:
cflow() and cflowbelow() are the usual tools for detecting something calling some other thing - but that seems like targeting that you don't want to do. In the advice you could create a stack trace (using Thread) and inspect it to see who called you but the performance wouldn't be great.

Andy


On 25 March 2014 11:55, JAVA DEVELOPER <JAVA_DEVELOPER_922@xxxxxxx> wrote:
Suppose I have program in which some method calls are targeted by a pointcut, while others are not. Of course a targeted method could be invoked by a non-targeted method. What I want to know is when this has happened. I (think) I know that I cant get the invoking, non-targeted method's FQN without targeting it,  (but I would take it if I could have it)..  what I am interested in is knowing the  fact that this has occurred at all. Is this possible?

Thank you!

-T 

_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users



_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users


_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users




_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users


Back to the top