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/cflowpointcutswiththird-party jars

Right, thanks Wes.  

> -----Original Message-----
> From: aspectj-users-bounces@xxxxxxxxxxx 
> [mailto:aspectj-users-bounces@xxxxxxxxxxx] On Behalf Of Wes
> Sent: Saturday, August 19, 2006 11:42 AM
> To: aspectj-users@xxxxxxxxxxx
> Subject: RE: [aspectj-users] Question about using 
> within/cflowpointcutswiththird-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
> > 
> 
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
> 


Back to the top