org.springframework.aop.support
Class IntroductionInfoSupport

java.lang.Object
  extended by org.springframework.aop.support.IntroductionInfoSupport
All Implemented Interfaces:
java.io.Serializable, IntroductionInfo
Direct Known Subclasses:
DelegatePerTargetObjectIntroductionInterceptor, DelegatingIntroductionInterceptor

public class IntroductionInfoSupport
extends java.lang.Object
implements IntroductionInfo, java.io.Serializable

Support for implementations of IntroductionInfo.

Allows subclasses to conveniently add all interfaces from a given object, and to suppress interfaces that should not be added. Also allows for querying all introduced interfaces.

Author:
Rod Johnson, Juergen Hoeller
See Also:
Serialized Form

Field Summary
protected  java.util.Set<java.lang.Class> publishedInterfaces
           
private  java.util.Map<java.lang.reflect.Method,java.lang.Boolean> rememberedMethods
           
 
Constructor Summary
IntroductionInfoSupport()
           
 
Method Summary
 java.lang.Class[] getInterfaces()
          Return the additional interfaces introduced by this Advisor or Advice.
protected  void implementInterfacesOnObject(java.lang.Object delegate)
          Publish all interfaces that the given delegate implements at the proxy level.
 boolean implementsInterface(java.lang.Class ifc)
          Check whether the specified interfaces is a published introduction interface.
protected  boolean isMethodOnIntroducedInterface(MethodInvocation mi)
          Is this method on an introduced interface?
private  void readObject(java.io.ObjectInputStream ois)
          This method is implemented only to restore the logger.
 void suppressInterface(java.lang.Class intf)
          Suppress the specified interface, which may have been autodetected due to the delegate implementing it.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

publishedInterfaces

protected final java.util.Set<java.lang.Class> publishedInterfaces

rememberedMethods

private transient java.util.Map<java.lang.reflect.Method,java.lang.Boolean> rememberedMethods
Constructor Detail

IntroductionInfoSupport

public IntroductionInfoSupport()
Method Detail

suppressInterface

public void suppressInterface(java.lang.Class intf)
Suppress the specified interface, which may have been autodetected due to the delegate implementing it. Call this method to exclude internal interfaces from being visible at the proxy level.

Does nothing if the interface is not implemented by the delegate.

Parameters:
intf - the interface to suppress

getInterfaces

public java.lang.Class[] getInterfaces()
Description copied from interface: IntroductionInfo
Return the additional interfaces introduced by this Advisor or Advice.

Specified by:
getInterfaces in interface IntroductionInfo
Returns:
the introduced interfaces

implementsInterface

public boolean implementsInterface(java.lang.Class ifc)
Check whether the specified interfaces is a published introduction interface.

Parameters:
ifc - the interface to check
Returns:
whether the interface is part of this introduction

implementInterfacesOnObject

protected void implementInterfacesOnObject(java.lang.Object delegate)
Publish all interfaces that the given delegate implements at the proxy level.

Parameters:
delegate - the delegate object

isMethodOnIntroducedInterface

protected final boolean isMethodOnIntroducedInterface(MethodInvocation mi)
Is this method on an introduced interface?

Parameters:
mi - the method invocation
Returns:
whether the invoked method is on an introduced interface

readObject

private void readObject(java.io.ObjectInputStream ois)
                 throws java.io.IOException,
                        java.lang.ClassNotFoundException
This method is implemented only to restore the logger. We don't make the logger static as that would mean that subclasses would use this class's log category.

Throws:
java.io.IOException
java.lang.ClassNotFoundException