org.jclouds.reflect
Class FunctionalReflection
java.lang.Object
org.jclouds.reflect.FunctionalReflection
@Beta
public final class FunctionalReflection
- extends Object
Static utilities relating to functional Java reflection.
- Since:
- 1.6
|
Method Summary |
static
|
newProxy(Class<T> enclosingType,
com.google.common.base.Function<Invocation,Object> invocationFunction)
|
static
|
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 |
FunctionalReflection
public FunctionalReflection()
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.