Spring Framework

org.springframework.aop.support
Class DelegatingIntroductionInterceptor

java.lang.Object
  extended by org.springframework.aop.support.IntroductionInfoSupport
      extended by org.springframework.aop.support.DelegatingIntroductionInterceptor
All Implemented Interfaces:
java.io.Serializable, org.aopalliance.aop.Advice, org.aopalliance.intercept.Interceptor, org.aopalliance.intercept.MethodInterceptor, DynamicIntroductionAdvice, IntroductionInfo, IntroductionInterceptor

public class DelegatingIntroductionInterceptor
extends IntroductionInfoSupport
implements IntroductionInterceptor

Convenient implementation of the IntroductionInterceptor interface.

Subclasses merely need to extend this class and implement the interfaces to be introduced themselves. In this case the delegate is the subclass instance itself. Alternatively a separate delegate may implement the interface, and be set via the delegate bean property.

Delegates or subclasses may implement any number of interfaces. All interfaces except IntroductionInterceptor are picked up from the subclass or delegate by default.

The suppressInterface method can be used to suppress interfaces implemented by the delegate but which should not be introduced to the owning AOP proxy.

An instance of this class is serializable if the delegate is.

Since:
16.11.2003
Author:
Rod Johnson, Juergen Hoeller
See Also:
IntroductionInfoSupport.suppressInterface(java.lang.Class), DelegatePerTargetObjectIntroductionInterceptor, Serialized Form

Field Summary
 
Fields inherited from class org.springframework.aop.support.IntroductionInfoSupport
publishedInterfaces
 
Constructor Summary
protected DelegatingIntroductionInterceptor()
          Construct a new DelegatingIntroductionInterceptor.
  DelegatingIntroductionInterceptor(java.lang.Object delegate)
          Construct a new DelegatingIntroductionInterceptor, providing a delegate that implements the interfaces to be introduced.
 
Method Summary
protected  java.lang.Object doProceed(org.aopalliance.intercept.MethodInvocation mi)
          Proceed with the supplied MethodInterceptor.
 java.lang.Object invoke(org.aopalliance.intercept.MethodInvocation mi)
          Subclasses may need to override this if they want to perform custom behaviour in around advice.
 
Methods inherited from class org.springframework.aop.support.IntroductionInfoSupport
getInterfaces, implementInterfacesOnObject, implementsInterface, isMethodOnIntroducedInterface, suppressInterface
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.springframework.aop.DynamicIntroductionAdvice
implementsInterface
 

Constructor Detail

DelegatingIntroductionInterceptor

public DelegatingIntroductionInterceptor(java.lang.Object delegate)
Construct a new DelegatingIntroductionInterceptor, providing a delegate that implements the interfaces to be introduced.

Parameters:
delegate - the delegate that implements the introduced interfaces

DelegatingIntroductionInterceptor

protected DelegatingIntroductionInterceptor()
Construct a new DelegatingIntroductionInterceptor. The delegate will be the subclass, which must implement additional interfaces.

Method Detail

invoke

public java.lang.Object invoke(org.aopalliance.intercept.MethodInvocation mi)
                        throws java.lang.Throwable
Subclasses may need to override this if they want to perform custom behaviour in around advice. However, subclasses should invoke this method, which handles introduced interfaces and forwarding to the target.

Specified by:
invoke in interface org.aopalliance.intercept.MethodInterceptor
Throws:
java.lang.Throwable

doProceed

protected java.lang.Object doProceed(org.aopalliance.intercept.MethodInvocation mi)
                              throws java.lang.Throwable
Proceed with the supplied MethodInterceptor. Subclasses can override this method to intercept method invocations on the target object which is useful when an introduction needs to monitor the object that it is introduced into. This method is never called for MethodInvocations on the introduced interfaces.

Throws:
java.lang.Throwable

Spring Framework