net.sf.cglib.proxy

Class MethodProxy

public class MethodProxy extends Object

Classes generated by Enhancer pass this object to the registered MethodInterceptor objects when an intercepted method is invoked. It can be used to either invoke the original method, or call the same method on a different object of the same type.

Version: $Id: MethodProxy.java,v 1.12 2004/06/24 21:15:20 herbyderby Exp $

Method Summary
static MethodProxycreate(ClassLoader loader, Class c1, Class c2, String desc, String name1, String name2)
For internal use by Enhancer only; see the FastMethod class for similar functionality.
static MethodProxyfind(Class type, Signature sig)
Return the MethodProxy used when intercepting the method matching the given signature.
SignaturegetSignature()
Return the signature of the proxied method.
intgetSuperIndex()
Return the FastClass method index for the method used by MethodProxy.
StringgetSuperName()
Return the name of the synthetic method created by CGLIB which is used by MethodProxy to invoke the superclass (non-intercepted) method implementation.
Objectinvoke(Object obj, Object[] args)
Invoke the original method, on a different object of the same type.
ObjectinvokeSuper(Object obj, Object[] args)
Invoke the original (super) method on the specified object.

Method Detail

create

public static MethodProxy create(ClassLoader loader, Class c1, Class c2, String desc, String name1, String name2)
For internal use by Enhancer only; see the FastMethod class for similar functionality.

find

public static MethodProxy find(Class type, Signature sig)
Return the MethodProxy used when intercepting the method matching the given signature.

Parameters: type the class generated by Enhancer sig the signature to match

Returns: the MethodProxy instance, or null if no applicable matching method is found

Throws: IllegalArgumentException if the Class was not created by Enhancer or does not use a MethodInterceptor

getSignature

public Signature getSignature()
Return the signature of the proxied method.

getSuperIndex

public int getSuperIndex()
Return the FastClass method index for the method used by MethodProxy. This index uniquely identifies the method within the generated proxy, and therefore can be useful to reference external metadata.

See Also: MethodProxy

getSuperName

public String getSuperName()
Return the name of the synthetic method created by CGLIB which is used by MethodProxy to invoke the superclass (non-intercepted) method implementation. The parameter types are the same as the proxied method.

invoke

public Object invoke(Object obj, Object[] args)
Invoke the original method, on a different object of the same type.

Parameters: obj the compatible object; recursion will result if you use the object passed as the first argument to the MethodInterceptor (usually not what you want) args the arguments passed to the intercepted method; you may substitute a different argument array as long as the types are compatible

Throws: Throwable the bare exceptions thrown by the called method are passed through without wrapping in an InvocationTargetException

See Also: MethodInterceptor

invokeSuper

public Object invokeSuper(Object obj, Object[] args)
Invoke the original (super) method on the specified object.

Parameters: obj the enhanced object, must be the object passed as the first argument to the MethodInterceptor args the arguments passed to the intercepted method; you may substitute a different argument array as long as the types are compatible

Throws: Throwable the bare exceptions thrown by the called method are passed through without wrapping in an InvocationTargetException

See Also: MethodInterceptor

Copyright (c) 2001 - Apache Software Foundation