X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fyang-model-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fyang%2Fparser%2Fbuilder%2Fimpl%2FGroupingBuilderImpl.java;h=8a8f1211cb474c3894852d566abd6197a34b13f5;hb=dd018bda91b9c3cd222aaa1bd2d8f734152571e8;hp=0f7179e791eeb761cf1b7528e94a96728eff348c;hpb=400baaf54049cf4d6159e7c03b7c6e724eaa5aa5;p=controller.git diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/GroupingBuilderImpl.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/GroupingBuilderImpl.java index 0f7179e791..8a8f1211cb 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/GroupingBuilderImpl.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/GroupingBuilderImpl.java @@ -9,11 +9,11 @@ package org.opendaylight.controller.yang.parser.builder.impl; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.TreeMap; import java.util.TreeSet; import org.opendaylight.controller.yang.common.QName; @@ -24,51 +24,38 @@ import org.opendaylight.controller.yang.model.api.Status; import org.opendaylight.controller.yang.model.api.TypeDefinition; import org.opendaylight.controller.yang.model.api.UnknownSchemaNode; import org.opendaylight.controller.yang.model.api.UsesNode; -import org.opendaylight.controller.yang.parser.builder.api.Builder; +import org.opendaylight.controller.yang.parser.builder.api.AbstractDataNodeContainerBuilder; import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder; import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder; 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 GroupingBuilderImpl implements GroupingBuilder { - private Builder parent; +public final class GroupingBuilderImpl extends AbstractDataNodeContainerBuilder implements GroupingBuilder { private boolean isBuilt; private final GroupingDefinitionImpl instance; - private final int line; - private final QName qname; private SchemaPath schemaPath; private String description; private String reference; private Status status = Status.CURRENT; private boolean addedByUses; - private Set childNodes; - private final Set addedChildNodes = new HashSet(); - - private Set groupings; - private final Set addedGroupings = new HashSet(); - private Set> typedefs; private final Set addedTypedefs = new HashSet(); private Set usesNodes; private final Set addedUsesNodes = new HashSet(); - private List unknownNodes; - private final List addedUnknownNodes = new ArrayList(); - - public GroupingBuilderImpl(final QName qname, final int line) { - this.qname = qname; + public GroupingBuilderImpl(final String moduleName, final int line, final QName qname) { + super(moduleName, line, qname); instance = new GroupingDefinitionImpl(qname); - this.line = line; } public GroupingBuilderImpl(GroupingBuilder builder) { - qname = builder.getQName(); + super(builder.getModuleName(), builder.getLine(), builder.getQName()); parent = builder.getParent(); instance = new GroupingDefinitionImpl(qname); - line = builder.getLine(); schemaPath = builder.getPath(); description = builder.getDescription(); reference = builder.getReference(); @@ -79,7 +66,7 @@ public final class GroupingBuilderImpl implements GroupingBuilder { groupings = builder.getGroupings(); addedGroupings.addAll(builder.getGroupingBuilders()); addedUsesNodes.addAll(builder.getUses()); - addedUnknownNodes.addAll(builder.getUnknownNodes()); + addedUnknownNodes.addAll(builder.getUnknownNodeBuilders()); } @Override @@ -92,8 +79,8 @@ public final class GroupingBuilderImpl implements GroupingBuilder { instance.setAddedByUses(addedByUses); // CHILD NODES - final Map childs = new HashMap(); - if (childNodes == null) { + final Map childs = new TreeMap(Comparators.QNAME_COMP); + if (childNodes == null || childNodes.isEmpty()) { for (DataSchemaNodeBuilder node : addedChildNodes) { childs.put(node.getQName(), node.build()); } @@ -147,25 +134,6 @@ public final class GroupingBuilderImpl implements GroupingBuilder { return instance; } - @Override - public int getLine() { - return line; - } - - @Override - public Builder getParent() { - return parent; - } - - @Override - public void setParent(final Builder parent) { - this.parent = parent; - } - - @Override - public QName getQName() { - return qname; - } @Override public Set getTypeDefinitionBuilders() { @@ -174,6 +142,11 @@ public final class GroupingBuilderImpl implements GroupingBuilder { @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); } @@ -231,56 +204,6 @@ public final class GroupingBuilderImpl implements GroupingBuilder { this.addedByUses = addedByUses; } - @Override - public DataSchemaNodeBuilder getChildNode(String name) { - DataSchemaNodeBuilder result = null; - for (DataSchemaNodeBuilder node : addedChildNodes) { - if (node.getQName().getLocalName().equals(name)) { - result = node; - break; - } - } - return result; - } - - @Override - public Set getChildNodes() { - return childNodes; - } - - @Override - public void addChildNode(final DataSchemaNodeBuilder childNode) { - addedChildNodes.add(childNode); - } - - @Override - public Set getChildNodeBuilders() { - return addedChildNodes; - } - - public void setChildNodes(final Set childNodes) { - this.childNodes = childNodes; - } - - @Override - public Set getGroupings() { - return Collections.emptySet(); - } - - @Override - public Set getGroupingBuilders() { - return addedGroupings; - } - - @Override - public void addGrouping(final GroupingBuilder grouping) { - addedGroupings.add(grouping); - } - - public void setGroupings(final Set groupings) { - this.groupings = groupings; - } - @Override public Set getUses() { return addedUsesNodes; @@ -296,17 +219,8 @@ public final class GroupingBuilderImpl implements GroupingBuilder { } @Override - public List getUnknownNodes() { - return addedUnknownNodes; - } - - @Override - public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) { - addedUnknownNodes.add(unknownNode); - } - - public void setUnknownNodes(List unknownNodes) { - this.unknownNodes = unknownNodes; + public String toString() { + return "grouping " + qname.getLocalName(); } private final class GroupingDefinitionImpl implements GroupingDefinition {