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%2FGroupingBuilderImpl.java;h=5428259324a700a5c65ed9ac8378d0dd4df4e7ef;hb=refs%2Fchanges%2F19%2F519%2F4;hp=759f54ec6fe817ca5a76c504fdb4c6932ca52006;hpb=35ba67e73cf9fea55535c1aef8303e7d12c982e7;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/GroupingBuilderImpl.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/GroupingBuilderImpl.java index 759f54ec6f..5428259324 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/GroupingBuilderImpl.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/GroupingBuilderImpl.java @@ -28,19 +28,29 @@ import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder; import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder; import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder; -public class GroupingBuilderImpl implements GroupingBuilder { - private boolean built; +public final class GroupingBuilderImpl implements GroupingBuilder { + private boolean isBuilt; private final GroupingDefinitionImpl instance; private final int line; private final QName qname; private SchemaPath schemaPath; private String description; private String reference; - private Status status; - private final Set childNodes = new HashSet(); - private final Set groupings = new HashSet(); + private Status status = Status.CURRENT; + + private Set childNodes; + private final Set addedChildNodes = new HashSet(); + + private Set groupings; + private final Set addedGroupings = new HashSet(); + + private Set> typedefs; private final Set addedTypedefs = new HashSet(); - private final Set usesNodes = new HashSet(); + + private Set usesNodes; + private final Set addedUsesNodes = new HashSet(); + + private List unknownNodes; private final List addedUnknownNodes = new ArrayList(); public GroupingBuilderImpl(final QName qname, final int line) { @@ -51,7 +61,7 @@ public class GroupingBuilderImpl implements GroupingBuilder { @Override public GroupingDefinition build() { - if (!built) { + if (!isBuilt) { instance.setPath(schemaPath); instance.setDescription(description); instance.setReference(reference); @@ -59,40 +69,54 @@ public class GroupingBuilderImpl implements GroupingBuilder { // CHILD NODES final Map childs = new HashMap(); - for (DataSchemaNodeBuilder node : childNodes) { - childs.put(node.getQName(), node.build()); + if(childNodes == null) { + for (DataSchemaNodeBuilder node : addedChildNodes) { + childs.put(node.getQName(), node.build()); + } + } else { + for(DataSchemaNode node : childNodes) { + childs.put(node.getQName(), node); + } } instance.setChildNodes(childs); // GROUPINGS - final Set groupingDefs = new HashSet(); - for (GroupingBuilder builder : groupings) { - groupingDefs.add(builder.build()); + if(groupings == null) { + groupings = new HashSet(); + for (GroupingBuilder builder : addedGroupings) { + groupings.add(builder.build()); + } } - instance.setGroupings(groupingDefs); + instance.setGroupings(groupings); // TYPEDEFS - final Set> typedefs = new HashSet>(); - for (TypeDefinitionBuilder entry : addedTypedefs) { - typedefs.add(entry.build()); + if(typedefs == null) { + typedefs = new HashSet>(); + for (TypeDefinitionBuilder entry : addedTypedefs) { + typedefs.add(entry.build()); + } } instance.setTypeDefinitions(typedefs); // USES - final Set usesNodeDefs = new HashSet(); - for (UsesNodeBuilder builder : usesNodes) { - usesNodeDefs.add(builder.build()); + if(usesNodes == null) { + usesNodes = new HashSet(); + for (UsesNodeBuilder builder : addedUsesNodes) { + usesNodes.add(builder.build()); + } } - instance.setUses(usesNodeDefs); + instance.setUses(usesNodes); // 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; @@ -109,7 +133,7 @@ public class GroupingBuilderImpl implements GroupingBuilder { } @Override - public Set getTypedefs() { + public Set getTypeDefinitions() { return addedTypedefs; } @@ -118,6 +142,10 @@ public class GroupingBuilderImpl implements GroupingBuilder { addedTypedefs.add(type); } + public void setTypedefs(final Set> typedefs) { + this.typedefs = typedefs; + } + @Override public SchemaPath getPath() { return schemaPath; @@ -161,7 +189,7 @@ public class GroupingBuilderImpl implements GroupingBuilder { @Override public DataSchemaNodeBuilder getChildNode(String name) { DataSchemaNodeBuilder result = null; - for (DataSchemaNodeBuilder node : childNodes) { + for (DataSchemaNodeBuilder node : addedChildNodes) { if (node.getQName().getLocalName().equals(name)) { result = node; break; @@ -172,32 +200,44 @@ public class GroupingBuilderImpl implements GroupingBuilder { @Override public void addChildNode(final DataSchemaNodeBuilder childNode) { - childNodes.add(childNode); + addedChildNodes.add(childNode); } @Override public Set getChildNodes() { - return childNodes; + return addedChildNodes; + } + + public void setChildNodes(final Set childNodes) { + this.childNodes = childNodes; } @Override public Set getGroupings() { - return groupings; + return addedGroupings; } @Override public void addGrouping(final GroupingBuilder grouping) { - groupings.add(grouping); + addedGroupings.add(grouping); + } + + public void setGroupings(final Set groupings) { + this.groupings = groupings; } @Override public Set getUses() { - return usesNodes; + return addedUsesNodes; } @Override public void addUsesNode(final UsesNodeBuilder usesBuilder) { - usesNodes.add(usesBuilder); + addedUsesNodes.add(usesBuilder); + } + + public void setUsesnodes(final Set usesNodes) { + this.usesNodes = usesNodes; } @Override @@ -210,7 +250,12 @@ public class GroupingBuilderImpl implements GroupingBuilder { addedUnknownNodes.add(unknownNode); } - private static class GroupingDefinitionImpl implements GroupingDefinition { + public void setUnknownNodes(List unknownNodes) { + this.unknownNodes = unknownNodes; + } + + + private final class GroupingDefinitionImpl implements GroupingDefinition { private final QName qname; private SchemaPath path; private String description;