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%2FChoiceBuilder.java;fp=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fyang-model-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fyang%2Fparser%2Fbuilder%2Fimpl%2FChoiceBuilder.java;h=1b4283a46313dbf740c1f2c3b2f1e7594557cda4;hb=154b5dde1af41aff2ae0cc6e08400153162a4a3c;hp=0761618b06093bebfa60f1520722034fe3126513;hpb=c9006d027a5c5b639e57aa7b8484ec1ff3497dc8;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/ChoiceBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ChoiceBuilder.java index 0761618b06..1b4283a463 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ChoiceBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ChoiceBuilder.java @@ -12,6 +12,7 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.TreeSet; import org.opendaylight.controller.yang.common.QName; import org.opendaylight.controller.yang.model.api.AugmentationSchema; @@ -27,6 +28,7 @@ import org.opendaylight.controller.yang.parser.builder.api.AugmentationTargetBui 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.GroupingMember; +import org.opendaylight.controller.yang.parser.util.Comparators; import org.opendaylight.controller.yang.parser.util.ParserUtils; public final class ChoiceBuilder extends AbstractSchemaNodeBuilder implements DataSchemaNodeBuilder, @@ -47,17 +49,18 @@ public final class ChoiceBuilder extends AbstractSchemaNodeBuilder implements Da private final Set addedCases = new HashSet(); private String defaultCase; - public ChoiceBuilder(final QName qname, final int line) { - super(qname, line); + public ChoiceBuilder(final int line, final QName qname) { + super(line, qname); instance = new ChoiceNodeImpl(qname); constraints = new ConstraintsBuilder(line); } public ChoiceBuilder(ChoiceBuilder b) { - super(b.getQName(), b.getLine()); + super(b.getLine(), b.getQName()); + parent = b.getParent(); instance = new ChoiceNodeImpl(qname); - constraints = b.constraints; - path = b.getPath(); + constraints = b.getConstraints(); + schemaPath = b.getPath(); description = b.getDescription(); reference = b.getReference(); status = b.getStatus(); @@ -75,7 +78,7 @@ public final class ChoiceBuilder extends AbstractSchemaNodeBuilder implements Da @Override public ChoiceNode build() { if (!isBuilt) { - instance.setPath(path); + instance.setPath(schemaPath); instance.setDescription(description); instance.setReference(reference); instance.setStatus(status); @@ -87,7 +90,7 @@ public final class ChoiceBuilder extends AbstractSchemaNodeBuilder implements Da // CASES if (cases == null) { - cases = new HashSet(); + cases = new TreeSet(Comparators.SCHEMA_NODE_COMP); for (ChoiceCaseBuilder caseBuilder : addedCases) { cases.add(caseBuilder.build()); } @@ -107,6 +110,7 @@ public final class ChoiceBuilder extends AbstractSchemaNodeBuilder implements Da for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { unknownNodes.add(b.build()); } + Collections.sort(unknownNodes, Comparators.SCHEMA_NODE_COMP); } instance.setUnknownSchemaNodes(unknownNodes); @@ -127,7 +131,11 @@ public final class ChoiceBuilder extends AbstractSchemaNodeBuilder implements Da public void addChildNode(DataSchemaNodeBuilder childNode) { if (!(childNode instanceof ChoiceCaseBuilder)) { - ChoiceCaseBuilder caseBuilder = new ChoiceCaseBuilder(this, childNode.getQName(), childNode.getLine()); + ChoiceCaseBuilder caseBuilder = new ChoiceCaseBuilder(childNode.getLine(), childNode.getQName()); + if(childNode.isAugmenting()) { + caseBuilder.setAugmenting(true); + childNode.setAugmenting(false); + } caseBuilder.setPath(childNode.getPath()); SchemaPath newPath = ParserUtils.createSchemaPath(childNode.getPath(), childNode.getQName().getLocalName()); childNode.setPath(newPath); @@ -142,6 +150,7 @@ public final class ChoiceBuilder extends AbstractSchemaNodeBuilder implements Da this.cases = cases; } + @Override public boolean isAugmenting() { return augmenting; } @@ -200,6 +209,48 @@ public final class ChoiceBuilder extends AbstractSchemaNodeBuilder implements Da this.defaultCase = defaultCase; } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((schemaPath == null) ? 0 : schemaPath.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + ChoiceBuilder other = (ChoiceBuilder) 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 "choice " + qname.getLocalName(); + } + public final class ChoiceNodeImpl implements ChoiceNode { private final QName qname; private SchemaPath path;