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%2FContainerSchemaNodeBuilder.java;h=c85c12fcd5f6bcbdd6c593749c9c226bc4c3050c;hb=88187167a1b7928602fd8d72cb7d4dc2b38dfa70;hp=a194dea927a0e9097f5c8143f5bdddb7c6c5ad4e;hpb=b36cea2d468e8f572f0159332b0668fc35c95912;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/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 a194dea927..c85c12fcd5 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 @@ -9,11 +9,12 @@ 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; import org.opendaylight.controller.yang.model.api.AugmentationSchema; @@ -29,27 +30,23 @@ import org.opendaylight.controller.yang.model.api.UsesNode; import org.opendaylight.controller.yang.parser.builder.api.AbstractDataNodeContainerBuilder; import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder; import org.opendaylight.controller.yang.parser.builder.api.AugmentationTargetBuilder; -import org.opendaylight.controller.yang.parser.builder.api.ConfigNode; 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.GroupingMember; -import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionAwareBuilder; 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; public final class ContainerSchemaNodeBuilder extends AbstractDataNodeContainerBuilder implements - TypeDefinitionAwareBuilder, AugmentationTargetBuilder, DataSchemaNodeBuilder, GroupingMember, ConfigNode { + AugmentationTargetBuilder, DataSchemaNodeBuilder, GroupingMember { private boolean isBuilt; private final ContainerSchemaNodeImpl instance; - private final int line; // SchemaNode args private SchemaPath schemaPath; private String description; private String reference; private Status status = Status.CURRENT; - private List unknownNodes; - private final List addedUnknownNodes = new ArrayList(); // DataSchemaNode args private boolean augmenting; private boolean addedByUses; @@ -66,17 +63,15 @@ public final class ContainerSchemaNodeBuilder extends AbstractDataNodeContainerB // ContainerSchemaNode args private boolean presence; - public ContainerSchemaNodeBuilder(final QName qname, final SchemaPath schemaPath, final int line) { - super(qname); + public ContainerSchemaNodeBuilder(final int line, final QName qname, final SchemaPath schemaPath) { + super(line, qname); this.schemaPath = schemaPath; - this.line = line; instance = new ContainerSchemaNodeImpl(qname); constraints = new ConstraintsBuilder(line); } public ContainerSchemaNodeBuilder(final ContainerSchemaNodeBuilder b) { - super(b.getQName()); - line = b.getLine(); + super(b.getLine(), b.getQName()); instance = new ContainerSchemaNodeImpl(b.getQName()); constraints = b.getConstraints(); schemaPath = b.getPath(); @@ -98,7 +93,7 @@ public final class ContainerSchemaNodeBuilder extends AbstractDataNodeContainerB augmentations = b.augmentations; addedAugmentations.addAll(b.getAugmentations()); unknownNodes = b.unknownNodes; - addedUnknownNodes.addAll(b.getUnknownNodes()); + addedUnknownNodes.addAll(b.getUnknownNodeBuilders()); } @Override @@ -112,14 +107,15 @@ public final class ContainerSchemaNodeBuilder extends AbstractDataNodeContainerB instance.setAugmenting(augmenting); instance.setAddedByUses(addedByUses); - // if this builder represents rpc input or output, it can has configuration value set to null - if(configuration == null) { + // if this builder represents rpc input or output, it can has + // configuration value set to null + if (configuration == null) { configuration = false; } instance.setConfiguration(configuration); // CHILD NODES - final Map childs = new HashMap(); + final Map childs = new TreeMap(Comparators.QNAME_COMP); if (childNodes == null) { for (DataSchemaNodeBuilder node : addedChildNodes) { childs.put(node.getQName(), node.build()); @@ -133,7 +129,7 @@ public final class ContainerSchemaNodeBuilder extends AbstractDataNodeContainerB // GROUPINGS if (groupings == null) { - groupings = new HashSet(); + groupings = new TreeSet(Comparators.SCHEMA_NODE_COMP); for (GroupingBuilder builder : addedGroupings) { groupings.add(builder.build()); } @@ -142,7 +138,7 @@ public final class ContainerSchemaNodeBuilder extends AbstractDataNodeContainerB // TYPEDEFS if (typedefs == null) { - typedefs = new HashSet>(); + typedefs = new TreeSet>(Comparators.SCHEMA_NODE_COMP); for (TypeDefinitionBuilder entry : addedTypedefs) { typedefs.add(entry.build()); } @@ -173,6 +169,7 @@ public final class ContainerSchemaNodeBuilder extends AbstractDataNodeContainerB for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { unknownNodes.add(b.build()); } + Collections.sort(unknownNodes, Comparators.SCHEMA_NODE_COMP); } instance.setUnknownSchemaNodes(unknownNodes); @@ -190,11 +187,6 @@ public final class ContainerSchemaNodeBuilder extends AbstractDataNodeContainerB build(); } - @Override - public int getLine() { - return line; - } - @Override public Set getTypeDefinitionBuilders() { return addedTypedefs; @@ -319,22 +311,46 @@ public final class ContainerSchemaNodeBuilder extends AbstractDataNodeContainerB this.presence = presence; } - public List getUnknownNodes() { - return addedUnknownNodes; - } - @Override - public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownNode) { - addedUnknownNodes.add(unknownNode); + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((schemaPath == null) ? 0 : schemaPath.hashCode()); + return result; } - public void setUnknownNodes(List unknownNodes) { - this.unknownNodes = unknownNodes; + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + ContainerSchemaNodeBuilder other = (ContainerSchemaNodeBuilder) obj; + if (schemaPath == null) { + if (other.schemaPath != null) { + return false; + } + } else if (!schemaPath.equals(other.schemaPath)) { + return false; + } + if (parent == null) { + if (other.parent != null) { + return false; + } + } else if (!parent.equals(other.parent)) { + return false; + } + return true; } @Override public String toString() { - return "container " + getQName().getLocalName(); + return "container " + qname.getLocalName(); } public final class ContainerSchemaNodeImpl implements ContainerSchemaNode {