Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #12337
| Date | 2012-02-25 18:04 -0500 |
|---|---|
| From | Arne Vajhøj <arne@vajhoej.dk> |
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Basic AspectJ Question |
| References | <XnsA0049AF13CD2Djpnasty@94.75.214.39> |
| Message-ID | <4f4968eb$0$295$14726298@news.sunsite.dk> (permalink) |
| Organization | SunSITE.dk - Supporting Open source |
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/JoinPoint.html
to see what you can get out.
Arne
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar
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