Holger,
You are right! I could have done it far easier using around advice:
@Around("call(@com.plexibus.util.annotation.RunMultiple * *.*(..))")
public Object tryAgain(ProceedingJoinPoint jp) throws Throwable {
Method method = ((MethodSignature) jp.getSignature()).getMethod();
RunMultiple rmAnnotation = method.getAnnotation(RunMultiple.class);
Throwable err = null;
for (int i = 0; i < rmAnnotation.counter(); i++) {
if (logger.isTraceEnabled()) {
logger.trace("i: " + i);
}
try {
method.invoke(obj, jp.getArgs());
} catch (Throwable t) {
// do something with err...might need to resubmit job...
throw err;
}
}
if (logger.isTraceEnabled()) {
logger.trace("Finished Around advice");
}
return jp.proceed();
}
This eliminates all other methods (the other pointcuts and advices included)
in the RunMultipleAspect!
Thanks for refactoring suggestion, Holger :) Geez, now I feel like an idiot!
R
On Thu, Jul 3, 2008 at 2:16 PM, Holger Hoffstätte <[EMAIL PROTECTED]> wrote:
> Jack Jill wrote:
>
>> Andy,
>> Your advice :) worked like a charm!
>>
>> Showing only relevant changes to code (RunMultipleAspect.java)
>>
>> [EMAIL PROTECTED]("execution(@com.xxxx.util.annotation.RunMultiple *
>> *.*(..)) &&
>> !within(RunMultipleAspect) && !cflow(adviceexecution())")*
>> public void repeat(JoinPoint jp) throws ClassNotFoundException,
>> IllegalArgumentException, IllegalAccessException,
>> InvocationTargetException, InstantiationException {
>> ....
>> ....
>> * // if (++count < rmAnnotation.counter()) {
>>
> [..snip..]
>
> Hey :)
>
> I quickly read through your example and was wondering if you couldn't just
> use "around" to call proceed() n times in your loop. This should work the
> same but without all the hand-made reflection stuff and (as far as I can
> see?) no need for cflowbelow, no stack overflow etc. Would this work too?
>
> Holger
>
> _______________________________________________
> aspectj-users mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users