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.*; publicaspectLogging { /** * All public methods that have parameters. */pointcutpublicMethodsWithParameterCalls() : !execution(public * *()) && execution(public * *(..)); /** * All public static methods that have parameters. */pointcutpublicStaticMethodsWithParameterCalls() : !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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access