[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
RE: [aspectj-users] Question about using within/cflow pointcutswiththird-party jars
|
> Dumb question (?): Why "execution(* new(..))" in the pointcut
> immediately above - isn't this covered by "execution(* *(..))"?
"execution(* new(..))" is a typo - should be "execution(new(..))"
(Constructor-execution patterns have no return type.)
So this
> > pointcut hibernate():
> > (execution(* *(..)) || execution(* new(..))) &&
> > within(org.hibernate..*);
means "any constructor- or method-execution within org.hibernate..* classes"
Wes
> ------------Original Message------------
> From: "Neil Redding" <nredding@xxxxxxxxx>
> To: aspectj-users@xxxxxxxxxxx
> Date: Fri, Aug-18-2006 11:39 AM
> Subject: RE: [aspectj-users] Question about using within/cflow pointcutswiththird-party jars
>
>
> Thanks Ron - a couple followup questions below:
>
> > To weave within the hibernate classes, you would need
> > Hibernate to be on your inpath (i.e., to weave the Hibernate
> > jars). One way you might do this without building a modified
> > version of Hibernate would be load-time weaving.
>
> I've been assuming LTW is expensive - is it not? I think I'll give it a
> go, since I don't want to modify Hibernate unless I have to.
>
> > Another option would be to use cflow of calls into Hibernate.
> > The calls from your code into Hibernate can be woven without
> > weaving into Hibernate. E.g.,
> >
> > pointcut callHibernate():
> > call(* org.hibernate..*(..)) ||
> > call(org.hibernate..*.new(..));
> > pointcut inHibernate(): cflow(callHibernate());
> >
> > pointcut setterNotCalledByHibernate():
> > !calledByHibernate() && execution(* *.set*(..));
>
> Right; the issue is that I need to exclude Hibernate joinpoints
> regardless of where they're called from - it's not always from "my
> code".
>
> > Also, note that your original pointcut is rather expensive
> > (it would weave into *all join points* in Hibernate such as
> > field get/set, handler etc). If you were going to weave into
> > Hibernate you'd want something like:
> >
> > pointcut hibernate():
> > (execution(* *(..)) || execution(* new(..))) &&
> > within(org.hibernate..*);
>
> Thanks, I was a bit method-invocation-myopic there for a moment -
> didn't
> consider the other joinpoint types. :-)
>
> Dumb question (?): Why "execution(* new(..))" in the pointcut
> immediately above - isn't this covered by "execution(* *(..))"?
>
> Cheers,
> Neil
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>