X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fbinding%2Fimpl%2FBindingDOMRpcImplementationAdapter.java;h=7e079011af1b9277ce859516dea185a3d060fe82;hp=a7989ae6ed460813da31004cc830f905d5f7c96d;hb=258d8039ac144aeee2efa7943228c0fc6cdaf651;hpb=a7c5e34ae9692603f50efd4cb426fb26d1a9fe3f diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMRpcImplementationAdapter.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMRpcImplementationAdapter.java index a7989ae6ed..7e079011af 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMRpcImplementationAdapter.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMRpcImplementationAdapter.java @@ -11,14 +11,13 @@ import com.google.common.base.Preconditions; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.JdkFutureAdapters; import com.google.common.util.concurrent.ListenableFuture; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; -import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; +import javax.annotation.Nonnull; import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; import org.opendaylight.controller.md.sal.dom.api.DOMRpcIdentifier; import org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementation; @@ -36,25 +35,24 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; public class BindingDOMRpcImplementationAdapter implements DOMRpcImplementation { - private static final Cache, RpcServiceInvoker> SERVICE_INVOKERS = CacheBuilder.newBuilder().weakKeys().build(); + private static final Cache, RpcServiceInvoker> SERVICE_INVOKERS = + CacheBuilder.newBuilder().weakKeys().build(); private final BindingNormalizedNodeSerializer codec; private final RpcServiceInvoker invoker; private final RpcService delegate; private final QName inputQname; - public BindingDOMRpcImplementationAdapter(final BindingNormalizedNodeSerializer codec, final Class type, final Map localNameToMethod, final T delegate) { + BindingDOMRpcImplementationAdapter(final BindingNormalizedNodeSerializer codec, + final Class type, final Map localNameToMethod, final T delegate) { try { - this.invoker = SERVICE_INVOKERS.get(type, new Callable() { - @Override - public RpcServiceInvoker call() { - final Map map = new HashMap<>(); - for (Entry e : localNameToMethod.entrySet()) { - map.put(e.getKey().getLastComponent(), e.getValue()); - } - - return RpcServiceInvoker.from(map); + this.invoker = SERVICE_INVOKERS.get(type, () -> { + final Map map = new HashMap<>(); + for (Entry e : localNameToMethod.entrySet()) { + map.put(e.getKey().getLastComponent(), e.getValue()); } + + return RpcServiceInvoker.from(map); }); } catch (ExecutionException e) { throw new IllegalArgumentException("Failed to create invokers for type " + type, e); @@ -65,15 +63,17 @@ public class BindingDOMRpcImplementationAdapter implements DOMRpcImplementation inputQname = QName.create(BindingReflections.getQNameModule(type), "input").intern(); } + @Nonnull @Override - public CheckedFuture invokeRpc(final DOMRpcIdentifier rpc, final NormalizedNode input) { + public CheckedFuture invokeRpc(@Nonnull final DOMRpcIdentifier rpc, + final NormalizedNode input) { final SchemaPath schemaPath = rpc.getType(); - final DataObject bindingInput = input != null ? deserilialize(rpc.getType(),input) : null; - final ListenableFuture> bindingResult = invoke(schemaPath,bindingInput); - return transformResult(schemaPath,bindingResult); + final DataObject bindingInput = input != null ? deserialize(rpc.getType(), input) : null; + final ListenableFuture> bindingResult = invoke(schemaPath, bindingInput); + return transformResult(bindingResult); } - private DataObject deserilialize(final SchemaPath rpcPath, final NormalizedNode input) { + private DataObject deserialize(final SchemaPath rpcPath, final NormalizedNode input) { if (input instanceof LazySerializedContainerNode) { return ((LazySerializedContainerNode) input).bindingData(); } @@ -82,10 +82,10 @@ public class BindingDOMRpcImplementationAdapter implements DOMRpcImplementation } private ListenableFuture> invoke(final SchemaPath schemaPath, final DataObject input) { - return JdkFutureAdapters.listenInPoolThread(invoker.invokeRpc(delegate, schemaPath.getLastComponent(), input)); + return invoker.invokeRpc(delegate, schemaPath.getLastComponent(), input); } - private CheckedFuture transformResult(final SchemaPath schemaPath, + private CheckedFuture transformResult( final ListenableFuture> bindingResult) { return LazyDOMRpcResultFuture.create(codec, bindingResult); }