org.springframework.aop.framework
Class AopProxyUtils

java.lang.Object
  extended by org.springframework.aop.framework.AopProxyUtils

public abstract class AopProxyUtils
extends Object

Utility methods for AOP proxy factories. Mainly for internal use within the AOP framework.

See AopUtils for a collection of generic AOP utility methods which do not depend on AOP framework internals.

Author:
Rod Johnson, Juergen Hoeller
See Also:
AopUtils

Constructor Summary
AopProxyUtils()
           
 
Method Summary
static Class[] completeProxiedInterfaces(AdvisedSupport advised)
          Determine the complete set of interfaces to proxy for the given AOP configuration.
static boolean equalsAdvisors(AdvisedSupport a, AdvisedSupport b)
          Check equality of the advisors behind the given AdvisedSupport objects.
static boolean equalsInProxy(AdvisedSupport a, AdvisedSupport b)
          Check equality of the proxies behind the given AdvisedSupport objects.
static boolean equalsProxiedInterfaces(AdvisedSupport a, AdvisedSupport b)
          Check equality of the proxied interfaces behind the given AdvisedSupport objects.
static Class[] proxiedUserInterfaces(Object proxy)
          Extract the user-specified interfaces that the given proxy implements, i.e.
static Class<?> ultimateTargetClass(Object candidate)
          Determine the ultimate target class of the given bean instance, traversing not only a top-level proxy but any number of nested proxies as well - as long as possible without side effects, that is, just for singleton targets.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AopProxyUtils

public AopProxyUtils()
Method Detail

ultimateTargetClass

public static Class<?> ultimateTargetClass(Object candidate)
Determine the ultimate target class of the given bean instance, traversing not only a top-level proxy but any number of nested proxies as well - as long as possible without side effects, that is, just for singleton targets.

Parameters:
candidate - the instance to check (might be an AOP proxy)
Returns:
the target class (or the plain class of the given object as fallback; never null)
See Also:
TargetClassAware.getTargetClass(), Advised.getTargetSource()

completeProxiedInterfaces

public static Class[] completeProxiedInterfaces(AdvisedSupport advised)
Determine the complete set of interfaces to proxy for the given AOP configuration.

This will always add the Advised interface unless the AdvisedSupport's "opaque" flag is on. Always adds the SpringProxy marker interface.

Returns:
the complete set of interfaces to proxy
See Also:
Advised, SpringProxy

proxiedUserInterfaces

public static Class[] proxiedUserInterfaces(Object proxy)
Extract the user-specified interfaces that the given proxy implements, i.e. all non-Advised interfaces that the proxy implements.

Parameters:
proxy - the proxy to analyze (usually a JDK dynamic proxy)
Returns:
all user-specified interfaces that the proxy implements, in the original order (never null or empty)
See Also:
Advised

equalsInProxy

public static boolean equalsInProxy(AdvisedSupport a,
                                    AdvisedSupport b)
Check equality of the proxies behind the given AdvisedSupport objects. Not the same as equality of the AdvisedSupport objects: rather, equality of interfaces, advisors and target sources.


equalsProxiedInterfaces

public static boolean equalsProxiedInterfaces(AdvisedSupport a,
                                              AdvisedSupport b)
Check equality of the proxied interfaces behind the given AdvisedSupport objects.


equalsAdvisors

public static boolean equalsAdvisors(AdvisedSupport a,
                                     AdvisedSupport b)
Check equality of the advisors behind the given AdvisedSupport objects.