X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fyang-model-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fyang%2Fparser%2Fbuilder%2Fimpl%2FContainerSchemaNodeBuilder.java;h=0bc56d430a97d83d7a2944ddd9938bc3907126d4;hp=c85c12fcd5f6bcbdd6c593749c9c226bc4c3050c;hb=ac39de5a9b96438d30df745895454c02e15e51e3;hpb=44074929291b0f03b78595f01ec177fafedc237b diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ContainerSchemaNodeBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ContainerSchemaNodeBuilder.java index c85c12fcd5..0bc56d430a 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ContainerSchemaNodeBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ContainerSchemaNodeBuilder.java @@ -36,6 +36,7 @@ import org.opendaylight.controller.yang.parser.builder.api.GroupingMember; import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder; import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder; import org.opendaylight.controller.yang.parser.util.Comparators; +import org.opendaylight.controller.yang.parser.util.YangParseException; public final class ContainerSchemaNodeBuilder extends AbstractDataNodeContainerBuilder implements AugmentationTargetBuilder, DataSchemaNodeBuilder, GroupingMember { @@ -63,15 +64,16 @@ public final class ContainerSchemaNodeBuilder extends AbstractDataNodeContainerB // ContainerSchemaNode args private boolean presence; - public ContainerSchemaNodeBuilder(final int line, final QName qname, final SchemaPath schemaPath) { - super(line, qname); + public ContainerSchemaNodeBuilder(final String moduleName, final int line, final QName qname, + final SchemaPath schemaPath) { + super(moduleName, line, qname); this.schemaPath = schemaPath; instance = new ContainerSchemaNodeImpl(qname); - constraints = new ConstraintsBuilder(line); + constraints = new ConstraintsBuilder(moduleName, line); } public ContainerSchemaNodeBuilder(final ContainerSchemaNodeBuilder b) { - super(b.getLine(), b.getQName()); + super(b.getModuleName(), b.getLine(), b.getQName()); instance = new ContainerSchemaNodeImpl(b.getQName()); constraints = b.getConstraints(); schemaPath = b.getPath(); @@ -116,7 +118,7 @@ public final class ContainerSchemaNodeBuilder extends AbstractDataNodeContainerB // CHILD NODES final Map childs = new TreeMap(Comparators.QNAME_COMP); - if (childNodes == null) { + if (childNodes == null || childNodes.isEmpty()) { for (DataSchemaNodeBuilder node : addedChildNodes) { childs.put(node.getQName(), node.build()); } @@ -194,6 +196,11 @@ public final class ContainerSchemaNodeBuilder extends AbstractDataNodeContainerB @Override public void addTypedef(final TypeDefinitionBuilder type) { + String typeName = type.getQName().getLocalName(); + for (TypeDefinitionBuilder addedTypedef : addedTypedefs) { + throw new YangParseException(moduleName, type.getLine(), "Can not add typedef '" + typeName + + "': typedef with same name already declared at line " + addedTypedef.getLine()); + } addedTypedefs.add(type); }