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=1e9306b04b0e014f7c52ff0c3783f1088aa08940;hp=e67fba8920f5de47c17d8ae654eacd8694dcdc53;hb=2a6aa1775604906755883f810ee9ea6d5f286135;hpb=1065575eb31e6e96b84bde22e6dd134b8eac9018 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 e67fba8920..1e9306b04b 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 @@ -7,43 +7,46 @@ */ package org.opendaylight.controller.md.sal.binding.impl; -import com.google.common.base.Preconditions; +import static java.util.Objects.requireNonNull; + 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.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; import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.binding.dom.adapter.BindingDataAware; +import org.opendaylight.mdsal.binding.dom.adapter.invoke.RpcServiceInvoker; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; +import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.RpcService; -import org.opendaylight.yangtools.yang.binding.util.BindingReflections; -import org.opendaylight.yangtools.yang.binding.util.RpcServiceInvoker; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; +@Deprecated(forRemoval = true) 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; - 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, () -> { final Map map = new HashMap<>(); @@ -57,14 +60,14 @@ public class BindingDOMRpcImplementationAdapter implements DOMRpcImplementation throw new IllegalArgumentException("Failed to create invokers for type " + type, e); } - this.codec = Preconditions.checkNotNull(codec); - this.delegate = Preconditions.checkNotNull(delegate); + this.codec = requireNonNull(codec); + this.delegate = requireNonNull(delegate); inputQname = QName.create(BindingReflections.getQNameModule(type), "input").intern(); } - @Nonnull @Override - public CheckedFuture invokeRpc(@Nonnull final DOMRpcIdentifier rpc, final NormalizedNode input) { + public CheckedFuture invokeRpc(final DOMRpcIdentifier rpc, + final NormalizedNode input) { final SchemaPath schemaPath = rpc.getType(); final DataObject bindingInput = input != null ? deserialize(rpc.getType(), input) : null; final ListenableFuture> bindingResult = invoke(schemaPath, bindingInput); @@ -72,18 +75,19 @@ public class BindingDOMRpcImplementationAdapter implements DOMRpcImplementation } private DataObject deserialize(final SchemaPath rpcPath, final NormalizedNode input) { - if (input instanceof LazySerializedContainerNode) { - return ((LazySerializedContainerNode) input).bindingData(); + if (input instanceof BindingDataAware) { + return ((BindingDataAware) input).bindingData(); } final SchemaPath inputSchemaPath = rpcPath.createChild(inputQname); return codec.fromNormalizedNodeRpcData(inputSchemaPath, (ContainerNode) input); } 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 ListenableFuture> bindingResult) { + private CheckedFuture transformResult( + final ListenableFuture> bindingResult) { return LazyDOMRpcResultFuture.create(codec, bindingResult); }