From: Robert Varga Date: Mon, 9 Jul 2018 02:33:16 +0000 (+0200) Subject: Use Binding{Data,RpcFuture}Aware X-Git-Tag: release/fluorine~43 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=88936a5b76150f059aa04f5990c9acd06aa9dbf2 Use Binding{Data,RpcFuture}Aware In order to bridge mdsal and controller binding interfaces, we need to have a common way of accessing the binding future. Companion MDSAL patch added Binding{Data,RpcFuture}Aware interfaces, which exposes just that, and his patch makes use of it in the controller. JIRA: SFC-222 Change-Id: If2407f4950de1b34e809b275cc2afc4cfefc8a10 Signed-off-by: Robert Varga --- 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 7e079011af..1e750398a8 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 @@ -22,6 +22,7 @@ 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.codec.api.BindingNormalizedNodeSerializer; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.RpcService; @@ -74,8 +75,8 @@ 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); diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LazyDOMRpcResultFuture.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LazyDOMRpcResultFuture.java index f22b881db2..f16f34ea51 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LazyDOMRpcResultFuture.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LazyDOMRpcResultFuture.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.controller.md.sal.binding.impl; import com.google.common.base.Preconditions; @@ -19,12 +18,13 @@ import java.util.concurrent.TimeoutException; import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; +import org.opendaylight.mdsal.binding.dom.adapter.BindingRpcFutureAware; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; import org.opendaylight.yangtools.yang.binding.DataContainer; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -final class LazyDOMRpcResultFuture implements CheckedFuture { +final class LazyDOMRpcResultFuture implements CheckedFuture, BindingRpcFutureAware { private final ListenableFuture> bindingFuture; private final BindingNormalizedNodeSerializer codec; @@ -41,7 +41,8 @@ final class LazyDOMRpcResultFuture implements CheckedFuture> getBindingFuture() { + @Override + public ListenableFuture> getBindingFuture() { return bindingFuture; } diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LazySerializedContainerNode.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LazySerializedContainerNode.java index 5066ed5354..bed7d31861 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LazySerializedContainerNode.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LazySerializedContainerNode.java @@ -11,6 +11,7 @@ package org.opendaylight.controller.md.sal.binding.impl; import java.util.Collection; import java.util.Map; import java.util.Optional; +import org.opendaylight.mdsal.binding.dom.adapter.BindingDataAware; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.common.QName; @@ -23,7 +24,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; // FIXME: Should be this moved to binding-data-codec? -class LazySerializedContainerNode implements ContainerNode { +class LazySerializedContainerNode implements ContainerNode, BindingDataAware { private final NodeIdentifier identifier; private final DataObject bindingData; @@ -87,7 +88,8 @@ class LazySerializedContainerNode implements ContainerNode { return delegate().getAttributeValue(name); } - final DataObject bindingData() { + @Override + public final DataObject bindingData() { return bindingData; } diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/RpcServiceAdapter.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/RpcServiceAdapter.java index 5e24c90b19..d61c9a4b6e 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/RpcServiceAdapter.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/RpcServiceAdapter.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.controller.md.sal.binding.impl; import com.google.common.base.Preconditions; @@ -23,6 +22,7 @@ import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; import org.opendaylight.controller.md.sal.dom.broker.spi.rpc.RpcRoutingStrategy; +import org.opendaylight.mdsal.binding.dom.adapter.BindingRpcFutureAware; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; import org.opendaylight.yangtools.yang.binding.DataContainer; import org.opendaylight.yangtools.yang.binding.DataObject; @@ -66,8 +66,8 @@ class RpcServiceAdapter implements InvocationHandler { ListenableFuture> invoke0(final SchemaPath schemaPath, final NormalizedNode input) { final CheckedFuture result = delegate.invokeRpc(schemaPath, input); - if (result instanceof LazyDOMRpcResultFuture) { - return ((LazyDOMRpcResultFuture) result).getBindingFuture(); + if (result instanceof BindingRpcFutureAware) { + return ((BindingRpcFutureAware) result).getBindingFuture(); } return transformFuture(schemaPath, result, codec.getCodecFactory());