org.codehaus.groovy.runtime
Class ConversionHandler

java.lang.Object
  extended by org.codehaus.groovy.runtime.ConversionHandler
All Implemented Interfaces:
InvocationHandler
Direct Known Subclasses:
ConvertedClosure, ConvertedMap

public abstract class ConversionHandler
extends Object
implements InvocationHandler

This class is a general adapter to map a call to an Java interface to a given delegate.

Author:
Ben Yu, Jochen Theodorou

Constructor Summary
ConversionHandler(Object delegate)
          Creates a ConversionHandler with an deleagte.
 
Method Summary
 boolean equals(Object obj)
          Indicates whether some other object is "equal to" this one.
 Object getDelegate()
          gets the delegate.
 int hashCode()
          Returns a hash code value for the delegate.
 Object invoke(Object proxy, Method method, Object[] args)
          This method is a default implementation for the invoke method given in Invocationhandler.
abstract  Object invokeCustom(Object proxy, Method method, Object[] args)
          This method is called for all Methods not defined on Object.
 String toString()
          Returns a String version of the delegate.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ConversionHandler

public ConversionHandler(Object delegate)
Creates a ConversionHandler with an deleagte.

Parameters:
delegate - the delegate
Throws:
IllegalArgumentException - if the given delegate is null
Method Detail

getDelegate

public Object getDelegate()
gets the delegate.

Returns:
the delegate

invoke

public Object invoke(Object proxy,
                     Method method,
                     Object[] args)
              throws Throwable
This method is a default implementation for the invoke method given in Invocationhandler. Any call to an method with an declaring class that is not Object is redirected to invokeCustom. Methods like tostring, equals and hashcode are called on the class itself instead of the delegate. It is better to overwrite the invokeCustom method where the Object related methods are filtered out.

Specified by:
invoke in interface InvocationHandler
Parameters:
proxy - the proxy
method - the method
args - the arguments
Returns:
the result of the invocation by method or delegate
Throws:
Throwable - any exception caused by the delegate or the method
See Also:
invokeCustom(Object, Method, Object[]), InvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])

invokeCustom

public abstract Object invokeCustom(Object proxy,
                                    Method method,
                                    Object[] args)
                             throws Throwable
This method is called for all Methods not defined on Object. The delegate should be called here.

Parameters:
proxy - the proxy
method - the method
args - the arguments
Returns:
the result of the invocation of the delegate
Throws:
Throwable - any exception causes by the delegate
See Also:
invoke(Object, Method, Object[]), InvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])

equals

public boolean equals(Object obj)
Indicates whether some other object is "equal to" this one. The delegate is used if the class of the parameter and the current class are equal. In other cases the method will return false. The exact class is here used, if inheritance is needed, this method must be overwritten.

Overrides:
equals in class Object
See Also:
Object.equals(java.lang.Object)

hashCode

public int hashCode()
Returns a hash code value for the delegate.

Overrides:
hashCode in class Object
See Also:
Object.hashCode()

toString

public String toString()
Returns a String version of the delegate.

Overrides:
toString in class Object
See Also:
Object.toString()


Copyright © 2003-2009 The Codehaus. All Rights Reserved.