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%2FIdentitySchemaNodeBuilder.java;h=96b4bd4dd89826176af584cce712f47504a9b8ee;hp=68fffd26b9444b18284e8770f5c313e0677cf492;hb=271b40037939f2020378be14ca13caef16276b6e;hpb=0d05f8c08befb645e8159073b248f794f52822ea diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/IdentitySchemaNodeBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/IdentitySchemaNodeBuilder.java index 68fffd26b9..96b4bd4dd8 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/IdentitySchemaNodeBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/IdentitySchemaNodeBuilder.java @@ -16,80 +16,51 @@ import org.opendaylight.controller.yang.model.api.IdentitySchemaNode; 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 final class IdentitySchemaNodeBuilder implements SchemaNodeBuilder { +public final class IdentitySchemaNodeBuilder extends AbstractSchemaNodeBuilder { + private boolean isBuilt; private final IdentitySchemaNodeImpl instance; - private final int line; - private final QName qname; - private SchemaPath schemaPath; - private IdentitySchemaNodeBuilder baseIdentity; + private IdentitySchemaNodeBuilder baseIdentityBuilder; + private IdentitySchemaNode baseIdentity; private String baseIdentityName; - private final List addedUnknownNodes = new ArrayList(); - IdentitySchemaNodeBuilder(final QName qname, final int line) { - this.qname = qname; - this.line = line; + IdentitySchemaNodeBuilder(final int line, final QName qname) { + super(line, qname); instance = new IdentitySchemaNodeImpl(qname); } @Override public IdentitySchemaNode build() { - instance.setPath(schemaPath); - if (baseIdentity != null) { - instance.setBaseIdentity(baseIdentity.build()); - } - - // 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; - } - - @Override - public SchemaPath getPath() { - return schemaPath; - } - - @Override - public void setPath(SchemaPath schemaPath) { - this.schemaPath = schemaPath; - } + if (!isBuilt) { + instance.setPath(schemaPath); + instance.setDescription(description); + instance.setReference(reference); + instance.setStatus(status); - @Override - public void setDescription(final String description) { - instance.setDescription(description); - } + if (baseIdentity == null) { + if (baseIdentityBuilder != null) { + instance.setBaseIdentity(baseIdentityBuilder.build()); + } + } else { + instance.setBaseIdentity(baseIdentity); + } - @Override - public void setReference(final String reference) { - instance.setReference(reference); - } + // 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 setStatus(final Status status) { - if (status != null) { - instance.setStatus(status); + isBuilt = true; } - } - @Override - public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) { - addedUnknownNodes.add(unknownNode); + return instance; } public String getBaseIdentityName() { @@ -101,6 +72,10 @@ public final class IdentitySchemaNodeBuilder implements SchemaNodeBuilder { } public void setBaseIdentity(final IdentitySchemaNodeBuilder baseType) { + this.baseIdentityBuilder = baseType; + } + + public void setBaseIdentity(final IdentitySchemaNode baseType) { this.baseIdentity = baseType; } @@ -174,8 +149,7 @@ public final class IdentitySchemaNodeBuilder implements SchemaNodeBuilder { return unknownNodes; } - private void setUnknownSchemaNodes( - List unknownSchemaNodes) { + private void setUnknownSchemaNodes(List unknownSchemaNodes) { if (unknownSchemaNodes != null) { this.unknownNodes = unknownSchemaNodes; } @@ -221,8 +195,7 @@ public final class IdentitySchemaNodeBuilder implements SchemaNodeBuilder { @Override public String toString() { - StringBuilder sb = new StringBuilder( - IdentitySchemaNodeImpl.class.getSimpleName()); + StringBuilder sb = new StringBuilder(IdentitySchemaNodeImpl.class.getSimpleName()); sb.append("["); sb.append("base=" + baseIdentity); sb.append(", qname=" + qname);