Writing a Logging Aspect Using AspectJ
The first thing to do is to write the Aspect you're going to apply to the project's code which will run the Logifier plug-in. The goal here is not to do a tutorial on AspectJ (for this, see http://www.eclipse.org/aspectj/).
How do I do that?
Without further ado, here's the first part of the Aspect you'll develop:
import org.aspectj.lang.reflect.*; import org.aspectj.lang.*; publicaspect
Logging { /** * All public methods that have parameters. */pointcut
publicMethodsWithParameterCalls() : !execution(public * *()) && execution(public * *(..)); /** * All public static methods that have parameters. */pointcut
publicStaticMethodsWithParameterCalls() : !execution(public static * *()) && execution(public static * *(..)); [...]
AspectJ extends the Java language and adds new keywordsâamong
them aspect
and pointcut
. You can see here that the aspect
keyword
declares an Aspect (in lieu of the class
keyword), and pointcut
declares an identifier matching
some code. AspectJ has a little language to express how to match
portions of code. For example, the publicMethodsWithParameterCalls()
PointCut
Definition (PCD) translates to "whenever the code does
not execute a public method with no parameter AND whenever the code
executes a public method with parameters (signified by the .
. notation, which means zero or more
parameters)." Confused? In English, the previous logic-speak can be
translated to: execution of all public methods that have
parameters.
The next ...
Get Maven: A Developer's Notebook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.