X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fyang-model-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fyang%2Fparser%2Fbuilder%2Fimpl%2FChoiceCaseBuilder.java;h=cfd3866841129178cd242ce9ea7bd97a03e817e8;hb=3c8c7171aa9a2fdf322b85cf104ae551665aa0d8;hp=7117afe4693c9380aad602112a7350d5b6092db4;hpb=448cfcae3d08a628677676d0751a510b2a41eae1;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/ChoiceCaseBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ChoiceCaseBuilder.java index 7117afe469..cfd3866841 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ChoiceCaseBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ChoiceCaseBuilder.java @@ -20,27 +20,36 @@ 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.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.DataSchemaNodeBuilder; 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.YangParseException; -public final class ChoiceCaseBuilder extends AbstractDataNodeContainerBuilder implements - DataSchemaNodeBuilder { +public final class ChoiceCaseBuilder extends AbstractDataNodeContainerBuilder implements DataSchemaNodeBuilder, + AugmentationTargetBuilder { + private boolean isBuilt; private final ChoiceCaseNodeImpl instance; + private final ChoiceBuilder parent; private final int line; + // SchemaNode args private SchemaPath schemaPath; private String description; private String reference; private Status status = Status.CURRENT; private final List addedUnknownNodes = new ArrayList(); + // DataSchemaNode args private boolean augmenting; private final ConstraintsBuilder constraints; + // DataNodeContainer args private final Set addedUsesNodes = new HashSet(); - private final Set augmentations = new HashSet(); + // AugmentationTarget args + private final Set addedAugmentations = new HashSet(); - ChoiceCaseBuilder(final QName qname, final int line) { + ChoiceCaseBuilder(final ChoiceBuilder parent, final QName qname, final int line) { super(qname); + this.parent = parent; this.line = line; instance = new ChoiceCaseNodeImpl(qname); constraints = new ConstraintsBuilder(line); @@ -48,43 +57,63 @@ public final class ChoiceCaseBuilder extends AbstractDataNodeContainerBuilder im @Override public ChoiceCaseNode build() { - instance.setConstraints(constraints.build()); - instance.setPath(schemaPath); - instance.setDescription(description); - instance.setReference(reference); - instance.setStatus(status); - instance.setAugmenting(augmenting); - instance.setAvailableAugmentations(augmentations); + if (!isBuilt) { + instance.setConstraints(constraints.build()); + instance.setPath(schemaPath); + instance.setDescription(description); + instance.setReference(reference); + instance.setStatus(status); + instance.setAugmenting(augmenting); + + // CHILD NODES + final Map childs = new HashMap(); + for (DataSchemaNodeBuilder node : addedChildNodes) { + childs.put(node.getQName(), node.build()); + } + instance.setChildNodes(childs); - // CHILD NODES - final Map childs = new HashMap(); - for (DataSchemaNodeBuilder node : childNodes) { - childs.put(node.getQName(), node.build()); - } - instance.setChildNodes(childs); + // USES + final Set uses = new HashSet(); + for (UsesNodeBuilder builder : addedUsesNodes) { + uses.add(builder.build()); + } + instance.setUses(uses); - // USES - final Set uses = new HashSet(); - for (UsesNodeBuilder builder : addedUsesNodes) { - uses.add(builder.build()); - } - instance.setUses(uses); + // UNKNOWN NODES + final List unknownNodes = new ArrayList(); + for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { + unknownNodes.add(b.build()); + } + instance.setUnknownSchemaNodes(unknownNodes); - // UNKNOWN NODES - final List unknownNodes = new ArrayList(); - for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { - unknownNodes.add(b.build()); + // AUGMENTATIONS + final Set augmentations = new HashSet(); + for (AugmentationSchemaBuilder builder : addedAugmentations) { + augmentations.add(builder.build()); + } + instance.setAvailableAugmentations(augmentations); + + isBuilt = true; } - instance.setUnknownSchemaNodes(unknownNodes); return instance; } + @Override + public void rebuild() { + isBuilt = false; + build(); + } + @Override public int getLine() { return line; } + public ChoiceBuilder getParent() { + return parent; + } + public SchemaPath getPath() { return schemaPath; } @@ -151,20 +180,13 @@ public final class ChoiceCaseBuilder extends AbstractDataNodeContainerBuilder im } @Override - public Set getTypeDefinitions() { + public Set getTypeDefinitionBuilders() { return Collections.emptySet(); } @Override public void addTypedef(TypeDefinitionBuilder typedefBuilder) { - throw new YangParseException(line, - "Can not add type definition to choice case."); - } - - @Override - public void setConfiguration(boolean configuration) { - throw new YangParseException(line, - "Can not add config definition to choice case."); + throw new YangParseException(line, "Can not add type definition to choice case."); } @Override @@ -172,11 +194,12 @@ public final class ChoiceCaseBuilder extends AbstractDataNodeContainerBuilder im return constraints; } - public Set getAugmentations() { - return augmentations; + @Override + public void addAugmentation(AugmentationSchemaBuilder augment) { + addedAugmentations.add(augment); } - private final class ChoiceCaseNodeImpl implements ChoiceCaseNode { + public final class ChoiceCaseNodeImpl implements ChoiceCaseNode { private final QName qname; private SchemaPath path; private String description; @@ -259,6 +282,11 @@ public final class ChoiceCaseBuilder extends AbstractDataNodeContainerBuilder im this.augmenting = augmenting; } + @Override + public boolean isAddedByUses() { + return false; + } + @Override public List getUnknownSchemaNodes() { return unknownNodes; @@ -328,13 +356,16 @@ public final class ChoiceCaseBuilder extends AbstractDataNodeContainerBuilder im return augmentations; } - private void setAvailableAugmentations( - Set augmentations) { + private void setAvailableAugmentations(Set augmentations) { if (augmentations != null) { this.augmentations = augmentations; } } + public ChoiceCaseBuilder toBuilder() { + return ChoiceCaseBuilder.this; + } + @Override public int hashCode() { final int prime = 31; @@ -375,8 +406,7 @@ public final class ChoiceCaseBuilder extends AbstractDataNodeContainerBuilder im @Override public String toString() { - StringBuilder sb = new StringBuilder( - ChoiceCaseNodeImpl.class.getSimpleName()); + StringBuilder sb = new StringBuilder(ChoiceCaseNodeImpl.class.getSimpleName()); sb.append("["); sb.append("qname=" + qname); sb.append("]");