Skip to main content

[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
> 



Back to the top