Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] changing pointcut at runtime

A longstanding and interesting question...

As Eric mentioned, you can advise some join points and then include a check
at each one whether to run the advice; you might implement the check using 
Pointcut or reflection or what have you.  You cannot change an existing 
pointcut, but you can decide what code to run.  (With some cheating you can
change the result of an if(..) PCD, but it's clearer to change the advice.)

But you're foraging around a proposal that sounds interesting: to declare
programmatically at runtime a concrete aspect using LTW that (only) 
affects the loading of subsequent classes.  In principle this is doable 
(at some coherency risk vis-a-vis any classes loaded first), so the 
question becomes whether you can make a compelling use case, particularly
if it involves a well-defined start/end point for defining subaspects
programmatically.

Wes

> ------------Original Message------------
> From: stalsy <stalsy@xxxxxxxxx>
> To: aspectj-users@xxxxxxxxxxx
> Date: Sun, Oct-1-2006 11:40 AM
> Subject: [aspectj-users] changing pointcut at runtime
>
> 
> Hi all,
> 
> I'm a newbie in aspectj and I need to change a pointcut at runtime 
> based on
> the user choice.
> 
> I receive an input String from the user keyboard and I want create a
> pointcut based on that input. Initially I've thinking at aspect 
> reflection,
> but there isn't any "set" method for this pourpose.
> 
> String comp = InitVars.getFilter(); // get an input from user keyboard
> ....
> AjType dt = AjTypeSystem.getAjType(DynTrace.class); // the aspect
> (DynTrace.aj) in which I would insert new pointcut
> Pointcut pc = dt.getPointcut("filter"); // take the old pointcut
> PointcutExpression pce = pc.getPointcutExpression(); // take the 
> pointcut
> old expression
> 
> now how can I insert new pointcut expression( value of variable "comp" 
> ) in
> this pointcut? There is another way to make this?
> 
> ES: 
> 
> I get the input "component" from user. Than I would change the old 
> pointcut 
> public pointcut filter(): Scope() && execution(* *(..));
> to
> public pointcut filter(): Scope() && execution(* component(..));
> 
> where component in pointcut expression is the value of component 
> variable.
> 
> someone can help me, please?
> 
> thank you in advance for replies, best regards
> -- 
> View this message in context: 
> http://www.nabble.com/changing-pointcut-at-runtime-tf2365784.html#a6590719
> Sent from the AspectJ - users mailing list archive at Nabble.com.
> 
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
> 



Back to the top