Top Description Inners Fields Constructors Methods
com.google.inject.internal

pack-priv final Class InterceptorStackCallback

extends Object
implements InvocationHandler
Class Inheritance
All Implemented Interfaces
java.lang.reflect.InvocationHandler
Static Imports
com.google.inject.internal.BytecodeGen.ENHANCER_BY_GUICE_MARKER

Intercepts a method with a stack of interceptors.

Acts as a JDK InvocationHandler so the proxy using it can avoid Guice-specific types.

Author
[email protected] (Bob Lee)

Nested and Inner Type Summary

Modifier and TypeClass and Description
private class

Field Summary

Modifier and TypeField and Description
private static final String
pack-priv final MethodInterceptor[]
pack-priv final Method
pack-priv final BiFunction<Object, Object[], Object>

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public Object
invoke(Object
the proxy instance that the method was invoked on
proxy
,
Method
the Method instance corresponding to the interface method invoked on the proxy instance. The declaring class of the Method object will be the interface that the method was declared in, which may be a superinterface of the proxy interface that the proxy class inherits the method through.
unused
,
Object[]
an array of objects containing the values of the arguments passed in the method invocation on the proxy instance, or null if interface method takes no arguments. Arguments of primitive types are wrapped in instances of the appropriate primitive wrapper class, such as java.lang.Integer or java.lang.Boolean.
arguments
)

Implements java.lang.reflect.InvocationHandler.invoke.

Processes a method invocation on a proxy instance and returns the result.
private void
pruneStacktrace(Throwable throwable)

Removes stacktrace elements related to AOP internal mechanics from the throwable's stack trace and any causes it may have.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

GUICE_INTERNAL_AOP_PACKAGEback to summary
private static final String GUICE_INTERNAL_AOP_PACKAGE
interceptorsback to summary
pack-priv final MethodInterceptor[] interceptors
methodback to summary
pack-priv final Method method
superInvokerback to summary
pack-priv final BiFunction<Object, Object[], Object> superInvoker

Constructor Detail

InterceptorStackCallbackback to summary
public InterceptorStackCallback(Method method, List<MethodInterceptor> interceptors, BiFunction<Object, Object[], Object> superInvoker)

Method Detail

invokeback to summary
public Object invoke(Object proxy, Method unused, Object[] arguments) throws Throwable

Implements java.lang.reflect.InvocationHandler.invoke.

Doc from java.lang.reflect.InvocationHandler.invoke.

Processes a method invocation on a proxy instance and returns the result. This method will be invoked on an invocation handler when a method is invoked on a proxy instance that it is associated with.

Parameters
proxy:Object

the proxy instance that the method was invoked on

unused:Method

the Method instance corresponding to the interface method invoked on the proxy instance. The declaring class of the Method object will be the interface that the method was declared in, which may be a superinterface of the proxy interface that the proxy class inherits the method through.

arguments:Object[]

an array of objects containing the values of the arguments passed in the method invocation on the proxy instance, or null if interface method takes no arguments. Arguments of primitive types are wrapped in instances of the appropriate primitive wrapper class, such as java.lang.Integer or java.lang.Boolean.

Returns:Object

the value to return from the method invocation on the proxy instance. If the declared return type of the interface method is a primitive type, then the value returned by this method must be an instance of the corresponding primitive wrapper class; otherwise, it must be a type assignable to the declared return type. If the value returned by this method is null and the interface method's return type is primitive, then a NullPointerException will be thrown by the method invocation on the proxy instance. If the value returned by this method is otherwise not compatible with the interface method's declared return type as described above, a ClassCastException will be thrown by the method invocation on the proxy instance.

Annotations
@Override
Exceptions
Throwable:
the exception to throw from the method invocation on the proxy instance. The exception's type must be assignable either to any of the exception types declared in the throws clause of the interface method or to the unchecked exception types java.lang.RuntimeException or java.lang.Error. If a checked exception is thrown by this method that is not assignable to any of the exception types declared in the throws clause of the interface method, then an UndeclaredThrowableException containing the exception that was thrown by this method will be thrown by the method invocation on the proxy instance.
pruneStacktraceback to summary
private void pruneStacktrace(Throwable throwable)

