Bug 3874: Support of yang modeled AnyXML - XML deserialization
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / transform / base / parser / NodeParserDispatcher.java
index 3d79451b75b403ccecc482d608753dc4b8254d16..d38b39868a3caa025af64db5b4eaff36836ea052 100644 (file)
@@ -18,6 +18,7 @@ import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.YangModeledAnyXmlSchemaNode;
 
 /**
  *
@@ -33,7 +34,7 @@ public interface NodeParserDispatcher<E> {
      * Abstract implementation that implements the dispatch conditions. Only requires parsers to be provided.
      * The same instance of parser can be provided in case it is immutable.
      */
-    public static abstract class BaseNodeParserDispatcher<E> implements NodeParserDispatcher<E> {
+    abstract class BaseNodeParserDispatcher<E> implements NodeParserDispatcher<E> {
         private final ToNormalizedNodeParserFactory<E> factory;
 
         protected BaseNodeParserDispatcher(final ToNormalizedNodeParserFactory<E> factory) {
@@ -52,10 +53,10 @@ public interface NodeParserDispatcher<E> {
                 return factory.getLeafSetNodeParser().parse(childNodes, (LeafListSchemaNode) schema);
             } else if (schema instanceof ListSchemaNode) {
                 final ListSchemaNode listSchemaNode = (ListSchemaNode)schema;
-                if (listSchemaNode.isUserOrdered()) {
-                    return factory.getOrderedListNodeParser().parse(childNodes, listSchemaNode);
-                } else if (listSchemaNode.getKeyDefinition().isEmpty()) {
+                if (listSchemaNode.getKeyDefinition().isEmpty()) {
                     return factory.getUnkeyedListNodeParser().parse(childNodes, listSchemaNode);
+                } else if (listSchemaNode.isUserOrdered()) {
+                    return factory.getOrderedListNodeParser().parse(childNodes, listSchemaNode);
                 } else {
                     return factory.getMapNodeParser().parse(childNodes, listSchemaNode);
                 }
@@ -63,6 +64,8 @@ public interface NodeParserDispatcher<E> {
                 return factory.getChoiceNodeParser().parse(childNodes, (ChoiceSchemaNode) schema);
             } else if (schema instanceof AugmentationSchema) {
                 return factory.getAugmentationNodeParser().parse(childNodes, (AugmentationSchema) schema);
+            } else if (schema instanceof YangModeledAnyXmlSchemaNode) {
+                return factory.getYangModeledAnyXmlNodeParser().parse(childNodes,(YangModeledAnyXmlSchemaNode)schema);
             } else if (schema instanceof AnyXmlSchemaNode) {
                 return factory.getAnyXmlNodeParser().parse(childNodes,(AnyXmlSchemaNode)schema);
             }