From 003b279ba947e1efc230afe110e83715c5c1c2bf Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 23 Apr 2020 20:24:27 +0200 Subject: [PATCH] Revert "Update RPC invocation to take ContainerNode" This reverts commit f77a6182a4af3150fac68911cc98d0259342136d, as we cannot tolerate ContainerNode in arguments either, due to how netconf is implemented. JIRA: MDSAL-303 Change-Id: Ib176d71aebcb85da36a65f3048cfef32e474bcd4 Signed-off-by: Robert Varga --- .../adapter/BindingDOMRpcImplementationAdapter.java | 7 ++++--- .../binding/dom/adapter/LazyDOMRpcResultFuture.java | 4 ++-- .../mdsal/dom/api/DOMRpcImplementation.java | 4 ++-- .../org/opendaylight/mdsal/dom/api/DOMRpcResult.java | 4 ++-- .../opendaylight/mdsal/dom/api/DOMRpcService.java | 6 +++--- .../opendaylight/mdsal/dom/broker/DOMRpcRouter.java | 9 +++++---- .../org/opendaylight/mdsal/dom/broker/TestUtils.java | 8 ++++---- .../mdsal/dom/spi/DefaultDOMRpcResult.java | 12 ++++++------ .../dom/spi/ForwardingDOMRpcImplementation.java | 8 +++++--- .../mdsal/dom/spi/ForwardingDOMRpcResult.java | 4 ++-- .../mdsal/dom/spi/ForwardingDOMRpcService.java | 4 ++-- .../mdsal/dom/spi/DefaultDOMRpcResultTest.java | 5 +++-- 12 files changed, 40 insertions(+), 35 deletions(-) diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcImplementationAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcImplementationAdapter.java index bd8cdc20af..35b2d8b970 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcImplementationAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcImplementationAdapter.java @@ -30,6 +30,7 @@ import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.YangConstants; 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; final class BindingDOMRpcImplementationAdapter implements DOMRpcImplementation { @@ -65,7 +66,7 @@ final class BindingDOMRpcImplementationAdapter implements DOMRpcImplementation { } @Override - public ListenableFuture invokeRpc(final DOMRpcIdentifier rpc, final ContainerNode input) { + public ListenableFuture invokeRpc(final DOMRpcIdentifier rpc, final NormalizedNode input) { final SchemaPath schemaPath = rpc.getType(); final CurrentAdapterSerializer serializer = adapterContext.currentSerializer(); final DataObject bindingInput = input != null ? deserialize(serializer, schemaPath, input) : null; @@ -79,12 +80,12 @@ final class BindingDOMRpcImplementationAdapter implements DOMRpcImplementation { } private DataObject deserialize(final CurrentAdapterSerializer serializer, final SchemaPath rpcPath, - final ContainerNode input) { + final NormalizedNode input) { if (ENABLE_CODEC_SHORTCUT && input instanceof BindingLazyContainerNode) { return ((BindingLazyContainerNode) input).getDataObject(); } final SchemaPath inputSchemaPath = rpcPath.createChild(inputQname); - return serializer.fromNormalizedNodeRpcData(inputSchemaPath, input); + return serializer.fromNormalizedNodeRpcData(inputSchemaPath, (ContainerNode) input); } private ListenableFuture> invoke(final SchemaPath schemaPath, final DataObject input) { diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazyDOMRpcResultFuture.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazyDOMRpcResultFuture.java index 7d366dd0a8..426ab7559d 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazyDOMRpcResultFuture.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazyDOMRpcResultFuture.java @@ -24,7 +24,7 @@ import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.yangtools.util.concurrent.ExceptionMapper; import org.opendaylight.yangtools.yang.binding.DataContainer; 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; final class LazyDOMRpcResultFuture extends AbstractFuture implements BindingRpcFutureAware { private static final ExceptionMapper DOM_RPC_EX_MAPPER = new ExceptionMapper<>("rpc", @@ -117,7 +117,7 @@ final class LazyDOMRpcResultFuture extends AbstractFuture implemen return new DefaultDOMRpcResult(codec.toNormalizedNodeRpcData((DataContainer) inputData)); } - return new DefaultDOMRpcResult((ContainerNode) null); + return new DefaultDOMRpcResult((NormalizedNode) null); } return new DefaultDOMRpcResult(input.getErrors()); } diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMRpcImplementation.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMRpcImplementation.java index 7074eef968..357cb3bf21 100644 --- a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMRpcImplementation.java +++ b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMRpcImplementation.java @@ -9,7 +9,7 @@ package org.opendaylight.mdsal.dom.api; import com.google.common.util.concurrent.ListenableFuture; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; /** * Interface implemented by an individual RPC implementation. This API allows for dispatch @@ -28,7 +28,7 @@ public interface DOMRpcImplementation { * @throws NullPointerException if any argument is null */ @NonNull ListenableFuture invokeRpc(@NonNull DOMRpcIdentifier rpc, - @NonNull ContainerNode input); + @NonNull NormalizedNode input); /** * Return the relative invocation cost of this implementation. Default implementation return 0. diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMRpcResult.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMRpcResult.java index 66feb0f68d..5a0fd1acc0 100644 --- a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMRpcResult.java +++ b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMRpcResult.java @@ -11,7 +11,7 @@ import java.util.Collection; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.common.RpcError; -import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; /** * Interface defining a result of an RPC call. @@ -33,5 +33,5 @@ public interface DOMRpcResult { * @return Invocation result, null if the operation has not produced a result. This might * be the case if the operation does not produce a result, or if it failed. */ - @Nullable ContainerNode getResult(); + @Nullable NormalizedNode getResult(); } diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMRpcService.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMRpcService.java index d86b29c6e7..a6b103cb43 100644 --- a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMRpcService.java +++ b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMRpcService.java @@ -10,7 +10,7 @@ package org.opendaylight.mdsal.dom.api; import com.google.common.util.concurrent.ListenableFuture; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.concepts.ListenerRegistration; -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; /** @@ -30,14 +30,14 @@ public interface DOMRpcService extends DOMService { * of {@link DOMRpcException} reporting a transport error. */ @NonNull ListenableFuture invokeRpc(@NonNull SchemaPath type, - @NonNull ContainerNode input); + @NonNull NormalizedNode input); /** * Register a {@link DOMRpcAvailabilityListener} with this service to receive notifications * about RPC implementations becoming (un)available. The listener will be invoked with the * current implementations reported and will be kept uptodate as implementations come and go. * Users should note that using a listener does not necessarily mean that - * {@link #invokeRpc(SchemaPath, ContainerNode)} will not report a failure due to + * {@link #invokeRpc(SchemaPath, NormalizedNode)} will not report a failure due to * {@link DOMRpcImplementationNotAvailableException} and need to be ready to handle it. * Implementations are encouraged to take reasonable precautions to prevent this scenario from * occurring. diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouter.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouter.java index 622a8b3c15..f1fa5a70de 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouter.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouter.java @@ -435,7 +435,8 @@ public final class DOMRpcRouter extends AbstractRegistration private final class RpcServiceFacade implements DOMRpcService { @Override - public ListenableFuture invokeRpc(final SchemaPath type, final ContainerNode input) { + public ListenableFuture invokeRpc(final SchemaPath type, + final NormalizedNode input) { final AbstractDOMRpcRoutingTableEntry entry = (AbstractDOMRpcRoutingTableEntry) routingTable.getEntry(type); if (entry == null) { return Futures.immediateFailedFuture( @@ -498,7 +499,7 @@ public final class DOMRpcRouter extends AbstractRegistration } static ListenableFuture invoke(final AbstractDOMRpcRoutingTableEntry entry, - final ContainerNode input) { + final NormalizedNode input) { if (entry instanceof UnknownDOMRpcRoutingTableEntry) { return Futures.immediateFailedFuture( new DOMRpcImplementationNotAvailableException("SchemaPath %s is not resolved to an RPC", @@ -514,7 +515,7 @@ public final class DOMRpcRouter extends AbstractRegistration } private static ListenableFuture invokeRoutedRpc( - final RoutedDOMRpcRoutingTableEntry entry, final ContainerNode input) { + final RoutedDOMRpcRoutingTableEntry entry, final NormalizedNode input) { final Optional> maybeKey = NormalizedNodes.findNode(input, entry.getRpcId().getContextReference()); @@ -560,7 +561,7 @@ public final class DOMRpcRouter extends AbstractRegistration } private static ListenableFuture invokeGlobalRpc( - final GlobalDOMRpcRoutingTableEntry entry, final ContainerNode input) { + final GlobalDOMRpcRoutingTableEntry entry, final NormalizedNode input) { return entry.getImplementations(YangInstanceIdentifier.empty()).get(0).invokeRpc(entry.getRpcId(), input); } } diff --git a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/TestUtils.java b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/TestUtils.java index 68a3d2d933..8fc8dbf454 100644 --- a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/TestUtils.java +++ b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/TestUtils.java @@ -20,9 +20,9 @@ import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; -import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeBuilder; @@ -49,12 +49,12 @@ abstract class TestUtils { .withChild(TOP_LEVEL_LIST_NODE) .build(); - static final ContainerNode TEST_CONTAINER = Builders.containerBuilder() + static final NormalizedNode TEST_CONTAINER = Builders.containerBuilder() .withNodeIdentifier(new NodeIdentifier(TestModel.TEST_QNAME)) .withChild(OUTER_LIST) .build(); - static final ContainerNode TEST_CHILD = Builders.containerBuilder() + static final NormalizedNode TEST_CHILD = Builders.containerBuilder() .withNodeIdentifier(new NodeIdentifier(TestModel.TEST_QNAME)) .withChild(CHILD_LIST) .build(); @@ -74,7 +74,7 @@ abstract class TestUtils { } @Override - public FluentFuture invokeRpc(final DOMRpcIdentifier rpc, final ContainerNode input) { + public FluentFuture invokeRpc(final DOMRpcIdentifier rpc, final NormalizedNode input) { requireNonNull(input); return unknownRpc; } diff --git a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/DefaultDOMRpcResult.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/DefaultDOMRpcResult.java index 87eb55c3c7..cfc47d090d 100644 --- a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/DefaultDOMRpcResult.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/DefaultDOMRpcResult.java @@ -21,7 +21,7 @@ import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.RpcError; -import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; /** * Utility class implementing {@link DefaultDOMRpcResult}. @@ -32,10 +32,10 @@ public final class DefaultDOMRpcResult implements DOMRpcResult, Immutable, Seria private static final long serialVersionUID = 1L; @SuppressFBWarnings(value = "SE_BAD_FIELD", justification = "Interfaces do not specify Serializable") - private final @Nullable ContainerNode result; + private final @Nullable NormalizedNode result; private final Collection errors; - public DefaultDOMRpcResult(final ContainerNode result, final RpcError... errors) { + public DefaultDOMRpcResult(final NormalizedNode result, final RpcError... errors) { this(result, asCollection(errors)); } @@ -43,11 +43,11 @@ public final class DefaultDOMRpcResult implements DOMRpcResult, Immutable, Seria this(null, asCollection(errors)); } - public DefaultDOMRpcResult(final @Nullable ContainerNode result) { + public DefaultDOMRpcResult(final @Nullable NormalizedNode result) { this(result, Collections.emptyList()); } - public DefaultDOMRpcResult(final @Nullable ContainerNode result, + public DefaultDOMRpcResult(final @Nullable NormalizedNode result, final Collection errors) { this.result = result; this.errors = requireNonNull(errors); @@ -67,7 +67,7 @@ public final class DefaultDOMRpcResult implements DOMRpcResult, Immutable, Seria } @Override - public @Nullable ContainerNode getResult() { + public @Nullable NormalizedNode getResult() { return result; } diff --git a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/ForwardingDOMRpcImplementation.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/ForwardingDOMRpcImplementation.java index fbc26cf11f..311864f45a 100644 --- a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/ForwardingDOMRpcImplementation.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/ForwardingDOMRpcImplementation.java @@ -13,17 +13,19 @@ import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.mdsal.dom.api.DOMRpcIdentifier; import org.opendaylight.mdsal.dom.api.DOMRpcImplementation; import org.opendaylight.mdsal.dom.api.DOMRpcResult; -import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; /** - * Utility implementation which implements {@link DOMRpcImplementation} by forwarding it to a backing delegate. + * Utility implementation which implements {@link DOMRpcImplementation} by forwarding it to + * a backing delegate. */ public abstract class ForwardingDOMRpcImplementation extends ForwardingObject implements DOMRpcImplementation { @Override protected abstract @NonNull DOMRpcImplementation delegate(); @Override - public ListenableFuture invokeRpc(final DOMRpcIdentifier type, final ContainerNode input) { + public ListenableFuture invokeRpc(final DOMRpcIdentifier type, + final NormalizedNode input) { return delegate().invokeRpc(type, input); } } diff --git a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/ForwardingDOMRpcResult.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/ForwardingDOMRpcResult.java index 429fb9a03d..0b47282278 100644 --- a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/ForwardingDOMRpcResult.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/ForwardingDOMRpcResult.java @@ -13,7 +13,7 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.yangtools.yang.common.RpcError; -import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; /** * Utility class which implements {@link DOMRpcResult} by forwarding all methods @@ -30,7 +30,7 @@ public abstract class ForwardingDOMRpcResult extends ForwardingObject implements } @Override - public @Nullable ContainerNode getResult() { + public @Nullable NormalizedNode getResult() { return delegate().getResult(); } } diff --git a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/ForwardingDOMRpcService.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/ForwardingDOMRpcService.java index 7fa38d1e10..e1f51292ee 100644 --- a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/ForwardingDOMRpcService.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/ForwardingDOMRpcService.java @@ -14,7 +14,7 @@ import org.opendaylight.mdsal.dom.api.DOMRpcAvailabilityListener; import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.yangtools.concepts.ListenerRegistration; -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; /** @@ -25,7 +25,7 @@ public abstract class ForwardingDOMRpcService extends ForwardingObject implement protected abstract @NonNull DOMRpcService delegate(); @Override - public ListenableFuture invokeRpc(final SchemaPath type, final ContainerNode input) { + public ListenableFuture invokeRpc(final SchemaPath type, final NormalizedNode input) { return delegate().invokeRpc(type, input); } diff --git a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/DefaultDOMRpcResultTest.java b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/DefaultDOMRpcResultTest.java index 71258d0d92..e6a41935ec 100644 --- a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/DefaultDOMRpcResultTest.java +++ b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/DefaultDOMRpcResultTest.java @@ -15,13 +15,14 @@ import static org.mockito.Mockito.mock; import java.util.Collections; import org.junit.Test; import org.opendaylight.yangtools.yang.common.RpcError; -import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; public class DefaultDOMRpcResultTest { + @Test public void basicTest() throws Exception { RpcError rpcError = mock(RpcError.class); - ContainerNode normalizedNode = mock(ContainerNode.class); + NormalizedNode normalizedNode = mock(NormalizedNode.class); DefaultDOMRpcResult defaultDOMRpcResult = new DefaultDOMRpcResult(normalizedNode, rpcError); assertEquals(normalizedNode, defaultDOMRpcResult.getResult()); assertTrue(defaultDOMRpcResult.getErrors().contains(rpcError)); -- 2.36.6