Package mondrian.util

Class DelegatingInvocationHandler

java.lang.Object
mondrian.util.DelegatingInvocationHandler
All Implemented Interfaces:
InvocationHandler
Direct Known Subclasses:
SqlStatement.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