dynaop
Class Aspects

java.lang.Object
  extended bydynaop.Aspects
Direct Known Subclasses:
BshAspects

public class Aspects
extends java.lang.Object

Collection of aspects. Aspects map advice to pointcuts.

Treats Object.class as a special case interface allowing mixins or method interceptors to implement hashCode(), equals(Object), and toString().

Author:
Bob Lee (crazybob@crazybob.org)

Constructor Summary
Aspects()
           
 
Method Summary
static Aspects getInstance()
          Gets default instance. Defaults to BshAspects.
 void interceptor(ClassPointcut classPointcut, MethodPointcut methodPointcut, java.lang.Class interceptorClass, Closure initializer)
          Adds method interceptor instance to methods picked by pointcuts.
 void interceptor(ClassPointcut classPointcut, MethodPointcut methodPointcut, Interceptor interceptor)
          Adds method interceptor instance to methods picked by pointcuts.
 void interceptor(ClassPointcut classPointcut, MethodPointcut methodPointcut, InterceptorFactory factory)
          Adds custom interceptor factory to methods picked by pointcuts.
 void interfaces(ClassPointcut classPointcut, java.lang.Class[] interfaces)
          Adds interfaces to classes picked by pointcut.
 void mixin(ClassPointcut classPointcut, java.lang.Class[] interfaces, java.lang.Class mixinClass, Closure initializer)
          Adds mixin instance to classes picked by pointcut.
 void mixin(ClassPointcut classPointcut, java.lang.Class[] interfaces, MixinFactory mixinFactory)
          Adds custom mixin factory to classes picked by pointcut.
 void mixin(ClassPointcut classPointcut, java.lang.Class mixinClass, Closure initializer)
          Convenience method.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Aspects

public Aspects()
Method Detail

interfaces

public void interfaces(ClassPointcut classPointcut,
                       java.lang.Class[] interfaces)
                throws ConfigurationException
Adds interfaces to classes picked by pointcut.

Parameters:
classPointcut - Classes to add interfaces to.
interfaces - Interfaces to add.
Throws:
ConfigurationException

mixin

public void mixin(ClassPointcut classPointcut,
                  java.lang.Class[] interfaces,
                  java.lang.Class mixinClass,
                  Closure initializer)
           throws ConfigurationException
Adds mixin instance to classes picked by pointcut. Supports ProxyAware. Creates mixin instances using default constructor. Executes initializer against mixin instance after creation and before usage.

Parameters:
classPointcut - Classes to add mixin to.
interfaces - Interfaces mixin implements.
mixinClass - Mixin implementation.
initializer - Code that initializes mixin instance. Can be null.
Throws:
ConfigurationException

mixin

public void mixin(ClassPointcut classPointcut,
                  java.lang.Class mixinClass,
                  Closure initializer)
           throws ConfigurationException
Convenience method. Uses all interfaces implemented by mixin class.

Throws:
ConfigurationException

mixin

public void mixin(ClassPointcut classPointcut,
                  java.lang.Class[] interfaces,
                  MixinFactory mixinFactory)
           throws ConfigurationException
Adds custom mixin factory to classes picked by pointcut.

Throws:
ConfigurationException

interceptor

public void interceptor(ClassPointcut classPointcut,
                        MethodPointcut methodPointcut,
                        Interceptor interceptor)
                 throws ConfigurationException
Adds method interceptor instance to methods picked by pointcuts. The interceptor instance may be shared between multiple proxies. Supports ProxyAware.

Parameters:
classPointcut - Picks target classes.
methodPointcut - Picks methods to add interceptor to.
interceptor - Interceptor instance.
Throws:
ConfigurationException

interceptor

public void interceptor(ClassPointcut classPointcut,
                        MethodPointcut methodPointcut,
                        java.lang.Class interceptorClass,
                        Closure initializer)
                 throws ConfigurationException
Adds method interceptor instance to methods picked by pointcuts. Creates an interceptor instance per proxy instance. Supports ProxyAware. Creates interceptor instances using default constructor. Executes initializer against interceptor instance after creation and before usage.

Parameters:
classPointcut - Picks target classes.
methodPointcut - Picks methods to add interceptor to.
interceptorClass - Interceptor class.
initializer - Code that initializes mixin instance. Can be null.
Throws:
ConfigurationException

interceptor

public void interceptor(ClassPointcut classPointcut,
                        MethodPointcut methodPointcut,
                        InterceptorFactory factory)
                 throws ConfigurationException
Adds custom interceptor factory to methods picked by pointcuts.

Parameters:
classPointcut - Picks target classes.
methodPointcut - Picks methods to add interceptor to.
factory - Interceptor factory.
Throws:
ConfigurationException

getInstance

public static Aspects getInstance()
Gets default instance. Defaults to BshAspects. Specify alternate implementation class using "dynaop.aspects" system property. Creates Aspects instance using default constructor.

See Also:
BshAspects for configuration instructions.