X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fimpl%2Fschema%2Ftransform%2Fbase%2Fparser%2FNodeParserDispatcher.java;h=d38b39868a3caa025af64db5b4eaff36836ea052;hb=ea32c2c6fac2ebe9d0e30c9c4e5279c5ef0d2314;hp=40722b3aee8a15c05f37c9974e475f7fc67d5478;hpb=194f04e062a382cd234ac3f8e1b69f269de0b8fb;p=yangtools.git diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/parser/NodeParserDispatcher.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/parser/NodeParserDispatcher.java index 40722b3aee..d38b39868a 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/parser/NodeParserDispatcher.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/parser/NodeParserDispatcher.java @@ -7,18 +7,18 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser; +import com.google.common.base.Preconditions; import java.util.List; - import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; import org.opendaylight.yangtools.yang.data.impl.schema.transform.ToNormalizedNodeParserFactory; +import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode; import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceNode; +import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; 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 com.google.common.base.Preconditions; +import org.opendaylight.yangtools.yang.model.api.YangModeledAnyXmlSchemaNode; /** * @@ -34,7 +34,7 @@ public interface NodeParserDispatcher { * 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 implements NodeParserDispatcher { + abstract class BaseNodeParserDispatcher implements NodeParserDispatcher { private final ToNormalizedNodeParserFactory factory; protected BaseNodeParserDispatcher(final ToNormalizedNodeParserFactory factory) { @@ -42,8 +42,8 @@ public interface NodeParserDispatcher { } @Override - public final DataContainerChild dispatchChildElement(Object schema, List childNodes) { - Preconditions.checkArgument(childNodes.isEmpty() == false); + public final DataContainerChild dispatchChildElement(final Object schema, final List childNodes) { + Preconditions.checkArgument(!childNodes.isEmpty()); if (schema instanceof ContainerSchemaNode) { return factory.getContainerNodeParser().parse(childNodes, (ContainerSchemaNode) schema); @@ -52,11 +52,22 @@ public interface NodeParserDispatcher { } else if (schema instanceof LeafListSchemaNode) { return factory.getLeafSetNodeParser().parse(childNodes, (LeafListSchemaNode) schema); } else if (schema instanceof ListSchemaNode) { - return factory.getMapNodeParser().parse(childNodes, (ListSchemaNode) schema); - } else if (schema instanceof ChoiceNode) { - return factory.getChoiceNodeParser().parse(childNodes, (ChoiceNode) schema); + final ListSchemaNode listSchemaNode = (ListSchemaNode)schema; + 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); + } + } else if (schema instanceof ChoiceSchemaNode) { + 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); } throw new IllegalArgumentException("Unable to parse node, unknown schema type: " + schema.getClass());