Removes stacktrace elements related to AOP internal mechanics from the throwable's stack trace and any causes it may have.

com.google.inject.internal back to summary

private Class InterceptorStackCallback.InterceptedMethodInvocation

extends Object
implements MethodInvocation
Class Inheritance
  • java.lang.Object
  • com.google.inject.internal.InterceptorStackCallback.InterceptedMethodInvocation
All Implemented Interfaces
org.aopalliance.intercept.MethodInvocation, org.aopalliance.intercept.Invocation, org.aopalliance.intercept.Joinpoint

Field Summary

Modifier and TypeField and Description
pack-priv final Object[]
pack-priv final int
pack-priv final Object

Constructor Summary

AccessConstructor and Description
public
InterceptedMethodInvocation(Object proxy, Object[] arguments, int interceptorIndex)

Method Summary

Modifier and TypeMethod and Description
public Object[]
getArguments()

Implements org.aopalliance.intercept.Invocation.getArguments.

Get the arguments as an array object.
public Method
getMethod()

Implements org.aopalliance.intercept.MethodInvocation.getMethod.

Get the method being called.
public AccessibleObject
getStaticPart()

Implements org.aopalliance.intercept.Joinpoint.getStaticPart.

Return the static part of this joinpoint.
public Object
getThis()

Implements org.aopalliance.intercept.Joinpoint.getThis.

Return the object that holds the current joinpoint's static part.
public Object
proceed()

Implements org.aopalliance.intercept.Joinpoint.proceed.

Proceed to the next interceptor in the chain.
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

argumentsback to summary
pack-priv final Object[] arguments
interceptorIndexback to summary
pack-priv final int interceptorIndex
proxyback to summary
pack-priv final Object proxy

Constructor Detail

InterceptedMethodInvocationback to summary
public InterceptedMethodInvocation(Object proxy, Object[] arguments, int interceptorIndex)

Method Detail

getArgumentsback to summary
public Object[] getArguments()

Implements org.aopalliance.intercept.Invocation.getArguments.

Doc from org.aopalliance.intercept.Invocation.getArguments.

Get the arguments as an array object. It is possible to change element values within this array to change the arguments.

Returns:Object[]

the argument of the invocation

Annotations
@Override
getMethodback to summary
public Method getMethod()

Implements org.aopalliance.intercept.MethodInvocation.getMethod.

Doc from org.aopalliance.intercept.MethodInvocation.getMethod.

Get the method being called.

This method is a friendly implementation of the Joinpoint#getStaticPart() method (same result).

Returns:Method

the method being called

Annotations
@Override
getStaticPartback to summary
public AccessibleObject getStaticPart()

Implements org.aopalliance.intercept.Joinpoint.getStaticPart.

Doc from org.aopalliance.intercept.Joinpoint.getStaticPart.

Return the static part of this joinpoint.

The static part is an accessible object on which a chain of interceptors is installed.

Annotations
@Override
getThisback to summary
public Object getThis()

Implements org.aopalliance.intercept.Joinpoint.getThis.

Doc from org.aopalliance.intercept.Joinpoint.getThis.

Return the object that holds the current joinpoint's static part.

For instance, the target object for an invocation.

Returns:Object

the object (can be null if the accessible object is static)

Annotations
@Override
proceedback to summary
public Object proceed() throws Throwable

Implements org.aopalliance.intercept.Joinpoint.proceed.

Doc from org.aopalliance.intercept.Joinpoint.proceed.

Proceed to the next interceptor in the chain.

The implementation and the semantics of this method depends on the actual joinpoint type (see the children interfaces).

Returns:Object

see the children interfaces' proceed definition

Annotations
@Override
Exceptions
Throwable:
if the joinpoint throws an exception