X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fyang-model-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fyang%2Fparser%2Fbuilder%2Fimpl%2FListSchemaNodeBuilder.java;h=65839d34b1e4ccedec5a29d8b7aeba7b33aaca9e;hp=5270e48c28ddae306a9c90327e50f969d4a91c85;hb=24d031d133362f3b42eb2bc04173ad0199d39a51;hpb=8992ae54ecd2c79e0d93d0904962c5f32f3bb33a diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ListSchemaNodeBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ListSchemaNodeBuilder.java index 5270e48c28..65839d34b1 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ListSchemaNodeBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ListSchemaNodeBuilder.java @@ -26,19 +26,19 @@ import org.opendaylight.controller.yang.model.api.Status; 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.AbstractChildNodeBuilder; +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.GroupingBuilder; -import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder; 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; -public class ListSchemaNodeBuilder extends AbstractChildNodeBuilder implements - DataSchemaNodeBuilder, SchemaNodeBuilder, AugmentationTargetBuilder, +public final class ListSchemaNodeBuilder extends AbstractDataNodeContainerBuilder + implements DataSchemaNodeBuilder, AugmentationTargetBuilder, TypeDefinitionAwareBuilder { + private boolean isBuilt; private final ListSchemaNodeImpl instance; private final int line; // SchemaNode args @@ -57,7 +57,7 @@ public class ListSchemaNodeBuilder extends AbstractChildNodeBuilder implements // AugmentationTarget args private final Set addedAugmentations = new HashSet(); // ListSchemaNode args - private List keyDefinition; + private List keyDefinition = Collections.emptyList(); private boolean userOrdered; public ListSchemaNodeBuilder(final QName qname, final int line) { @@ -69,60 +69,63 @@ public class ListSchemaNodeBuilder extends AbstractChildNodeBuilder implements @Override public ListSchemaNode build() { - instance.setKeyDefinition(keyDefinition); - instance.setPath(schemaPath); - instance.setDescription(description); - instance.setReference(reference); - instance.setStatus(status); - instance.setAugmenting(augmenting); - instance.setConfiguration(configuration); - instance.setUserOrdered(userOrdered); - - // CHILD NODES - final Map childs = new HashMap(); - for (DataSchemaNodeBuilder node : childNodes) { - childs.put(node.getQName(), node.build()); - } - instance.setChildNodes(childs); + if (!isBuilt) { + instance.setKeyDefinition(keyDefinition); + instance.setPath(schemaPath); + instance.setDescription(description); + instance.setReference(reference); + instance.setStatus(status); + instance.setAugmenting(augmenting); + instance.setConfiguration(configuration); + instance.setUserOrdered(userOrdered); + + // CHILD NODES + final Map childs = new HashMap(); + for (DataSchemaNodeBuilder node : childNodes) { + childs.put(node.getQName(), node.build()); + } + instance.setChildNodes(childs); - // 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 usesNodeDefs = new HashSet(); - for (UsesNodeBuilder builder : addedUsesNodes) { - usesNodeDefs.add(builder.build()); - } - instance.setUses(usesNodeDefs); + // USES + final Set usesNodeDefs = new HashSet(); + for (UsesNodeBuilder builder : addedUsesNodes) { + usesNodeDefs.add(builder.build()); + } + instance.setUses(usesNodeDefs); - // 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); - // 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; } @@ -131,7 +134,8 @@ public class ListSchemaNodeBuilder extends AbstractChildNodeBuilder implements return line; } - public Set getTypedefs() { + @Override + public Set getTypeDefinitions() { return addedTypedefs; } @@ -201,7 +205,9 @@ public class ListSchemaNodeBuilder extends AbstractChildNodeBuilder implements } public void setKeyDefinition(final List keyDefinition) { - this.keyDefinition = keyDefinition; + if (keyDefinition != null) { + this.keyDefinition = keyDefinition; + } } public boolean isAugmenting() { @@ -244,7 +250,7 @@ public class ListSchemaNodeBuilder extends AbstractChildNodeBuilder implements addedUnknownNodes.add(unknownNode); } - private class ListSchemaNodeImpl implements ListSchemaNode { + private final class ListSchemaNodeImpl implements ListSchemaNode { private final QName qname; private SchemaPath path; private String description;