Code Review
/
mdsal.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Make RPC implementations return ListenableFuture
[mdsal.git]
/
binding
/
yang-binding
/
src
/
main
/
java
/
org
/
opendaylight
/
yangtools
/
yang
/
binding
/
util
/
RpcMethodInvoker.java
diff --git
a/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/util/RpcMethodInvoker.java
b/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/util/RpcMethodInvoker.java
index 69f4e6f4aea67b05c4448e22139d8d24b1d108d6..2b0e451153a418ffbb82a5ec9405d739eca87541 100644
(file)
--- a/
binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/util/RpcMethodInvoker.java
+++ b/
binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/util/RpcMethodInvoker.java
@@
-8,11
+8,11
@@
package org.opendaylight.yangtools.yang.binding.util;
import com.google.common.base.Optional;
package org.opendaylight.yangtools.yang.binding.util;
import com.google.common.base.Optional;
+import com.google.common.util.concurrent.ListenableFuture;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodHandles.Lookup;
import java.lang.reflect.Method;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodHandles.Lookup;
import java.lang.reflect.Method;
-import java.util.concurrent.Future;
import org.opendaylight.yangtools.yang.binding.DataContainer;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.RpcService;
import org.opendaylight.yangtools.yang.binding.DataContainer;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.RpcService;
@@
-22,18
+22,20
@@
abstract class RpcMethodInvoker {
private static final Lookup LOOKUP = MethodHandles.publicLookup();
private static final Lookup LOOKUP = MethodHandles.publicLookup();
-
protected abstract
Future<RpcResult<?>> invokeOn(RpcService impl, DataObject input);
+
abstract Listenable
Future<RpcResult<?>> invokeOn(RpcService impl, DataObject input);
protected static RpcMethodInvoker from(final Method method) {
protected static RpcMethodInvoker from(final Method method) {
-
Optional<Class<? extends DataContainer>> input = BindingReflections.resolveRpcInputClass(method)
;
+
final MethodHandle methodHandle
;
try {
try {
- MethodHandle methodHandle = LOOKUP.unreflect(method);
- if (input.isPresent()) {
- return new RpcMethodInvokerWithInput(methodHandle);
- }
- return new RpcMethodInvokerWithoutInput(methodHandle);
+ methodHandle = LOOKUP.unreflect(method);
} catch (IllegalAccessException e) {
throw new IllegalStateException("Lookup on public method failed.",e);
}
} catch (IllegalAccessException e) {
throw new IllegalStateException("Lookup on public method failed.",e);
}
+
+ final Optional<Class<? extends DataContainer>> input = BindingReflections.resolveRpcInputClass(method);
+ if (input.isPresent()) {
+ return new RpcMethodInvokerWithInput(methodHandle);
+ }
+ return new RpcMethodInvokerWithoutInput(methodHandle);
}
}
\ No newline at end of file
}
}
\ No newline at end of file