[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] pointcut definition problems
|
I think that if you have a class in com.business..* and somewhere in
that class you call StringBuffer.append(), that method call would be
captured in your pointcut. The same thing applies to getter and setters.
The issue is with understanding how within and withincode works when
used in conjunction with call and execution. I suggest reading this page:
http://dev.eclipse.org/viewcvs/indextech.cgi/~checkout~/aspectj-home/doc/progguide/language-joinPoints.html#d0e1288
If the link is not working, go to the aspectj documentations
(http://www.eclipse.org/aspectj/) and click on the title "call vs.
execution" in chapter 2.
Secondly, I think that you need to explicitly add either a call or
execution to your pointcut, otherwise you risk catching too many join
points.
Thanks,
Jonathan
Adrian Powell wrote:
Hi all,
I'm working on refining a trace aspect and am having troubles pruning
the output. I would like to log the entry and exit of methods in the
business code, but not in any getters or setters. This is my pointcut:
pointcut perfExecExec(ControllerCommandImpl controller):
cflowbelow(execution(*
ControllerCommandImpl+.performExecute()))
&& this(controller)
&& !within(TraceAspect)
&& within(com.business..*)
&& !withincode(* *.get*(..));
(the cflowbelow() is added so we can log the session information with
each statement.)
The problem is that when I log
thisJoinPointStaticPart.getSignature().getDeclaringTypeName() and
getSignature().getName(), I am getting:
- java.lang.StringBuffer.append() (and other library methods) which I
thought was blocked by the "within(com.business..*)" and
- any number of get() methods, both inside and outside of the
com.business.* hierarchy
I've tried a number of variations of this pointcut, but none seem to
work. Considering that I'm not weaving either the Java runtime jars or
any of our library jars, the appearance of entry and exit statements for
library methods is really confusing me. It makes me think there's
something simple but profound that I am missing. Can anyone spot it,
because I'm lost.
Thanks!
cheers,
-adrian.
--
Adrian Powell
Centre for IBM e-Business Innovation :: Vancouver
apowell@xxxxxxxxxx / 604-297-3194