org.nanocontainer.aop
Interface AspectsContainer

All Known Subinterfaces:
AspectablePicoContainer, AspectsManager
All Known Implementing Classes:
DynaopAspectsManager

public interface AspectsContainer

Represents the collection of aspects (pointuts + advice) to be applied to a Pico container. Provides methods for registering mixin and interceptor advice. Advice can be applied to all components in the container that match a pointcut, or advice can be applied to just one component. Advice objects may themselves be components in the container, with dependencies on other components.

Version:
$Revision: 3144 $
Author:
Stephen Molitor

Method Summary
 PointcutsFactory getPointcutsFactory()
          Produces a pointcuts factory that can be used to create pointcuts to be used in aspects registered with this AspectsContainer.
 void registerInterceptor(ClassPointcut classPointcut, MethodPointcut methodPointcut, org.aopalliance.intercept.MethodInterceptor interceptor)
          Registers container scoped interceptor advice.
 void registerInterceptor(ClassPointcut classPointcut, MethodPointcut methodPointcut, java.lang.Object interceptorComponentKey)
          Registers container supplied container scoped interceptor advice.
 void registerInterceptor(ComponentPointcut componentPointcut, MethodPointcut methodPointcut, org.aopalliance.intercept.MethodInterceptor interceptor)
          Registers component scoped interceptor advice.
 void registerInterceptor(ComponentPointcut componentPointcut, MethodPointcut methodPointcut, java.lang.Object interceptorComponentKey)
          Registers component scoped interceptor advice.
 void registerInterfaces(ClassPointcut classPointcut, java.lang.Class[] interfaces)
          Adds interfaces to classes picked by the class pointcut.
 void registerInterfaces(ComponentPointcut componentPointcut, java.lang.Class[] interfaces)
          Adds interfaces to components picked by the component pointcut.
 void registerMixin(ClassPointcut classPointcut, java.lang.Class mixinClass)
          Registers container scoped mixin advice.
 void registerMixin(ClassPointcut classPointcut, java.lang.Class[] interfaces, java.lang.Class mixinClass)
          Registers container scoped mixin advice.
 void registerMixin(ComponentPointcut componentPointcut, java.lang.Class mixinClass)
          Registers component scoped mixin advice.
 void registerMixin(ComponentPointcut componentPointcut, java.lang.Class[] interfaces, java.lang.Class mixinClass)
          Registers component scoped mixin advice.
 

Method Detail

registerInterceptor

void registerInterceptor(ClassPointcut classPointcut,
                         MethodPointcut methodPointcut,
                         org.aopalliance.intercept.MethodInterceptor interceptor)
Registers container scoped interceptor advice. The advice will be applied to all components in the container whose class satisfies the classPointcut. The interceptor will only intercept methods that match the methodPointcut.

Parameters:
classPointcut - classes to apply the interceptor to.
methodPointcut - methods to apply the interceptor to.
interceptor - the interceptor advice object.

registerInterceptor

void registerInterceptor(ComponentPointcut componentPointcut,
                         MethodPointcut methodPointcut,
                         org.aopalliance.intercept.MethodInterceptor interceptor)
Registers component scoped interceptor advice. The advice will be applied to all components in the container whose key satisfies componentPointcut. The interceptor will only intercept methods that match the methodPointcut.

Parameters:
componentPointcut - components to apply the interceptor to.
methodPointcut - methods to apply the interceptor to.
interceptor - the interceptor advice object.

registerInterceptor

void registerInterceptor(ClassPointcut classPointcut,
                         MethodPointcut methodPointcut,
                         java.lang.Object interceptorComponentKey)
Registers container supplied container scoped interceptor advice. The interceptor advice object itself is a component in the container, specified by interceptorComponentKey. The advice will be applied to all components in the container whose class satisfies the classPointcut. The interceptor will only intercept methods that match the methodPointcut.

