Use NormalizedNodeStreamWriter to emit JSON data 49/107749/11
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 6 Sep 2023 23:35:20 +0000 (01:35 +0200)
committerRobert Varga <nite@hq.sk>
Tue, 12 Sep 2023 16:44:21 +0000 (16:44 +0000)
We are already instantiating NormalizedNode-based writer, which means we
get help in terms for formatting things.

JIRA: NETCONF-1152
Change-Id: Ie076ba571887c70a94cdd1baf7ea5e1ec6d8e91f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
28 files changed:
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/JSONDataTreeCandidateFormatter.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
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/ListenerAdapterTest.java
restconf/restconf-nb/src/test/resources/instanceidentifier/yang/sal-remote.yang [new file with mode: 0644]
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-changed-leaves-create.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-changed-leaves-delete.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-changed-leaves-update.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-child-nodes-only-create.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-child-nodes-only-delete.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-child-nodes-only-update1.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-child-nodes-only-update2.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-cont-create.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-cont-delete.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-cont-update.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-leaves-create.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-leaves-delete.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-leaves-update.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-list-create.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-list-delete.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-list-update.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-without-data-cont-create.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-without-data-cont-delete.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-without-data-cont-update.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-without-data-list-create.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-without-data-list-delete.json
restconf/restconf-nb/src/test/resources/listener-adapter-test/notif-without-data-list-update.json

index aa911e49ed62317332fcf2fcb54d7f6a4e99fa11..47c59d5070e9d268dc480dfec053788de8c7afc8 100644 (file)
@@ -10,13 +10,19 @@ package org.opendaylight.restconf.nb.rfc8040.streams.listeners;
 import static com.google.common.base.Verify.verifyNotNull;
 import static java.util.Objects.requireNonNull;
 
+import com.google.common.base.VerifyException;
 import java.util.ArrayDeque;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Comparator;
 import java.util.Deque;
+import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.data.changed.notification.DataChangeEvent;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.data.changed.notification.DataChangeEvent.Operation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.data.changed.notification.data.change.event.Data;
 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.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
