mondrian.util
Class DelegatingInvocationHandler
java.lang.Object
mondrian.util.DelegatingInvocationHandler
- All Implemented Interfaces:
- InvocationHandler
- Direct Known Subclasses:
- MondrianOlap4jCell.MyDelegatingInvocationHandler
public abstract class DelegatingInvocationHandler
- extends Object
- implements 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();
}
});
- Author:
- jhyde
-
-
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
DelegatingInvocationHandler
public DelegatingInvocationHandler()
invoke
public Object invoke(Object proxy,
Method method,
Object[] args)
throws Throwable
- Specified by:
invoke
in interface InvocationHandler
- Throws:
Throwable
getTarget
protected Object 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.
The default implementation returns null, which will cause the
invoke(Object, java.lang.reflect.Method, Object[])
method
to throw an UnsupportedOperationException
if the derived class
does not have the required method.
- Returns:
- object to forward method calls to