net.sf.saffron.util
Class DelegatingInvocationHandler

java.lang.Object
  |
  +--net.sf.saffron.util.DelegatingInvocationHandler
All Implemented Interfaces:
InvocationHandler

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();
         }
     });

Since:
21 March, 2002
Version:
$Id: //open/saffron/src/net/sf/saffron/util/DelegatingInvocationHandler.java#2 $
Author:
jhyde

Constructor Summary
DelegatingInvocationHandler()
           
 
Method Summary
protected abstract  Object getTarget()
          Returns the object to forward method calls to, should the derived class not implement the method.
 Object invoke(Object proxy, Method method, Object[] args)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DelegatingInvocationHandler

public DelegatingInvocationHandler()
Method Detail

invoke

public Object invoke(Object proxy,
                     Method method,
                     Object[] args)
              throws Throwable
Specified by:
invoke in interface InvocationHandler
Throwable

getTarget

protected abstract 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.


SourceForge.net_Logo