@@ -26,7 +32,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidateNode;
-import org.opendaylight.yangtools.yang.data.tree.api.ModificationType;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContext;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
@@ -37,6 +42,11 @@ import org.slf4j.LoggerFactory;
 
 abstract class AbstractWebsocketSerializer<T extends Exception> {
     private static final Logger LOG = LoggerFactory.getLogger(AbstractWebsocketSerializer.class);
+    static final @NonNull QName PATH_QNAME = QName.create(DataChangeEvent.QNAME, "path").intern();
+    static final @NonNull NodeIdentifier PATH_NID = NodeIdentifier.create(PATH_QNAME);
+    static final @NonNull QName OPERATION_QNAME = QName.create(DataChangeEvent.QNAME, "operation").intern();
+    static final @NonNull NodeIdentifier OPERATION_NID = NodeIdentifier.create(OPERATION_QNAME);
+    static final @NonNull String DATA_NAME = Data.QNAME.getLocalName();
 
     private final EffectiveModelContext context;
 
@@ -173,10 +183,6 @@ abstract class AbstractWebsocketSerializer<T extends Exception> {
         return before != null && after != null && before.body().equals(after.body());
     }
 
-    abstract void serializePath(Collection<PathArgument> pathArguments) throws T;
-
-    abstract void serializeOperation(DataTreeCandidateNode candidate) throws T;
-
     static final @Nullable NormalizedNode getDataAfter(final DataTreeCandidateNode candidate) {
         final var data = candidate.dataAfter();
         if (data instanceof MapEntryNode mapEntry) {
@@ -216,22 +222,21 @@ abstract class AbstractWebsocketSerializer<T extends Exception> {
         return sb.toString();
     }
 
-    @Deprecated
-    static void appendQName(final StringBuilder sb, final QName qname) {
+    private static void appendQName(final StringBuilder sb, final QName qname) {
         // FIXME: err: what?! what is this replacement?!
         sb.append(qname.getNamespace().toString().replace(':', '-')).append(':').append(qname.getLocalName());
     }
 
-    static final String modificationTypeToOperation(final DataTreeCandidateNode candidate,
-            final ModificationType modificationType) {
-        return switch (modificationType) {
-            case APPEARED, SUBTREE_MODIFIED, WRITE -> candidate.dataBefore() != null ? "updated" : "created";
-            case DELETE, DISAPPEARED -> "deleted";
+    static final @NonNull String modificationTypeToOperation(final DataTreeCandidateNode candidate) {
+        final var operation = switch (candidate.modificationType()) {
+            case APPEARED, SUBTREE_MODIFIED, WRITE -> candidate.dataBefore() != null ? Operation.Updated
+                : Operation.Created;
+            case DELETE, DISAPPEARED -> Operation.Deleted;
             case UNMODIFIED -> {
-                // shouldn't ever happen since the root of a modification is only triggered by some event
-                LOG.warn("DataTreeCandidate for a notification is unmodified. Candidate: {}", candidate);
-                yield "none";
+                throw new VerifyException("DataTreeCandidate for a notification is unmodified. Candidate: "
+                    + candidate);
             }
         };
+        return operation.getName();
     }
 }
index 2c46fccf1ace8178407a3fd2d210f807165ce705..c7c0e0625ff08b50153567ca866861d9f9e749f8 100644 (file)
@@ -16,28 +16,22 @@ import java.time.Instant;
 import java.util.Collection;
 import javax.xml.xpath.XPathExpressionException;
 import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.netconf.api.NamespaceURN;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModuleInfoImpl;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.DataChangedNotification;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.data.changed.notification.DataChangeEvent;
-import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 
 public final class JSONDataTreeCandidateFormatter extends DataTreeCandidateFormatter {
-    private static final @NonNull String NOTIFICATION_NAME;
+    private static final @NonNull String NOTIFICATION_NAME = "ietf-restconf:notification";
+
     private static final @NonNull String DATA_CHANGED_NOTIFICATION_NAME;
     private static final @NonNull String DATA_CHANGED_EVENT_NAME = DataChangeEvent.QNAME.getLocalName();
 
-    // FIXME: JSON codec operating on XMLNamespace values?! This really should be module names, right?
     static {
-        final var sb = new StringBuilder();
-        AbstractWebsocketSerializer.appendQName(sb, QName.create(NamespaceURN.NOTIFICATION, "notification"));
-        NOTIFICATION_NAME = sb.toString();
-
-        sb.setLength(0);
-        AbstractWebsocketSerializer.appendQName(sb, DataChangedNotification.QNAME);
-        DATA_CHANGED_NOTIFICATION_NAME = sb.toString();
+        final var salRemoteName = $YangModuleInfoImpl.getInstance().getName().getLocalName();
+        DATA_CHANGED_NOTIFICATION_NAME = salRemoteName + ":" + DataChangedNotification.QNAME.getLocalName();
     }
 
     private final JSONCodecFactorySupplier codecSupplier;
index 46a46f34a2bd812069fcd867e68d5f266a7029e5..225600e16c5a464dc203d05648aa4c2691b08984 100644 (file)
@@ -8,19 +8,28 @@
 package org.opendaylight.restconf.nb.rfc8040.streams.listeners;
 
 import static java.util.Objects.requireNonNull;
+import static org.opendaylight.yangtools.yang.data.codec.gson.JSONNormalizedNodeStreamWriter.createNestedWriter;
 
 import com.google.gson.stream.JsonWriter;
 import java.io.IOException;
 import java.util.Collection;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.DataChangedNotification;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.data.changed.notification.DataChangeEvent;
+import org.opendaylight.yangtools.yang.common.XMLNamespace;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter;
 import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
-import org.opendaylight.yangtools.yang.data.codec.gson.JSONNormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidateNode;
+import org.opendaylight.yangtools.yang.data.tree.api.ModificationType;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
 import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.Inference;
 
 final class JsonDataTreeCandidateSerializer extends AbstractWebsocketSerializer<IOException> {
+    private static final XMLNamespace SAL_REMOTE_NS = DataChangedNotification.QNAME.getNamespace();
+    private static final Absolute DATA_CHANGE_EVENT = Absolute.of(DataChangedNotification.QNAME, DataChangeEvent.QNAME);
+
     private final JSONCodecFactorySupplier codecSupplier;
     private final JsonWriter jsonWriter;
 
@@ -36,35 +45,31 @@ final class JsonDataTreeCandidateSerializer extends AbstractWebsocketSerializer<
             final DataTreeCandidateNode candidate, final boolean skipData) throws IOException {
         jsonWriter.beginObject();
 
-        final var codecs = codecSupplier.getShared(parent.getEffectiveModelContext());
-        try (var nestedWriter = JSONNormalizedNodeStreamWriter.createNestedWriter(codecs, parent, null, jsonWriter)) {
-            serializePath(dataPath);
+        final var modificationType = candidate.modificationType();
+        if (modificationType != ModificationType.UNMODIFIED) {
+            final var codecs = codecSupplier.getShared(parent.getEffectiveModelContext());
+            try (var writer = createNestedWriter(codecs, DATA_CHANGE_EVENT, SAL_REMOTE_NS, jsonWriter)) {
+                writer.startLeafNode(PATH_NID);
+                writer.scalarValue(YangInstanceIdentifier.of(dataPath));
+                writer.endNode();
+
+                writer.startLeafNode(OPERATION_NID);
+                writer.scalarValue(modificationTypeToOperation(candidate));
+                writer.endNode();
+            }
 
             if (!skipData) {
                 final var dataAfter = getDataAfter(candidate);
                 if (dataAfter != null) {
                     jsonWriter.name("data").beginObject();
-                    NormalizedNodeWriter.forStreamWriter(nestedWriter).write(dataAfter).flush();
+                    try (var writer = createNestedWriter(codecs, parent, SAL_REMOTE_NS, jsonWriter)) {
+                        NormalizedNodeWriter.forStreamWriter(writer).write(dataAfter).flush();
+                    }
                     jsonWriter.endObject();
                 }
             }
-
-            serializeOperation(candidate);
         }
 
         jsonWriter.endObject();
     }
-
-    @Override
-    void serializeOperation(final DataTreeCandidateNode candidate)
-            throws IOException {
-        jsonWriter.name("operation").value(modificationTypeToOperation(candidate, candidate.modificationType()));
-    }
-
-    @Override
-    void serializePath(final Collection<PathArgument> pathArguments)
-            throws IOException {
-        // FIXME: use proper JSON codec for YangInstanceIdentifier
-        jsonWriter.name("path").value(convertPath(pathArguments));
-    }
 }
index 74346acc8e3c86d4c95ffe3b2cd76543943883f6..b39065617a553a6dfc0eefc05e364c2313da1c94 100644 (file)
@@ -11,13 +11,12 @@ import static java.util.Objects.requireNonNull;
 import static org.opendaylight.restconf.nb.rfc8040.streams.listeners.NotificationFormatter.DATA_CHANGE_EVENT_ELEMENT;
 
 import java.util.Collection;
-import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter;
 import org.opendaylight.yangtools.yang.data.codec.xml.XMLStreamNormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidateNode;
+import org.opendaylight.yangtools.yang.data.tree.api.ModificationType;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.Inference;
 
@@ -30,39 +29,33 @@ final class XmlDataTreeCandidateSerializer extends AbstractWebsocketSerializer<E
     }
 
     @Override
-    void serializeData(final Inference parent, final Collection<PathArgument> nodePath,
+    void serializeData(final Inference parent, final Collection<PathArgument> dataPath,
             final DataTreeCandidateNode candidate, final boolean skipData) throws Exception {
-        NormalizedNodeStreamWriter nodeStreamWriter = XMLStreamNormalizedNodeStreamWriter.create(xmlWriter, parent);
-        xmlWriter.writeStartElement(DATA_CHANGE_EVENT_ELEMENT);
-        serializePath(nodePath);
-
-        if (!skipData) {
-            final var dataAfter = getDataAfter(candidate);
-            if (dataAfter != null) {
-                xmlWriter.writeStartElement("data");
-                NormalizedNodeWriter nnWriter = NormalizedNodeWriter.forStreamWriter(nodeStreamWriter);
-                nnWriter.write(dataAfter);
-                nnWriter.flush();
-                xmlWriter.writeEndElement();
+        final var modificationType = candidate.modificationType();
+        if (modificationType != ModificationType.UNMODIFIED) {
+            xmlWriter.writeStartElement(DATA_CHANGE_EVENT_ELEMENT);
+            xmlWriter.writeStartElement("path");
+            // FIXME: use proper XML codec for YangInstanceIdentifier
+            xmlWriter.writeCharacters(convertPath(dataPath));
+            xmlWriter.writeEndElement();
+
+            xmlWriter.writeStartElement("operation");
+            xmlWriter.writeCharacters(modificationTypeToOperation(candidate));
+            xmlWriter.writeEndElement();
+
+            if (!skipData) {
+                final var dataAfter = getDataAfter(candidate);
+                if (dataAfter != null) {
+                    xmlWriter.writeStartElement("data");
+                    final var nnWriter = NormalizedNodeWriter.forStreamWriter(
+                        XMLStreamNormalizedNodeStreamWriter.create(xmlWriter, parent));
+                    nnWriter.write(dataAfter);
+                    nnWriter.flush();
+                    xmlWriter.writeEndElement();
+                }
             }
-        }
-        serializeOperation(candidate);
 
-        xmlWriter.writeEndElement();
-    }
-
-    @Override
-    public void serializePath(final Collection<PathArgument> pathArguments) throws XMLStreamException {
-        xmlWriter.writeStartElement("path");
-        // FIXME: use proper XML codec for YangInstanceIdentifier
-        xmlWriter.writeCharacters(convertPath(pathArguments));
-        xmlWriter.writeEndElement();
-    }
-
-    @Override
-    public void serializeOperation(final DataTreeCandidateNode candidate) throws XMLStreamException {
-        xmlWriter.writeStartElement("operation");
-        xmlWriter.writeCharacters(modificationTypeToOperation(candidate, candidate.modificationType()));
-        xmlWriter.writeEndElement();
+            xmlWriter.writeEndElement();
+        }
     }
 }
index 717e6473e007423d31d7e07efdc955af1b6bf790..704291597e96825c68fe458883c4101710618a2c 100644 (file)
@@ -545,8 +545,7 @@ public class ListenerAdapterTest extends AbstractConcurrentDataBrokerTest {
 
     static String withFakeDate(final String in) throws JSONException {
         final JSONObject doc = new JSONObject(in);
-        final JSONObject notification =
-                doc.getJSONObject("urn-ietf-params-xml-ns-netconf-notification-1.0:notification");
+        final JSONObject notification = doc.getJSONObject("ietf-restconf:notification");
         if (notification == null) {
             return in;
         }
diff --git a/restconf/restconf-nb/src/test/resources/instanceidentifier/yang/sal-remote.yang b/restconf/restconf-nb/src/test/resources/instanceidentifier/yang/sal-remote.yang
new file mode 100644 (file)
index 0000000..0caefe1
--- /dev/null
@@ -0,0 +1,95 @@
+module sal-remote {
+
+    yang-version 1;
+    namespace "urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote";
+    prefix "sal-remote";
+
+    organization "Cisco Systems, Inc.";
+    contact "Martin Bobak <mbobak@cisco.com>";
+
+    description
+          "This module contains the definition of methods related to
+           sal remote model.
+
+           Copyright (c)2013 Cisco Systems, Inc. All rights reserved.
+
+           This program and the accompanying materials are made available
+           under the terms of the Eclipse Public License v1.0 which
+           accompanies this distribution, and is available at
+           http://www.eclipse.org/legal/epl-v10.html";
+
+    revision "2014-01-14" {
+        description "Initial revision";
+    }
+
+    typedef q-name {
+        type string;
+        reference "http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#QName";
+    }
+
+    rpc create-data-change-event-subscription {
+        input {
+            leaf path {
+                type instance-identifier;
+                description "Subtree path. ";
+                mandatory true;
+            }
+        }
+        output {
+            leaf stream-name {
+                type string;
+                description "Notification stream name.";
+            }
+        }
+    }
+
+    notification data-changed-notification {
+        description "Data change notification.";
+        list data-change-event {
+            key path;
+            leaf path {
+                type instance-identifier;
+            }
+            leaf store {
+                type enumeration {
+                    enum config;
+                    enum operation;
+                }
+            }
+            leaf operation {
+                type enumeration {
+                    enum created;
+                    enum updated;
+                    enum deleted;
+                }
+            }
+            anyxml data{
+                description "DataObject ";
+            }
+         }
+    }
+
+    rpc create-notification-stream {
+        input {
+            leaf-list notifications {
+                type q-name;
+                description "Notification QNames";
+                min-elements 1;
+            }
+         }
+        output {
+            leaf notification-stream-identifier {
+                type string;
+                description "Unique notification stream identifier, in which notifications will be propagated";
+            }
+        }
+    }
+
+    rpc begin-transaction {
+        output {
+            anyxml data-modification-transaction {
+                description "DataModificationTransaction xml";
+            }
+        }
+    }
+}
index 4b1df00758cbad68cfb3f1be0e81011e80b5af35..c55f655878f9f41cc4821256bbe9920c1ad23b5b 100644 (file)
@@ -1,37 +1,37 @@
 {
-  "urn-ietf-params-xml-ns-netconf-notification-1.0:notification": {
-    "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification": {
-      "data-change-event": [
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']/instance-identifier-patch-module:my-leaf11",
-          "data": {
-            "instance-identifier-patch-module:my-leaf11": "Jed"
-          },
-          "operation": "created"
-        },
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']/instance-identifier-patch-module:name",
-          "data": {
-            "instance-identifier-patch-module:name": "Althea"
-          },
-          "operation": "created"
-        },
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/augment-instance-identifier-patch-module:leaf1",
-          "data": {
-            "augment-iip-module:leaf1": "AugmentLeaf"
-          },
-          "operation": "created"
-        },
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/augment-instance-identifier-patch-module:patch-choice2/augment-instance-identifier-patch-module:patch-sub-choice11/augment-instance-identifier-patch-module:patch-sub-sub-choice11/augment-instance-identifier-patch-module:case-leaf11",
-          "data": {
-            "augment-iip-module:case-leaf11": "ChoiceLeaf"
-          },
-          "operation": "created"
+    "ietf-restconf:notification" : {
+        "event-time": "2022-09-22T19:07:42.107085298+02:00",
+        "sal-remote:data-changed-notification" : {
+            "data-change-event" : [
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']/my-leaf11",
+                    "operation" : "created",
+                    "data" : {
+                        "instance-identifier-patch-module:my-leaf11" : "Jed"
+                    }
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']/name",
+                    "operation" : "created",
+                    "data" : {
+                        "instance-identifier-patch-module:name" : "Althea"
+                    }
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/augment-iip-module:leaf1",
+                    "operation" : "created",
+                    "data" : {
+                        "augment-iip-module:leaf1" : "AugmentLeaf"
+                    }
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/augment-iip-module:case-leaf11",
+                    "operation" : "created",
+                    "data" : {
+                        "augment-iip-module:case-leaf11" : "ChoiceLeaf"
+                    }
+                }
+            ]
         }
-      ]
-    },
-    "event-time": "2022-09-22T19:07:42.107085298+02:00"
-  }
-}
\ No newline at end of file
+    }
+}
index cd08a612655d9b84f965d18783b7c9ed9a0ea2d3..65428a102090edd3dbc6b0002d76a103408d26b5 100644 (file)
@@ -1,29 +1,29 @@
 {
-  "urn-ietf-params-xml-ns-netconf-notification-1.0:notification": {
-    "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification": {
-      "data-change-event": [
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']/instance-identifier-patch-module:my-leaf11",
-          "operation": "deleted"
-        },
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']/instance-identifier-patch-module:name",
-          "operation": "deleted"
-        },
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']/instance-identifier-patch-module:my-leaf12",
-          "operation": "deleted"
-        },
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/augment-instance-identifier-patch-module:leaf1",
-          "operation": "deleted"
-        },
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/augment-instance-identifier-patch-module:patch-choice2/augment-instance-identifier-patch-module:patch-sub-choice11/augment-instance-identifier-patch-module:patch-sub-sub-choice11/augment-instance-identifier-patch-module:case-leaf11",
-          "operation": "deleted"
+    "ietf-restconf:notification" : {
+        "event-time": "2022-09-22T19:09:08.564261906+02:00",
+        "sal-remote:data-changed-notification" : {
+            "data-change-event" : [
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']/my-leaf11",
+                    "operation" : "deleted"
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']/name",
+                    "operation" : "deleted"
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']/my-leaf12",
+                    "operation" : "deleted"
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/augment-iip-module:leaf1",
+                    "operation" : "deleted"
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/augment-iip-module:case-leaf11",
+                    "operation" : "deleted"
+                }
+            ]
         }
-      ]
-    },
-    "event-time": "2022-09-22T19:09:08.564261906+02:00"
-  }
+    }
 }
