Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] context information in aspect fields

Hi,

It may or may not be useful to you, but the Perf4j project[1] uses
AspectJ to instrument code with stopwatches, providing generic
around-method timing via an @Profiled annotation.  There's also an
unreleased enhancement in github which allows methods to be timed
without annotating them (by completing an abstract pointcut), so no
source-changes requires.

Best
Brett

[1] http://perf4j.codehaus.org/

On 6 November 2012 21:29, Reik Schatz <reik.schatz@xxxxxxxxx> wrote:
> 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@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>


Back to the top