BUG 1975 - yang unkeyed list is transformed to map node
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / transform / base / serializer / NodeSerializerDispatcher.java
index c686c31cba4871577c415937262c62b00c5046fd..e1ac42e5ec1e1d0fc3289841d535b24cb3921b6a 100644 (file)
@@ -19,6 +19,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MixinNode;
+import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.FromNormalizedNodeSerializerFactory;
 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
@@ -65,7 +66,9 @@ public interface NodeSerializerDispatcher<E> {
                 if (dataContainerChild instanceof LeafSetNode<?>) {
                     return onLeafListNode(childSchema, dataContainerChild);
                 } else if (dataContainerChild instanceof MapNode) {
-                    return onListNode(childSchema, dataContainerChild);
+                    return onMapNode(childSchema, dataContainerChild);
+                } else if (dataContainerChild instanceof  UnkeyedListNode) {
+                    return onUnkeyedListNode(childSchema, dataContainerChild);
                 } else if (dataContainerChild instanceof ChoiceNode) {
                     return onChoiceNode(childSchema, dataContainerChild);
                 } else if (dataContainerChild instanceof AugmentationNode) {
@@ -91,12 +94,18 @@ public interface NodeSerializerDispatcher<E> {
                             (ChoiceNode) dataContainerChild);
         }
 
-        private Iterable<E> onListNode(Object childSchema,
+        private Iterable<E> onMapNode(Object childSchema,
                 DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
             checkSchemaCompatibility(childSchema, ListSchemaNode.class, dataContainerChild);
             return factory.getMapNodeSerializer().serialize((ListSchemaNode) childSchema, (MapNode) dataContainerChild);
         }
 
+        private Iterable<E> onUnkeyedListNode(Object childSchema,
+                DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
+            checkSchemaCompatibility(childSchema, ListSchemaNode.class, dataContainerChild);
+            return factory.getUnkeyedListNodeSerializer().serialize((ListSchemaNode) childSchema, (UnkeyedListNode) dataContainerChild);
+        }
+
         private Iterable<E> onLeafListNode(Object childSchema,
                 DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
             checkSchemaCompatibility(childSchema, LeafListSchemaNode.class, dataContainerChild);