[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] changing pointcut at runtime
|
Thank both for replies.
Write some pointcut before launch the application means (for my purpose)
that I must know all the components within target program and creates an
"ad hoc" aspect that contains one pointcut for one component of the
target program. So for large application this solution is not applicable
or is not the best solution.
I am not limited to modify existing pointcut. Also I can insert (
theoretically ) a new pointcut or create a new classes to extends that
old and so on... The problem is what and how I can modify code at
runtime? ( EX: I can modify field at runtime with reflection.) There is
any way to insert some piece of code at runtime?
To Wes:
I don't know if I have understood well your final clause: the
well-defined start/end point in my aspect application is just the
control flow of main method.
thank you, best regards
Wes ha scritto:
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
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users
--
Stalsy
HomePage --:. http://www.stalsy.it
Blog --:. http://blog.stalsy.com
Public Key --:. http://www.stalsy.it/key.php
E-Mail --:. stalsy@xxxxxxxxx
ICQ --:. 302346155
MSN --:. faricci@xxxxxxxx