[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] Modifying the parameters of methods with arbitrarysignatures
|
That works for the purposes of getting them, but I need to feed them
back into the proceed call, don't I?
Suppose I have two methods:
public String methodA (String s1, int value2, MyObject foo) {}
public boolean methodB (MyOtherObject bar) {}
I want to write _one_ aspect that can take in those values (note that
the String s1 and int value2 in the first method are _immutable_ -- I
have to somehow replace those values if I want to change them) and call
proceed with the modified values. The key here is the desire for one
aspect for both (and other) methods.
If I limit the changes to alterations of the objects in the input
arguments, then I'm okay.
Or, am I overthinking it? Can I create a bit of advice like this? (note
I've moved over to annotation-based aspects for some other reasons,
although I could move back if necessary)
@Around ("myPointCut() && args(args) && target (delegate)")
public Object interceptor (ProceedingJoinPoint thisJoinPoint, Object[]
args, MyDelegate delegate) {
Object[] modifiedArgs = doSomethingToArgs (args);
return thisJoinPoint.proceed (modifiedArgs, delegate);
}
Ron Bodkin wrote:
You will want to use thisJoinPoint.getArgs() to get the array of any number
of arguments at the current join point. See the AspectJ user guide (or a
good book like AspectJ in Action or Eclipse AspectJ) for more details.
-----Original Message-----
From: aspectj-users-bounces@xxxxxxxxxxx
[mailto:aspectj-users-bounces@xxxxxxxxxxx] On Behalf Of Chris Rose
Sent: Wednesday, October 31, 2007 1:40 PM
To: aspectj-users@xxxxxxxxxxx
Subject: [aspectj-users] Modifying the parameters of methods with
arbitrarysignatures
I want to use aspectj to provide a generic interceptor framework where
we can plug in code at any point to modify input parameters to our methods.
Ideally, what I want is something like this, but I'm not sure how to
accomplish it in aspectj (this uses a bastardization of the Java5
varargs syntax, below, for illustrative purposes).
around(Object... args): methodPointCut(args(args)) {
newArgs = invokeHook (args);
proceed(newArgs);
}
Is there any way to do this without needing to enumerate the parameters
in the aspect?
--
Chris Rose
Developer Planet Consulting Group
(780) 577-8433
crose@xxxxxxxxxxxx