index 816b3b73e24551496599982faf87734c4736bf8a..db263a2fc555fcaa7b51c1077555fbe0f71d0202 100644 (file)
@@ -1,23 +1,23 @@
 {
-  "urn-ietf-params-xml-ns-netconf-notification-1.0:notification": {
-    "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification": {
-      "data-change-event": [
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']/instance-identifier-patch-module:my-leaf12",
-          "data": {
-            "instance-identifier-patch-module:my-leaf12": "Bertha"
-          },
-          "operation": "created"
-        },
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/augment-instance-identifier-patch-module:patch-choice2/augment-instance-identifier-patch-module:patch-sub-choice11/augment-instance-identifier-patch-module:patch-sub-sub-choice11/augment-instance-identifier-patch-module:case-leaf11",
-          "data": {
-            "augment-iip-module:case-leaf11": "ChoiceUpdate"
-          },
-          "operation": "updated"
+    "ietf-restconf:notification" : {
+        "event-time" : "2022-09-22T19:08:32.400965352+02:00",
+        "sal-remote:data-changed-notification" : {
+            "data-change-event" : [
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']/my-leaf12",
+                    "operation" : "created",
+                    "data" : {
+                        "instance-identifier-patch-module:my-leaf12" : "Bertha"
+                    }
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/augment-iip-module:case-leaf11",
+                    "operation" : "updated",
+                    "data" : {
+                        "augment-iip-module:case-leaf11" : "ChoiceUpdate"
+                    }
+                }
+            ]
         }
-      ]
-    },
-    "event-time": "2022-09-22T19:08:32.400965352+02:00"
-  }
-}
\ No newline at end of file
+    }
+}
index e86e20be7ffb1619c298e60cd5bb61b5c3199b8e..c985b0a3a02729c7eb4957a8c9ce6879e815f10c 100644 (file)
@@ -1,6 +1,7 @@
 {
-    "urn-ietf-params-xml-ns-netconf-notification-1.0:notification":{
-        "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification":{
+    "ietf-restconf:notification":{
+        "event-time":"2020-10-14T11:16:51.111635+02:00",
+        "sal-remote:data-changed-notification":{
             "data-change-event":[
                 {
                     "path":"/instance-identifier-patch-module:patch-cont",
@@ -17,7 +18,6 @@
                     }
                 }
             ]
-        },
-        "event-time":"2020-10-14T11:16:51.111635+02:00"
+        }
     }
 }
