org.jclouds.reflect
Class FunctionalReflection

java.lang.Object
  extended by org.jclouds.reflect.FunctionalReflection

@Beta
public final class FunctionalReflection
extends Object

Static utilities relating to functional Java reflection.

Since:
1.6

Constructor Summary
FunctionalReflection()
           
 
Method Summary
static
<T> T
newProxy(Class<T> enclosingType, com.google.common.base.Function<Invocation,Object> invocationFunction)
           
static
<T> T
newProxy(com.google.common.reflect.TypeToken<T> enclosingType, com.google.common.base.Function<Invocation,Object> invocationFunction)
          Returns a proxy instance that implements enclosingType by dispatching method invocations to invocationFunction.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FunctionalReflection

public FunctionalReflection()
Method Detail

newProxy

public static <T> T newProxy(com.google.common.reflect.TypeToken<T> enclosingType,
                             com.google.common.base.Function<Invocation,Object> invocationFunction)
Returns a proxy instance that implements enclosingType by dispatching method invocations to invocationFunction. The class loader of enclosingType will be used to define the proxy class.

Usage example:

 httpAdapter = new Function<Invocation, Result>() {
    public Result apply(Invocation in) {
       try {
          HttpRequest request = parseRequest(in);
          HttpResponse response = invoke(request);
          return Result.success(parseJson(response));
       } catch (Exception e) {
          return Result.failure(e);
       }
    }
 };
 
 client = FunctionalReflection.newProxy(Client.class, httpAdapter);
 

Parameters:
invocationFunction - returns a result or a top-level exception, or result
Throws:
IllegalArgumentException - if enclosingType does not specify the type of a Java interface
See Also:
AbstractInvocationHandler.invoke(Object, Method, Object[]), Reflection.newProxy(Class, java.lang.reflect.InvocationHandler)

newProxy

public static <T> T newProxy(Class<T> enclosingType,
                             com.google.common.base.Function<Invocation,Object> invocationFunction)


Copyright © 2009-2013 jclouds. All Rights Reserved.