Thanks, both approaches are good i think. However if you want to code this really clean, I guess even with a ConcurrentHashMap in the Map approach you'd still have to do some locking for the situation where 2 threads are calling the annotated method and Map<String, Timer> is still empty. Same goes for the perthis approach if the non-static member is created inside the advice, correct?
On Tue, Nov 6, 2012 at 11:31 AM, Romain Muller <romain.mul...@esial.net>wrote: > You can't do this with a "final" TIMER field. You may want to have a > "private final Map<String, Timer> timers" in which you'd associate Timers > to MethodNames. > > The MethodName you can get from thisJoinPoint(StaticPart) - you may even > be able to use thisJoinPointStaticPart.toString() for that purpose. > * > [* *Romain Muller* *| *Software Development Engineer *|* +33 *(0)6* 48 *25 > * 66 *70* *|* romain.mul...@esial.net *]* > > Le 6 nov. 2012 à 11:29, Reik Schatz <reik.sch...@gmail.com> a écrit : > > Hi, > > I am working on a timer example using AspectJ similar to this logging > example: > http://adamgent.com/post/5479576926/the-python-decorator-pattern-for-java-using-aspectj > > However the Timer (not Logger) I am using takes among others a String > argument which describes the context of the place where you are timing > (i.e. if you are timing a save method in a DAO class, the argument would be > "save"). Now that the Timer is defined in the Aspect, is it possible to > retrieve some context information outside of the pointcut or advice > definition? Ideally I want to do something like: > > public aspect TimedAspect { > > private final Timer TIMER = Metrics.newTimer(getClass(), "TARGET > METHOD NAME HERE"); > > pointcut timedExecution() : execution(@Timed * * (..)); // execution > of a annotated method > > Object around() : timedExecution() { > final TimerContext context = TIMER.time(); > try { > return proceed(); > } finally { > context.stop(); > } > } > } > > For me it looks like the only way is to create the Timer object inside the > advice and use the context information available. > _______________________________________________ > aspectj-users mailing list > aspectj-users@eclipse.org > https://dev.eclipse.org/mailman/listinfo/aspectj-users > > > > _______________________________________________ > aspectj-users mailing list > aspectj-users@eclipse.org > https://dev.eclipse.org/mailman/listinfo/aspectj-users > >
_______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/aspectj-users