Support AnydataNode in ParameterAwareNormalizedNodeWriter 37/100037/1
authorSangwook Ha <sangwook.ha@verizon.com>
Sun, 27 Mar 2022 22:15:29 +0000 (15:15 -0700)
committerRobert Varga <nite@hq.sk>
Mon, 28 Mar 2022 21:08:30 +0000 (21:08 +0000)
AnydataNode is not processed in ParameterAwareNormalizedNodeWriter
throwing IllegalStateException. Add a step to check/process AnydataNode
in wasProcessAsSimpleNode().

JIRA: NETCONF-868
Change-Id: I637890ff6779d0a532ee6d4182e4c36baa4f5231
Signed-off-by: Sangwook Ha <sangwook.ha@verizon.com>
(cherry picked from commit 0b55436b34f4c764da926d8a9318af68a8c3cc98)

restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/ParameterAwareNormalizedNodeWriter.java

index 378e9ddda8d38f65c2b0dc399a92d24cf7f56046..8872e56ae56dbdf35882d787f5394e592b60cc30 100644 (file)
@@ -23,6 +23,7 @@ import org.opendaylight.restconf.nb.rfc8040.DepthParam;
 import org.opendaylight.restconf.nb.rfc8040.jersey.providers.api.RestconfNormalizedNodeWriter;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
+import org.opendaylight.yangtools.yang.data.api.schema.AnydataNode;
 import org.opendaylight.yangtools.yang.data.api.schema.AnyxmlNode;
 import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
 import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
@@ -172,8 +173,16 @@ public class ParameterAwareNormalizedNodeWriter implements RestconfNormalizedNod
                     writer.scalarValue(anyxmlNode.body());
                 }
                 writer.endNode();
+                return true;
+            }
+        } else if (node instanceof AnydataNode) {
+            final AnydataNode<?> anydataNode = (AnydataNode<?>)node;
+            final Class<?> objectModel = anydataNode.bodyObjectModel();
+            if (writer.startAnydataNode(anydataNode.getIdentifier(), objectModel)) {
+                writer.scalarValue(anydataNode.body());
+                writer.endNode();
+                return true;
             }
-            return true;
         }
 
         return false;