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;h=1ba1a2dfdcb3dd1224710da31cdf4ba7ff50813b;hb=refs%2Fchanges%2F19%2F519%2F4;hp=f520bf917a814ac362fc30e62f36b6616691fd5d;hpb=756b3a862090ac60968d6ea33b516964e0f24a48;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 f520bf917a..1ba1a2dfdc 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 @@ -26,7 +26,7 @@ import org.opendaylight.controller.yang.parser.builder.api.AugmentationTargetBui import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder; public final class ChoiceBuilder implements DataSchemaNodeBuilder, AugmentationTargetBuilder { - private boolean built; + private boolean isBuilt; private final ChoiceNodeImpl instance; private final int line; // SchemaNode args @@ -35,6 +35,7 @@ public final class ChoiceBuilder implements DataSchemaNodeBuilder, AugmentationT 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; @@ -43,7 +44,8 @@ public final class ChoiceBuilder implements DataSchemaNodeBuilder, AugmentationT // AugmentationTarget args private final Set addedAugmentations = new HashSet(); // ChoiceNode args - private final Set cases = new HashSet(); + private Set cases; + private final Set addedCases = new HashSet(); private String defaultCase; public ChoiceBuilder(final QName qname, final int line) { @@ -55,7 +57,7 @@ public final class ChoiceBuilder implements DataSchemaNodeBuilder, AugmentationT @Override public ChoiceNode build() { - if (!built) { + if (!isBuilt) { instance.setPath(schemaPath); instance.setDescription(description); instance.setReference(reference); @@ -66,11 +68,13 @@ public final class ChoiceBuilder implements DataSchemaNodeBuilder, AugmentationT instance.setDefaultCase(defaultCase); // CASES - final Set choiceCases = new HashSet(); - for (ChoiceCaseBuilder caseBuilder : cases) { - choiceCases.add(caseBuilder.build()); + if(cases == null) { + cases = new HashSet(); + for (ChoiceCaseBuilder caseBuilder : addedCases) { + cases.add(caseBuilder.build()); + } } - instance.setCases(choiceCases); + instance.setCases(cases); // AUGMENTATIONS final Set augmentations = new HashSet(); @@ -80,36 +84,48 @@ public final class ChoiceBuilder implements DataSchemaNodeBuilder, AugmentationT instance.setAvailableAugmentations(augmentations); // UNKNOWN NODES - final List unknownNodes = new ArrayList(); - for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { - unknownNodes.add(b.build()); + if(unknownNodes == null) { + unknownNodes = new ArrayList(); + for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { + unknownNodes.add(b.build()); + } } instance.setUnknownSchemaNodes(unknownNodes); - built = true; + isBuilt = true; } return instance; } + @Override + public void rebuild() { + isBuilt = false; + build(); + } + @Override public int getLine() { return line; } public Set getCases() { - return cases; + return addedCases; } public void addChildNode(DataSchemaNodeBuilder childNode) { if (!(childNode instanceof ChoiceCaseBuilder)) { ChoiceCaseBuilder caseBuilder = new ChoiceCaseBuilder(childNode.getQName(), childNode.getLine()); caseBuilder.addChildNode(childNode); - cases.add(caseBuilder); + addedCases.add(caseBuilder); } else { - cases.add((ChoiceCaseBuilder) childNode); + addedCases.add((ChoiceCaseBuilder) childNode); } } + public void setCases(Set cases) { + this.cases = cases; + } + @Override public QName getQName() { return qname; @@ -176,10 +192,6 @@ public final class ChoiceBuilder implements DataSchemaNodeBuilder, AugmentationT return constraints; } - public List getUnknownNodes() { - return addedUnknownNodes; - } - public Set getAugmentations() { return addedAugmentations; } @@ -189,11 +201,19 @@ public final class ChoiceBuilder implements DataSchemaNodeBuilder, AugmentationT addedAugmentations.add(augment); } + public List getUnknownNodes() { + return addedUnknownNodes; + } + @Override public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownNode) { addedUnknownNodes.add(unknownNode); } + public void setUnknownNodes(List unknownNodes) { + this.unknownNodes = unknownNodes; + } + public String getDefaultCase() { return defaultCase; } @@ -202,7 +222,7 @@ public final class ChoiceBuilder implements DataSchemaNodeBuilder, AugmentationT this.defaultCase = defaultCase; } - private final class ChoiceNodeImpl implements ChoiceNode { + public final class ChoiceNodeImpl implements ChoiceNode { private final QName qname; private SchemaPath path; private String description; @@ -332,6 +352,10 @@ public final class ChoiceBuilder implements DataSchemaNodeBuilder, AugmentationT this.defaultCase = defaultCase; } + public ChoiceBuilder toBuilder() { + return ChoiceBuilder.this; + } + @Override public int hashCode() { final int prime = 31;