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%2FUnknownSchemaNodeBuilder.java;h=232fa60d6b8805c9ed8130abcbf9200f9f04a393;hp=1c63002f347e0b55e6b2091bf8d4e0d652f09cb5;hb=154b5dde1af41aff2ae0cc6e08400153162a4a3c;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/UnknownSchemaNodeBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UnknownSchemaNodeBuilder.java index 1c63002f34..232fa60d6b 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UnknownSchemaNodeBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UnknownSchemaNodeBuilder.java @@ -15,76 +15,73 @@ import org.opendaylight.controller.yang.common.QName; import org.opendaylight.controller.yang.model.api.SchemaPath; import org.opendaylight.controller.yang.model.api.Status; import org.opendaylight.controller.yang.model.api.UnknownSchemaNode; -import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder; +import org.opendaylight.controller.yang.parser.builder.api.AbstractSchemaNodeBuilder; +import org.opendaylight.controller.yang.parser.util.Comparators; -public class UnknownSchemaNodeBuilder implements SchemaNodeBuilder { +public final class UnknownSchemaNodeBuilder extends AbstractSchemaNodeBuilder { + private boolean isBuilt; private final UnknownSchemaNodeImpl instance; - private final int line; - private final QName qname; - private SchemaPath schemaPath; - private final List addedUnknownNodes = new ArrayList(); + private boolean addedByUses; + private List unknownNodes; private QName nodeType; private String nodeParameter; - UnknownSchemaNodeBuilder(final QName qname, final int line) { - this.qname = qname; - this.line = line; + public UnknownSchemaNodeBuilder(final int line, final QName qname) { + super(line, qname); instance = new UnknownSchemaNodeImpl(qname); } - @Override - public UnknownSchemaNode build() { - instance.setPath(schemaPath); - instance.setNodeType(nodeType); - instance.setNodeParameter(nodeParameter); - - // UNKNOWN NODES - final List unknownNodes = new ArrayList(); - for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { - unknownNodes.add(b.build()); - } - instance.setUnknownSchemaNodes(unknownNodes); - return instance; - } - - @Override - public int getLine() { - return line; - } - - @Override - public QName getQName() { - return qname; + public UnknownSchemaNodeBuilder(UnknownSchemaNodeBuilder b) { + super(b.getLine(), b.getQName()); + instance = new UnknownSchemaNodeImpl(qname); + schemaPath = b.getPath(); + description = b.getDescription(); + reference = b.getReference(); + status = b.getStatus(); + addedByUses = b.isAddedByUses(); + unknownNodes = b.unknownNodes; + addedUnknownNodes.addAll(b.addedUnknownNodes); + nodeType = b.getNodeType(); + nodeParameter = b.getNodeParameter(); } @Override - public SchemaPath getPath() { - return schemaPath; - } + public UnknownSchemaNode build() { + if (!isBuilt) { + instance.setPath(schemaPath); + instance.setNodeType(nodeType); + instance.setNodeParameter(nodeParameter); + instance.setDescription(description); + instance.setReference(reference); + instance.setStatus(status); + instance.setAddedByUses(addedByUses); + + // UNKNOWN NODES + if (unknownNodes == null) { + unknownNodes = new ArrayList(); + for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { + unknownNodes.add(b.build()); + } + Collections.sort(unknownNodes, Comparators.SCHEMA_NODE_COMP); + } + instance.setUnknownSchemaNodes(unknownNodes); - @Override - public void setPath(SchemaPath schemaPath) { - this.schemaPath = schemaPath; - } + isBuilt = true; + } - @Override - public void setDescription(final String description) { - instance.setDescription(description); + return instance; } - @Override - public void setReference(final String reference) { - instance.setReference(reference); + public boolean isAddedByUses() { + return addedByUses; } - @Override - public void setStatus(final Status status) { - instance.setStatus(status); + public void setAddedByUses(final boolean addedByUses) { + this.addedByUses = addedByUses; } - @Override - public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) { - addedUnknownNodes.add(unknownNode); + public void setUnknownNodes(final List unknownNodes) { + this.unknownNodes = unknownNodes; } public QName getNodeType() { @@ -103,7 +100,7 @@ public class UnknownSchemaNodeBuilder implements SchemaNodeBuilder { this.nodeParameter = nodeParameter; } - private static class UnknownSchemaNodeImpl implements UnknownSchemaNode { + private final class UnknownSchemaNodeImpl implements UnknownSchemaNode { private final QName qname; private SchemaPath path; private String description; @@ -112,6 +109,7 @@ public class UnknownSchemaNodeBuilder implements SchemaNodeBuilder { private List unknownNodes = Collections.emptyList(); private QName nodeType; private String nodeParameter; + private boolean addedByUses; private UnknownSchemaNodeImpl(final QName qname) { this.qname = qname; @@ -160,13 +158,21 @@ public class UnknownSchemaNodeBuilder implements SchemaNodeBuilder { } } + @Override + public boolean isAddedByUses() { + return addedByUses; + } + + private void setAddedByUses(final boolean addedByUses) { + this.addedByUses = addedByUses; + } + @Override public List getUnknownSchemaNodes() { return unknownNodes; } - private void setUnknownSchemaNodes( - final List unknownNodes) { + private void setUnknownSchemaNodes(final List unknownNodes) { if (unknownNodes != null) { this.unknownNodes = unknownNodes; } @@ -189,6 +195,15 @@ public class UnknownSchemaNodeBuilder implements SchemaNodeBuilder { private void setNodeParameter(final String nodeParameter) { this.nodeParameter = nodeParameter; } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(UnknownSchemaNodeImpl.class.getSimpleName()); + sb.append("["); + sb.append(qname); + sb.append("]"); + return sb.toString(); + } } }