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=c316e72b02a59e3fe2a1aaf4441efca4c43cf80a;hpb=c5e58b6841e2f9d9bcd7808d4f3073b1c4792d26;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 c316e72b02..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 @@ -13,11 +13,12 @@ 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 org.opendaylight.yangtools.yang.model.api.YangModeledAnyXmlSchemaNode; /** * @@ -33,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) { @@ -41,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); @@ -51,11 +52,20 @@ 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); }