[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[aspectj-users] around two methods ?
|
N.B.: I posted this message two weeksago. I dare to
re-post it becasue i would really need help. Thanks.
Hi,
A question that may sound stupid to someone:
1) The simple case
Let's assume i have a Java program such as:
...
method1();
method2();
...
and i want to add an aspect and get the result:
...
if (cond) {
method1();
} else {
method1bis();
}
method2();
It is fine, i only need an around call (void
method1()), i test the cond then proceed() or execute
method1bis().
2)
But let's assume i have this:
method1();
method2();
method3();
and i want to add an aspect to get the result:
if (cond) {
method1();
method2();
} else {
method1bis();
method2bis();
//method4(); as many as wanted
}
method3();
And here i don't know. At the moment i have two
solutions:
- i encapsulate method1 and method2 into void
method12 { method1(); method2();} and use the same
kind of around advice as before. But for some reasons
(in complex cases) this method is not convenient,
- i use one around advice for method1 and one for
method2. In this around i execute as many methods of
the "else" path and keep trace of which branch i am in
with a boolean or int. In that case for instance:
boolean elsePath = false;
void around(): call (void method1()) {
if (cond) {
proceed();
} else {
elsePath = true;
method1bis();
method2bis();
//method4(); as many as wanted
}
}
void around(): call (void method2()) {
if (elsePath) {
return;
} else {
proceed();
}
}
But this solution would look very ugly in complex
cases.
Does anybody have another solution to do this ?
OK, i hope the question won't be harder to understand
(due to unclearness) than the problem to solve.
Thank you everybody.
Julien BIEREN
Computer Science Student.
___________________________________________________________
Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français !
Yahoo! Mail : http://fr.mail.yahoo.com