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=7fcdb6f8ba14a98b9340d81975af950251e47dfd;hb=966346b306eefdc7a6266f95edf000cbd60faca8;hp=81a701c66a36bfba20a7bfbd8f53352c2603aaec;hpb=8992ae54ecd2c79e0d93d0904962c5f32f3bb33a;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 81a701c66a..7fcdb6f8ba 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 @@ -35,9 +35,10 @@ import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionAwareBu import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder; import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder; -public class ContainerSchemaNodeBuilder extends AbstractChildNodeBuilder +public final class ContainerSchemaNodeBuilder extends AbstractChildNodeBuilder implements TypeDefinitionAwareBuilder, AugmentationTargetBuilder, DataSchemaNodeBuilder { + private boolean isBuilt; private final ContainerSchemaNodeImpl instance; private final int line; private final ConstraintsBuilder constraints; @@ -63,59 +64,62 @@ public class ContainerSchemaNodeBuilder extends AbstractChildNodeBuilder @Override public ContainerSchemaNode build() { - instance.setPath(schemaPath); - instance.setDescription(description); - instance.setReference(reference); - instance.setStatus(status); - instance.setPresenceContainer(presence); - instance.setAugmenting(augmenting); - instance.setConfiguration(configuration); - - // CHILD NODES - final Map childs = new HashMap(); - for (DataSchemaNodeBuilder node : childNodes) { - childs.put(node.getQName(), node.build()); - } - instance.setChildNodes(childs); + if (!isBuilt) { + instance.setPath(schemaPath); + instance.setDescription(description); + instance.setReference(reference); + instance.setStatus(status); + instance.setPresenceContainer(presence); + instance.setAugmenting(augmenting); + instance.setConfiguration(configuration); + + // CHILD NODES + final Map childs = new HashMap(); + for (DataSchemaNodeBuilder node : childNodes) { + childs.put(node.getQName(), node.build()); + } + instance.setChildNodes(childs); - // GROUPINGS - final Set groupingDefs = new HashSet(); - for (GroupingBuilder builder : groupings) { - groupingDefs.add(builder.build()); - } - instance.setGroupings(groupingDefs); + // GROUPINGS + final Set groupingDefs = new HashSet(); + for (GroupingBuilder builder : groupings) { + groupingDefs.add(builder.build()); + } + instance.setGroupings(groupingDefs); - // TYPEDEFS - final Set> typedefs = new HashSet>(); - for (TypeDefinitionBuilder entry : addedTypedefs) { - typedefs.add(entry.build()); - } - instance.setTypeDefinitions(typedefs); + // TYPEDEFS + final Set> typedefs = new HashSet>(); + for (TypeDefinitionBuilder entry : addedTypedefs) { + typedefs.add(entry.build()); + } + instance.setTypeDefinitions(typedefs); - // 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); - // AUGMENTATIONS - final Set augmentations = new HashSet(); - for(AugmentationSchemaBuilder builder : addedAugmentations) { - augmentations.add(builder.build()); - } - instance.setAvailableAugmentations(augmentations); + // AUGMENTATIONS + final Set augmentations = new HashSet(); + for (AugmentationSchemaBuilder builder : addedAugmentations) { + augmentations.add(builder.build()); + } + instance.setAvailableAugmentations(augmentations); - // 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()); + } + instance.setUnknownSchemaNodes(unknownNodes); - instance.setConstraints(constraints.build()); - instance.setAvailableAugmentations(augmentations); + instance.setConstraints(constraints.build()); + instance.setAvailableAugmentations(augmentations); + isBuilt = true; + } return instance; } @@ -175,7 +179,7 @@ public class ContainerSchemaNodeBuilder extends AbstractChildNodeBuilder @Override public void setStatus(Status status) { - if(status != null) { + if (status != null) { this.status = status; } } @@ -229,7 +233,7 @@ public class ContainerSchemaNodeBuilder extends AbstractChildNodeBuilder addedUnknownNodes.add(unknownNode); } - private class ContainerSchemaNodeImpl implements ContainerSchemaNode { + private final class ContainerSchemaNodeImpl implements ContainerSchemaNode { private final QName qname; private SchemaPath path; private String description; @@ -288,7 +292,7 @@ public class ContainerSchemaNodeBuilder extends AbstractChildNodeBuilder } private void setStatus(Status status) { - if(status != null) { + if (status != null) { this.status = status; } }