Fixup for upstream API changes 32/106632/1
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 19 Jun 2023 12:03:25 +0000 (14:03 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 22 Jun 2023 16:42:16 +0000 (18:42 +0200)
Both yangtools and mdsal have changed API details. This patch fixes them
up.

Change-Id: Id57b7054a4a3e8bffa1e5300b48f21fa0a38a6df
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
apps/netconf-topology-impl/src/main/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImpl.java
apps/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/MountPointEndToEndTest.java
apps/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManagerTest.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/AbstractWebsocketSerializer.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/DataTreeCandidateFormatter.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/JsonDataTreeCandidateSerializer.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/XmlDataTreeCandidateSerializer.java

index d4179abd88da115e5686a9c64ef4483d7d6a73a8..4c4488ce54b9cd79963e8050610ef8987c92c388 100644 (file)
@@ -44,8 +44,9 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
 import org.opendaylight.yangtools.concepts.Registration;
-import org.opendaylight.yangtools.yang.binding.Identifier;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
@@ -177,19 +178,16 @@ public class NetconfTopologyImpl extends AbstractNetconfTopology
      * @return     NodeId for the node
      */
     @VisibleForTesting
-    static NodeId getNodeId(final InstanceIdentifier.PathArgument pathArgument) {
-        if (pathArgument instanceof InstanceIdentifier.IdentifiableItem<?, ?>) {
-            final Identifier<?> key = ((InstanceIdentifier.IdentifiableItem<?, ?>) pathArgument).getKey();
-            if (key instanceof NodeKey) {
-                return ((NodeKey) key).getNodeId();
-            }
+    static NodeId getNodeId(final PathArgument pathArgument) {
+        if (pathArgument instanceof IdentifiableItem<?, ?> ident && ident.getKey() instanceof NodeKey nodeKey) {
+            return nodeKey.getNodeId();
         }
         throw new IllegalStateException("Unable to create NodeId from: " + pathArgument);
     }
 
     @VisibleForTesting
     static KeyedInstanceIdentifier<Topology, TopologyKey> createTopologyListPath(final String topologyId) {
-        final InstanceIdentifier<NetworkTopology> networkTopology = InstanceIdentifier.create(NetworkTopology.class);
-        return networkTopology.child(Topology.class, new TopologyKey(new TopologyId(topologyId)));
+        return InstanceIdentifier.create(NetworkTopology.class)
+            .child(Topology.class, new TopologyKey(new TopologyId(topologyId)));
     }
 }
index 342819a631e60cd68e3f9f1e03e13743ea5e6317..d4d473166a89910e8a313e67acbdb6f800d898d8 100644 (file)
@@ -70,7 +70,6 @@ import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractConcurrentDataBrokerTest;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.mdsal.binding.runtime.spi.BindingRuntimeHelpers;
-import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMActionProviderService;
 import org.opendaylight.mdsal.dom.api.DOMActionService;
@@ -244,7 +243,7 @@ public class MountPointEndToEndTest extends AbstractBaseSchemasTest {
         resourceManager = new DefaultSchemaResourceManager(new DefaultYangParserFactory(), TEST_ROOT_DIRECTORY,
             TEST_DEFAULT_SUBDIR);
 
-        topModuleInfo = BindingReflections.getModuleInfo(Top.class);
+        topModuleInfo = BindingRuntimeHelpers.getYangModuleInfo(Top.class);
 
         deviceSchemaContext = BindingRuntimeHelpers.createEffectiveModel(Top.class);
 
@@ -685,10 +684,11 @@ public class MountPointEndToEndTest extends AbstractBaseSchemasTest {
         final var dataBrokerTest = new AbstractConcurrentDataBrokerTest(true) {
             @Override
             protected Set<YangModuleInfo> getModuleInfos() {
-                return Set.of(BindingReflections.getModuleInfo(NetconfNode.class),
-                        BindingReflections.getModuleInfo(NetworkTopology.class),
-                        BindingReflections.getModuleInfo(Keystore.class),
-                        topModuleInfo);
+                return Set.of(
+                    BindingRuntimeHelpers.getYangModuleInfo(NetconfNode.class),
+                    BindingRuntimeHelpers.getYangModuleInfo(NetworkTopology.class),
+                    BindingRuntimeHelpers.getYangModuleInfo(Keystore.class),
+                    topModuleInfo);
             }
         };
 
index 42875390d7ef8529e9286ffbe58cb7901a7adf01..1ae20961f3b0d5b6b1710cce586a80f6cda71a05 100644 (file)
@@ -50,7 +50,7 @@ import org.opendaylight.mdsal.binding.api.DataTreeModification;
 import org.opendaylight.mdsal.binding.api.ReadTransaction;
 import org.opendaylight.mdsal.binding.api.RpcProviderService;
 import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractDataBrokerTest;
-import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
+import org.opendaylight.mdsal.binding.runtime.spi.BindingRuntimeHelpers;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMActionProviderService;
 import org.opendaylight.mdsal.dom.api.DOMMountPointService;
@@ -107,7 +107,7 @@ public class NetconfTopologyManagerTest extends AbstractBaseSchemasTest {
         AbstractDataBrokerTest dataBrokerTest = new AbstractDataBrokerTest() {
             @Override
             protected Set<YangModuleInfo> getModuleInfos() throws Exception {
-                return Set.of(BindingReflections.getModuleInfo(NetworkTopology.class));
+                return Set.of(BindingRuntimeHelpers.getYangModuleInfo(NetworkTopology.class));
             }
         };
 
index 32ff1adc6cbef212048122dcb79f5540909ec608..cd0bc42710a40971e400403393493f60e330ddb5 100644 (file)
@@ -54,10 +54,9 @@ abstract class AbstractWebsocketSerializer<T extends Exception> {
     final boolean serializeLeafNodesOnly(final Deque<PathArgument> path, final DataTreeCandidateNode candidate,
             final boolean skipData, final boolean changedLeafNodesOnly) throws T {
         final var node = switch (candidate.modificationType()) {
-            case SUBTREE_MODIFIED, APPEARED -> candidate.getDataAfter().orElseThrow();
-            case DELETE, DISAPPEARED -> candidate.getDataBefore().orElseThrow();
-            case WRITE -> changedLeafNodesOnly && isNotUpdate(candidate) ? null
-                : candidate.getDataAfter().orElseThrow();
+            case SUBTREE_MODIFIED, APPEARED -> candidate.getDataAfter();
+            case DELETE, DISAPPEARED -> candidate.getDataBefore();
+            case WRITE -> changedLeafNodesOnly && isNotUpdate(candidate) ? null : candidate.getDataAfter();
             case UNMODIFIED -> {
                 // no reason to do anything with an unmodified node
                 LOG.debug("DataTreeCandidate for a notification is unmodified, not serializing leaves. Candidate: {}",
@@ -130,11 +129,10 @@ abstract class AbstractWebsocketSerializer<T extends Exception> {
         boolean skipData) throws T;
 
     private static boolean isNotUpdate(final DataTreeCandidateNode node) {
-        final var before = node.getDataBefore();
-        final var after = node.getDataAfter();
+        final var before = node.dataBefore();
+        final var after = node.dataAfter();
 
-        return before.isPresent() && after.isPresent()
-            && before.orElseThrow().body().equals(after.orElseThrow().body());
+        return before != null && after != null && before.body().equals(after.body());
     }
 
     abstract void serializePath(Collection<PathArgument> pathArguments) throws T;
@@ -170,7 +168,7 @@ abstract class AbstractWebsocketSerializer<T extends Exception> {
     static final String modificationTypeToOperation(final DataTreeCandidateNode candidate,
             final ModificationType modificationType) {
         return switch (modificationType) {
-            case APPEARED, SUBTREE_MODIFIED, WRITE -> candidate.getDataBefore().isPresent() ? "updated" : "created";
+            case APPEARED, SUBTREE_MODIFIED, WRITE -> candidate.dataBefore() != null ? "updated" : "created";
             case DELETE, DISAPPEARED -> "deleted";
             case UNMODIFIED -> {
                 // shouldn't ever happen since the root of a modification is only triggered by some event
index 4a9cf9b9cfea128ab1fcde7596350dd70e966929..a3c6b99d4cd4bc9ce5b9bed90865a4fde188ae37 100644 (file)
@@ -66,9 +66,10 @@ abstract class DataTreeCandidateFormatter extends EventFormatter<Collection<Data
 
     static void writeCandidate(final NormalizedNodeStreamWriter writer, final DataTreeCandidate candidate)
             throws IOException {
-        if (candidate.getRootNode().getDataAfter().isPresent()) {
-            try (NormalizedNodeWriter nodeWriter = NormalizedNodeWriter.forStreamWriter(writer)) {
-                nodeWriter.write(candidate.getRootNode().getDataAfter().orElseThrow());
+        final var dataAfter = candidate.getRootNode().dataAfter();
+        if (dataAfter != null) {
+            try (var nodeWriter = NormalizedNodeWriter.forStreamWriter(writer)) {
+                nodeWriter.write(dataAfter);
             }
         }
     }
index 8bd42f81462d1fbddfa48dd736c9c3fd5f78b0c8..5728cfec7ef0bb5c06cc76951876b21fcef352ab 100644 (file)
@@ -41,14 +41,16 @@ final class JsonDataTreeCandidateSerializer extends AbstractWebsocketSerializer<
         jsonWriter.beginObject();
         serializePath(dataPath);
 
-        if (!skipData && candidate.getDataAfter().isPresent()) {
-            jsonWriter.name("data").beginObject();
-            NormalizedNodeWriter nodeWriter = NormalizedNodeWriter.forStreamWriter(nestedWriter);
-            nodeWriter.write(candidate.getDataAfter().orElseThrow());
-            nodeWriter.flush();
-
-            // end data
-            jsonWriter.endObject();
+        if (!skipData) {
+            final var dataAfter = candidate.dataAfter();
+            if (dataAfter != null) {
+                jsonWriter.name("data").beginObject();
+                NormalizedNodeWriter nodeWriter = NormalizedNodeWriter.forStreamWriter(nestedWriter);
+                nodeWriter.write(dataAfter);
+                nodeWriter.flush();
+                // end data
+                jsonWriter.endObject();
+            }
         }
 
         serializeOperation(candidate);
index ab1b9a264a7810f9db5ecccb4ac15d3855338024..255273a525d1b4128650bf07738a19ad234f9708 100644 (file)
@@ -36,13 +36,15 @@ final class XmlDataTreeCandidateSerializer extends AbstractWebsocketSerializer<E
         xmlWriter.writeStartElement(DATA_CHANGE_EVENT_ELEMENT);
         serializePath(nodePath);
 
-        if (!skipData && candidate.getDataAfter().isPresent()) {
-            xmlWriter.writeStartElement("data");
-            NormalizedNodeWriter nnWriter = NormalizedNodeWriter.forStreamWriter(nodeStreamWriter);
-            nnWriter.write(candidate.getDataAfter().orElseThrow());
-            nnWriter.flush();
-
-            xmlWriter.writeEndElement();
+        if (!skipData) {
+            final var dataAfter = candidate.dataAfter();
+            if (dataAfter != null) {
+                xmlWriter.writeStartElement("data");
+                NormalizedNodeWriter nnWriter = NormalizedNodeWriter.forStreamWriter(nodeStreamWriter);
+                nnWriter.write(dataAfter);
+                nnWriter.flush();
+                xmlWriter.writeEndElement();
+            }
         }
         serializeOperation(candidate);