Package org.apache.calcite.util
Class DelegatingInvocationHandler
java.lang.Object
org.apache.calcite.util.DelegatingInvocationHandler
- All Implemented Interfaces:
InvocationHandler
A class derived from
DelegatingInvocationHandler
handles a
method call by looking for a method in itself with identical parameters. If
no such method is found, it forwards the call to a fallback object, which
must implement all of the interfaces which this proxy implements.
It is useful in creating a wrapper class around an interface which may change over time.
Example:
import java.sql.Connection; Connection connection = ...; Connection tracingConnection = (Connection) Proxy.newProxyInstance(null, new Class[] {Connection.class}, new DelegatingInvocationHandler() { protected Object getTarget() { return connection; } Statement createStatement() { System.out.println("statement created"); return connection.createStatement(); } });
-
Constructor Summary
-
Method Summary
-
Constructor Details
-
DelegatingInvocationHandler
public DelegatingInvocationHandler()
-
-
Method Details
-
invoke
public @Nullable Object invoke(Object proxy, Method method, @Nullable Object[] args) throws Throwable - Specified by:
invoke
in interfaceInvocationHandler
- Throws:
Throwable
-
getTarget
Returns the object to forward method calls to, should the derived class not implement the method. Generally, this object will be a member of the derived class, supplied as a parameter to its constructor.
-