index c0c5f34b2e4cffbc43ba7f8685b63c7ba5f4aabe..48b91eb51ff2093dccd030e7c7fa2dbbb6adb570 100644 (file)
@@ -1,13 +1,13 @@
 {
-    "urn-ietf-params-xml-ns-netconf-notification-1.0:notification":{
-        "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification":{
+    "ietf-restconf:notification":{
+        "event-time":"2020-10-14T11:20:33.271836+02:00",
+        "sal-remote:data-changed-notification":{
             "data-change-event":[
                 {
                     "path":"/instance-identifier-patch-module:patch-cont",
                     "operation":"deleted"
                 }
             ]
-        },
-        "event-time":"2020-10-14T11:20:33.271836+02:00"
+        }
     }
 }
index 0b67f483b07a5561699356b2069cd283605aa5d9..62db45f88ce4de4091951d9484a0ce755b0d75ed 100644 (file)
@@ -1,9 +1,10 @@
 {
-    "urn-ietf-params-xml-ns-netconf-notification-1.0:notification":{
-        "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification":{
+    "ietf-restconf:notification":{
+        "event-time":"2020-10-14T11:16:51.111635+02:00",
+        "sal-remote:data-changed-notification":{
             "data-change-event":[
                 {
-                    "path":"/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']",
+                    "path":"/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']",
                     "operation":"updated",
                     "data":{
                         "instance-identifier-patch-module:my-list1":[
@@ -15,7 +16,6 @@
                     }
                 }
             ]
-        },
-        "event-time":"2020-10-14T11:16:51.111635+02:00"
+        }
     }
 }
index 25c1331bc4f97ed612d75c3d017210cbbfb693d5..cc22ec175472754728fd533beeec0e73a634b7e1 100644 (file)
@@ -1,16 +1,16 @@
 {
-    "urn-ietf-params-xml-ns-netconf-notification-1.0:notification":{
-        "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification":{
+    "ietf-restconf:notification":{
+        "event-time":"2020-10-14T11:19:34.549843+02:00",
+        "sal-remote:data-changed-notification":{
             "data-change-event":[
                 {
-                    "path":"/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']/instance-identifier-patch-module:my-leaf11",
+                    "path":"/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']/my-leaf11",
                     "operation":"updated",
                     "data":{
                         "instance-identifier-patch-module:my-leaf11":"Jed"
                     }
                 }
             ]
-        },
-        "event-time":"2020-10-14T11:19:34.549843+02:00"
+        }
     }
 }
index 39748b97d610aafa39b52e0223ac0920ebfb54a1..9c6988e0bf2b31a8d60c8d03583db215a94d8753 100644 (file)
@@ -1,6 +1,6 @@
 {
-    "urn-ietf-params-xml-ns-netconf-notification-1.0:notification":{
-        "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification":{
+    "ietf-restconf:notification":{
+        "sal-remote:data-changed-notification":{
             "data-change-event":[
                 {
                     "path":"/instance-identifier-patch-module:patch-cont",
index 0c79ab64125a5ec299d3bf9bdd6b1c73ffd8acbb..aa8fcf48521b23c6fa344756e23b95c9534f7cda 100644 (file)
@@ -1,6 +1,6 @@
 {
-    "urn-ietf-params-xml-ns-netconf-notification-1.0:notification":{
-        "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification":{
+    "ietf-restconf:notification":{
+        "sal-remote:data-changed-notification":{
             "data-change-event":[
                 {
                     "path":"/instance-identifier-patch-module:patch-cont",
index 55dc269df8961c3e31be46f2c33ad67f11741ae7..71d5cad38351d3cbca562ac349a9ebd17fa6a162 100644 (file)
@@ -1,6 +1,6 @@
 {
-    "urn-ietf-params-xml-ns-netconf-notification-1.0:notification":{
-        "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification":{
+    "ietf-restconf:notification":{
+        "sal-remote:data-changed-notification":{
             "data-change-event":[
                 {
                     "path":"/instance-identifier-patch-module:patch-cont",
index eb408f3b25ad88de650c82160ac8b787257806a9..413c4d425853f0353580b2bd35658969766dd838 100644 (file)
@@ -1,37 +1,37 @@
 {
-  "urn-ietf-params-xml-ns-netconf-notification-1.0:notification": {
-    "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification": {
-      "data-change-event": [
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']/instance-identifier-patch-module:my-leaf11",
-          "data": {
-            "instance-identifier-patch-module:my-leaf11": "Jed"
-          },
-          "operation": "created"
-        },
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']/instance-identifier-patch-module:name",
-          "data": {
-            "instance-identifier-patch-module:name": "Althea"
-          },
-          "operation": "created"
-        },
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/augment-instance-identifier-patch-module:patch-choice1/augment-instance-identifier-patch-module:case-leaf1",
-          "data": {
-            "augment-iip-module:case-leaf1": "ChoiceLeaf"
-          },
-          "operation": "created"
-        },
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/augment-instance-identifier-patch-module:leaf1",
-          "data": {
-            "augment-iip-module:leaf1": "AugmentLeaf"
-          },
-          "operation": "created"
+    "ietf-restconf:notification" : {
+        "event-time" : "2022-02-18T18:04:25.177143+01:00",
+        "sal-remote:data-changed-notification" : {
+            "data-change-event" : [
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']/name",
+                    "operation" : "created",
+                    "data" : {
+                        "instance-identifier-patch-module:name" : "Althea"
+                    }
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']/my-leaf11",
+                    "operation" : "created",
+                    "data" : {
+                        "instance-identifier-patch-module:my-leaf11" : "Jed"
+                    }
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/augment-iip-module:leaf1",
+                    "operation" : "created",
+                    "data" : {
+                        "augment-iip-module:leaf1" : "AugmentLeaf"
+                    }
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/augment-iip-module:case-leaf1",
+                    "operation":"created",
+                    "data" : {
+                        "augment-iip-module:case-leaf1" : "ChoiceLeaf"
+                    }
+                }
+            ]
         }
-      ]
-    },
-    "event-time": "2022-02-18T18:04:25.177143+01:00"
-  }
-}
\ No newline at end of file
+    }
+}
index 7bba9222549d4bf29e0db5096e56eb849017e168..0249a97226562cf77c8cf792cee2bfb64be06320 100644 (file)
@@ -1,29 +1,29 @@
 {
-  "urn-ietf-params-xml-ns-netconf-notification-1.0:notification": {
-    "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification": {
-      "data-change-event": [
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']/instance-identifier-patch-module:my-leaf11",
-          "operation": "deleted"
-        },
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']/instance-identifier-patch-module:name",
-          "operation": "deleted"
-        },
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']/instance-identifier-patch-module:my-leaf12",
-          "operation": "deleted"
-        },
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/augment-instance-identifier-patch-module:patch-choice1/augment-instance-identifier-patch-module:case-leaf1",
-          "operation": "deleted"
-        },
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/augment-instance-identifier-patch-module:leaf1",
-          "operation": "deleted"
+    "ietf-restconf:notification" : {
+        "event-time": "2022-02-18T18:07:48.662524+01:00",
+        "sal-remote:data-changed-notification" : {
+            "data-change-event" : [
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']/my-leaf11",
+                    "operation" : "deleted"
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']/name",
+                    "operation" : "deleted"
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']/my-leaf12",
+                    "operation" : "deleted"
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/augment-iip-module:leaf1",
+                    "operation" : "deleted"
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/augment-iip-module:case-leaf1",
+                    "operation" : "deleted"
+                }
+            ]
         }
-      ]
-    },
-    "event-time": "2022-02-18T18:07:48.662524+01:00"
-  }
-}
\ No newline at end of file
+    }
+}
index ea825fd10346fbc36226117bc6cb1749317f00fc..21bb5cb0173b99674b3ef0f83b8374c2aab50e97 100644 (file)
@@ -1,37 +1,37 @@
 {
-  "urn-ietf-params-xml-ns-netconf-notification-1.0:notification": {
-    "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification": {
-      "data-change-event": [
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']/instance-identifier-patch-module:name",
-          "data": {
-            "instance-identifier-patch-module:name": "Althea"
-          },
-          "operation": "updated"
-        },
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']/instance-identifier-patch-module:my-leaf12",
-          "data": {
-            "instance-identifier-patch-module:my-leaf12": "Bertha"
-          },
-          "operation": "created"
-        },
-        {
-        "path": "/instance-identifier-patch-module:patch-cont/augment-instance-identifier-patch-module:patch-choice1/augment-instance-identifier-patch-module:case-leaf1",
-        "data": {
-          "augment-iip-module:case-leaf1": "ChoiceUpdate"
-        },
-          "operation": "updated"
-        },
-        {
-          "path": "/instance-identifier-patch-module:patch-cont/augment-instance-identifier-patch-module:leaf1",
-          "data": {
-            "augment-iip-module:leaf1": "AugmentLeaf"
-          },
-          "operation": "updated"
+    "ietf-restconf:notification" : {
+        "event-time": "2022-02-18T18:04:25.214583+01:00",
+        "sal-remote:data-changed-notification" : {
+            "data-change-event" : [
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']/name",
+                    "operation" : "updated",
+                    "data" : {
+                        "instance-identifier-patch-module:name" : "Althea"
+                    }
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']/my-leaf12",
+                    "operation" : "created",
+                    "data" : {
+                        "instance-identifier-patch-module:my-leaf12" : "Bertha"
+                    }
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/augment-iip-module:leaf1",
+                    "operation" : "updated",
+                    "data" : {
+                        "augment-iip-module:leaf1" : "AugmentLeaf"
+                    }
+                },
+                {
+                    "path" : "/instance-identifier-patch-module:patch-cont/augment-iip-module:case-leaf1",
+                    "operation" : "updated",
+                    "data" : {
+                        "augment-iip-module:case-leaf1" : "ChoiceUpdate"
+                    }
+                }
+            ]
         }
-      ]
-    },
-    "event-time": "2022-02-18T18:04:25.214583+01:00"
-  }
-}
\ No newline at end of file
+    }
+}
index b9c2eeb93f9567396961f8e00a3455cbda49fb7b..04bf6dccb2466dfb5d1d04a97fdab58cefd6fdf2 100644 (file)
@@ -1,21 +1,21 @@
 {
-    "urn-ietf-params-xml-ns-netconf-notification-1.0:notification":{
-        "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification":{
-            "data-change-event":[
+    "ietf-restconf:notification" : {
+        "event-time" : "2020-10-14T11:16:51.111635+02:00",
+        "sal-remote:data-changed-notification" : {
+            "data-change-event" : [
                 {
-                    "path":"/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']",
-                    "data":{
-                        "instance-identifier-patch-module:my-list1":[
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']",
+                    "operation" : "created",
+                    "data" : {
+                        "instance-identifier-patch-module:my-list1" : [
                             {
-                                "name":"Althea",
-                                "my-leaf11":"Jed"
+                                "name" : "Althea",
+                                "my-leaf11" : "Jed"
                             }
                         ]
-                    },
-                    "operation":"created"
+                    }
                 }
             ]
-        },
-        "event-time":"2020-10-14T11:16:51.111635+02:00"
+        }
     }
 }
index e60fb2ec4b33c97c87fd1148a37bd6e21c5db5dd..39318d39e075aa395b44b13a203ed4f8de1ff6d5 100644 (file)
@@ -1,13 +1,13 @@
 {
-    "urn-ietf-params-xml-ns-netconf-notification-1.0:notification":{
-        "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification":{
-            "data-change-event":[
+    "ietf-restconf:notification" : {
+        "event-time":"2020-10-14T11:20:33.271836+02:00",
+        "sal-remote:data-changed-notification" : {
+            "data-change-event" : [
                 {
-                    "path":"/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']",
-                    "operation":"deleted"
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']",
+                    "operation" : "deleted"
                 }
             ]
-        },
-        "event-time":"2020-10-14T11:20:33.271836+02:00"
+        }
     }
 }
index 209bbb7873e3c54a15f37cf9a688ebd90cfb1974..7e25fe7082d91c16ab21f99901010bd99d938aa4 100644 (file)
@@ -1,22 +1,22 @@
 {
-    "urn-ietf-params-xml-ns-netconf-notification-1.0:notification":{
-        "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification":{
-            "data-change-event":[
+    "ietf-restconf:notification" : {
+        "event-time":"2020-10-14T11:19:34.549843+02:00",
+        "sal-remote:data-changed-notification" : {
+            "data-change-event" : [
                 {
-                    "path":"/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']",
-                    "data":{
-                        "instance-identifier-patch-module:my-list1":[
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']",
+                    "operation" : "updated",
+                    "data" : {
+                        "instance-identifier-patch-module:my-list1" : [
                             {
-                                "name":"Althea",
-                                "my-leaf11":"Jed",
-                                "my-leaf12":"Bertha"
+                                "name" : "Althea",
+                                "my-leaf11" : "Jed",
+                                "my-leaf12" : "Bertha"
                             }
                         ]
-                    },
-                    "operation":"updated"
+                    }
                 }
             ]
-        },
-        "event-time":"2020-10-14T11:19:34.549843+02:00"
+        }
     }
 }
index 5ba501222380c38c281e3d25b28ed91164292870..86cb665e12f0c43ff848f5341e697c8bbe003633 100644 (file)
@@ -1,6 +1,6 @@
 {
-    "urn-ietf-params-xml-ns-netconf-notification-1.0:notification":{
-        "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification":{
+    "ietf-restconf:notification":{
+        "sal-remote:data-changed-notification":{
             "data-change-event":[
                 {
                     "path":"/instance-identifier-patch-module:patch-cont",
index bcf15972a5004665312beb0fff59588a1a51f4c9..31da58c7f958bde7b14558f8b7bc6aa94243ce6c 100644 (file)
@@ -1,6 +1,6 @@
 {
-    "urn-ietf-params-xml-ns-netconf-notification-1.0:notification":{
-        "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification":{
+    "ietf-restconf:notification":{
+        "sal-remote:data-changed-notification":{
             "data-change-event":[
                 {
                     "path":"/instance-identifier-patch-module:patch-cont",
index 703b978f9b4c16882a2141e9559e72fc20a0840e..7ceec0a2880cae824a6d91a21d7db0e9f919bc45 100644 (file)
@@ -1,6 +1,6 @@
 {
-    "urn-ietf-params-xml-ns-netconf-notification-1.0:notification":{
-        "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification":{
+    "ietf-restconf:notification":{
+        "sal-remote:data-changed-notification":{
             "data-change-event":[
                 {
                     "path":"/instance-identifier-patch-module:patch-cont",
index 56f32e79eb17ee9bab86cabd04cf2021bd8b82cb..f54a9fae32ceeca33bf229c1bb1e7a73c71e34ce 100644 (file)
@@ -1,13 +1,13 @@
 {
-    "urn-ietf-params-xml-ns-netconf-notification-1.0:notification":{
-        "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification":{
-            "data-change-event":[
+    "ietf-restconf:notification" : {
+        "event-time":"2020-10-14T12:34:59.085525+02:00",
+        "sal-remote:data-changed-notification" : {
+            "data-change-event" : [
                 {
-                    "path":"/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']",
-                    "operation":"created"
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']",
+                    "operation" : "created"
                 }
             ]
-        },
-        "event-time":"2020-10-14T12:34:59.085525+02:00"
+        }
     }
 }
index 089eebbf123ea8563e3ede3b20b0a199e4ae84b9..20a31dbe270ee6e1f76b0c9ce4f7b5913cd7a6fe 100644 (file)
@@ -1,13 +1,13 @@
 {
-    "urn-ietf-params-xml-ns-netconf-notification-1.0:notification":{
-        "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification":{
-            "data-change-event":[
+    "ietf-restconf:notification" : {
+        "event-time":"2020-10-14T12:34:59.085525+02:00",
+        "sal-remote:data-changed-notification" : {
+            "data-change-event" : [
                 {
-                    "path":"/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']",
-                    "operation":"deleted"
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']",
+                    "operation" : "deleted"
                 }
             ]
-        },
-        "event-time":"2020-10-14T12:34:59.085525+02:00"
+        }
     }
 }
index 0e051bba91973be688ab1802115b17e837689273..9cab46dd39f8e0bb4b5581e1f42d56a9c9e6fa10 100644 (file)
@@ -1,13 +1,13 @@
 {
-    "urn-ietf-params-xml-ns-netconf-notification-1.0:notification":{
-        "urn-opendaylight-params-xml-ns-yang-controller-md-sal-remote:data-changed-notification":{
-            "data-change-event":[
+    "ietf-restconf:notification" : {
+        "event-time":"2020-10-14T12:34:59.085525+02:00",
+        "sal-remote:data-changed-notification" : {
+            "data-change-event" : [
                 {
-                    "path":"/instance-identifier-patch-module:patch-cont/instance-identifier-patch-module:my-list1/instance-identifier-patch-module:my-list1[instance-identifier-patch-module:name='Althea']",
-                    "operation":"updated"
+                    "path" : "/instance-identifier-patch-module:patch-cont/my-list1[name='Althea']",
+                    "operation" : "updated"
                 }
             ]
-        },
-        "event-time":"2020-10-14T12:34:59.085525+02:00"
+        }
     }
 }