Parameters:
classPointcut - classes to apply the interceptor to.
methodPointcut - methods to apply the interceptor to.
interceptorComponentKey - the interceptor component key.

registerInterceptor

void registerInterceptor(ComponentPointcut componentPointcut,
                         MethodPointcut methodPointcut,
                         java.lang.Object interceptorComponentKey)
Registers component scoped interceptor advice. The interceptor advice object itself is a component in the container, specified by the interceptorComponentKey. The advice will be applied to all components in the container whose key satisfies componentPointcut. The interceptor will only intercept methods that match the methodPointcut.

Parameters:
componentPointcut - components to apply the interceptor to.
methodPointcut - methods to apply the interceptor to.
interceptorComponentKey - the interceptor component key.

registerMixin

void registerMixin(ClassPointcut classPointcut,
                   java.lang.Class[] interfaces,
                   java.lang.Class mixinClass)
Registers container scoped mixin advice. The mixin will be added to all components in the container whose class satisfies the classPointcut.

If a component of type mixinClass has been registered in the container, that component will be used as the mixin. Otherwise a new object of type mixinClass will be instantiated each time the mixin is applied to a component. Any dependencies the mixin has will be supplied from components in the container, or, if there are no dependencies, the default constructor will be invoked to instantiate the mixin.

Parameters:
classPointcut - classes to add mixin to.
interfaces - interfaces the mixin implements.
mixinClass - the mixin implementation.

registerMixin

void registerMixin(ComponentPointcut componentPointcut,
                   java.lang.Class[] interfaces,
                   java.lang.Class mixinClass)
Registers component scoped mixin advice. The mixin will be added to all components in the container whose key satisfies the componentPointcut.

Parameters:
componentPointcut - classes to add mixin to.
interfaces - interfaces the mixin implements.
mixinClass - the mixin implementation.
See Also:
for details on how mixinClass gets instantiated.

registerMixin

void registerMixin(ClassPointcut classPointcut,
                   java.lang.Class mixinClass)
Registers container scoped mixin advice. The mixin will be added to all components in the container whose class satisfies the classPointcut. Convenience method that uses all interfaces implemented by the mixin class.

Parameters:
classPointcut - classes to add mixin to.
mixinClass - the mixin implementation.
See Also:
for details on how mixinClass gets instantiated.

registerMixin

void registerMixin(ComponentPointcut componentPointcut,
                   java.lang.Class mixinClass)
Registers component scoped mixin advice. The mixin will be added to all components in the container whose key satisfies the componentPointcut. Convenience method that uses all interfaces implemented by the mixin class.

Parameters:
componentPointcut - classes to add mixin to.
mixinClass - the mixin implementation.
See Also:
for details on how mixinClass gets instantiated.

registerInterfaces

void registerInterfaces(ClassPointcut classPointcut,
                        java.lang.Class[] interfaces)
Adds interfaces to classes picked by the class pointcut.

This can be handy when you want to add an aggregate helper interface that extends all the mixin interfaces added, to avoid the need for casting. Note that the interfaces will not be added if no advice (interceptor or mixin) has been applied to the component.

Parameters:
classPointcut - classes to add interfaces to.
interfaces - the interfaces to add.

registerInterfaces

void registerInterfaces(ComponentPointcut componentPointcut,
                        java.lang.Class[] interfaces)
Adds interfaces to components picked by the component pointcut.

Parameters:
componentPointcut - components to add interfaces to.
interfaces - the interfaces to add.
See Also:
for notes on using this method.

getPointcutsFactory

PointcutsFactory getPointcutsFactory()
Produces a pointcuts factory that can be used to create pointcuts to be used in aspects registered with this AspectsContainer. Note that you are not limited to pointcuts produced by this factory; any pointcut that implements the appropriate ClassPointcut, MethodPointcut or ComponentPointcut will work.

Returns:
a pointcuts factory.


Copyright © 2003-2010 Codehaus. All Rights Reserved.