Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #12346

Re: Basic AspectJ Question

From Novice <novice@example..com>
Newsgroups comp.lang.java.programmer
Subject Re: Basic AspectJ Question
Date 2012-02-26 01:43 +0000
Organization Your Company
Message-ID <XnsA004D3E9F3444jpnasty@94.75.214.39> (permalink)
References <XnsA0049AF13CD2Djpnasty@94.75.214.39> <4f4968eb$0$295$14726298@news.sunsite.dk>

Show all headers | View raw


Arne Vajhøj <arne@vajhoej.dk> wrote in
news:4f4968eb$0$295$14726298@news.sunsite.dk: 

> On 2/25/2012 3:07 PM, Novice wrote:
>> I'm finding AspectJ very hard to get into, mostly because the manual
>> (AspectJ Language Guide) seems very weak to me.
>>
>> For example, a construct they use all the time in examples is
>> "target()". Clearly, this is an important thing. But I'm darned if I
>> can find anything in the manual that actually says what "target()" is
>> or does! They just seem to assume that it's obvious. But I've got a
>> pretty good imagination and I can imagine lots of things it might be,
>> each of which has different implications and significance....
>>
>> Can anyone enlighten me on what "target()" does? Even just an
>> indication of where it is explained in the manual would be fine. A
>> link to a better manual or tutorial on AspectJ, if there is such a
>> thing, would also be greatly appreciated.
> 
> Have you looked at the example at:
> 
> doc/faq.html#q:interfacesastypepatterns
> 
> ?
> 
>> And if anyone is aware of a manual or tutorial that explains how to
>> do X in Aspect J where there is a long list of X's, that would be
>> REALLY helpful. For instance, I'd like to write an "entering" log
>> entry for each method (and constructor) as I execute it and I want
>> that log entry to include the name of the class and method so I need
>> a pointcut and advice that is able to determine the class name and
>> method name that is being executed so that I can put it in the
>> logging statement. I'm picturing something like:
>>
>> pointcut entering() : execution ( * * (..));
>>
>> before() : entering() {
>>           this.logger.entering(className, methodName);
>>        }
>>
>> I know that some context information is available in each method but
>> I'm not sure how to get the class and method names so that I can put
>> them in the advice.
>>
>> That's why I'd love to find a "How to do X" list with lots of
>> different X's in it. With a bit of luck, what I'm trying to do would
>> be on the list and I get to what I want to do a little more quickly
>> than churning through the Language Guide...
> 
> Reading the docs and google a bit is sufficient for most AspectJ
> questions.
> 
> Regarding the specific question the the JoinPoint instance
> has the necessary info.
> 
> Example from my shelf:
> 
> import java.lang.reflect.*;
> 
> import org.aspectj.lang.*;
> import org.aspectj.lang.annotation.*;
> 
> @Aspect
> public class Trace {
>      @Pointcut("call(public * IntMath.*(..)) || call(public * 
> DoubleMath.*(..))")
>      public void mathtrace() { };
>      @Before("mathtrace()")
>      public void enter(JoinPoint thisJoinPoint) {
>          System.out.println("Enter " + thisJoinPoint.getSignature());
>      }
>      @AfterReturning("mathtrace()")
>      public void leave(JoinPoint thisJoinPoint) {
>          System.out.println("Exit " + thisJoinPoint.getSignature());
>      }
> }
> 
> (this example only trace methods in two specific classes, but ...)
> 
> Check:
>  
> http://www.eclipse.org/aspectj/doc/next/runtime-api/org/aspectj/lang/Jo
> inPoint.html to see what you can get out.
> 

Have I told you lately that you rock, Arne? ;-)

Thanks a lot! I was working through the manual hoping that they would say 
this somewhere along the line but it was taking a long time and I wasn't 
seeing anything like what I wanted. Your example was VERY helpful.

-- 
Novice

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Basic AspectJ Question Novice <novice@example..com> - 2012-02-25 20:07 +0000
  Re: Basic AspectJ Question Arne Vajhøj <arne@vajhoej.dk> - 2012-02-25 18:04 -0500
    Re: Basic AspectJ Question Novice <novice@example..com> - 2012-02-26 01:43 +0000
  Re: Basic AspectJ Question Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-02-25 21:52 -0400
    Re: Basic AspectJ Question Novice <novice@example..com> - 2012-02-26 14:34 +0000

csiph-web