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%2FLeafSchemaNodeBuilder.java;h=786f08de49551957a2a43bc514450faebdd632f7;hb=f0b551cfbf794966124da7475935c27c3e7311c0;hp=be58c7ecf5f699111faec557a9fcda8dd0636520;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/LeafSchemaNodeBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/LeafSchemaNodeBuilder.java index be58c7ecf5..786f08de49 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/LeafSchemaNodeBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/LeafSchemaNodeBuilder.java @@ -20,10 +20,9 @@ import org.opendaylight.controller.yang.model.api.TypeDefinition; import org.opendaylight.controller.yang.model.api.UnknownSchemaNode; import org.opendaylight.controller.yang.parser.builder.api.AbstractTypeAwareBuilder; import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder; -import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder; -public class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implements - DataSchemaNodeBuilder, SchemaNodeBuilder { +public final class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implements DataSchemaNodeBuilder { + private boolean isBuilt; private final LeafSchemaNodeImpl instance; private final int line; // SchemaNode args @@ -32,6 +31,7 @@ public class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implements private String description; private String reference; private Status status = Status.CURRENT; + private List unknownNodes; private final List addedUnknownNodes = new ArrayList(); // DataSchemaNode args private boolean augmenting; @@ -50,30 +50,35 @@ public class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implements @Override public LeafSchemaNode build() { - instance.setPath(path); - instance.setConstraints(constraints.build()); - instance.setDescription(description); - instance.setReference(reference); - instance.setStatus(status); - - // TYPE - if (type == null) { - instance.setType(typedef.build()); - } else { - instance.setType(type); - } + if (!isBuilt) { + instance.setPath(path); + instance.setConstraints(constraints.build()); + instance.setDescription(description); + instance.setReference(reference); + instance.setStatus(status); + instance.setAugmenting(augmenting); + instance.setConfiguration(configuration); + instance.setDefault(defaultStr); + instance.setUnits(unitsStr); + + // TYPE + if (type == null) { + instance.setType(typedef.build()); + } else { + instance.setType(type); + } - // UNKNOWN NODES - final List unknownNodes = new ArrayList(); - for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { - unknownNodes.add(b.build()); - } - instance.setUnknownSchemaNodes(unknownNodes); + // UNKNOWN NODES + if (unknownNodes == null) { + unknownNodes = new ArrayList(); + for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { + unknownNodes.add(b.build()); + } + } + instance.setUnknownSchemaNodes(unknownNodes); - instance.setAugmenting(augmenting); - instance.setConfiguration(configuration); - instance.setDefault(defaultStr); - instance.setUnits(unitsStr); + isBuilt = true; + } return instance; } @@ -110,6 +115,10 @@ public class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implements return addedUnknownNodes; } + public void setUnknownNodes(List unknownNodes) { + this.unknownNodes = unknownNodes; + } + public String getDescription() { return description; } @@ -173,7 +182,12 @@ public class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implements this.unitsStr = unitsStr; } - private class LeafSchemaNodeImpl implements LeafSchemaNode { + @Override + public String toString() { + return "leaf " + qname.getLocalName(); + } + + private final class LeafSchemaNodeImpl implements LeafSchemaNode { private final QName qname; private SchemaPath path; private String description; @@ -281,6 +295,7 @@ public class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implements } } + @Override public String getDefault() { return defaultStr; } @@ -289,6 +304,7 @@ public class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implements this.defaultStr = defaultStr; } + @Override public String getUnits() { return unitsStr; } @@ -337,8 +353,7 @@ public class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implements @Override public String toString() { - StringBuilder sb = new StringBuilder( - LeafSchemaNodeImpl.class.getSimpleName()); + StringBuilder sb = new StringBuilder(LeafSchemaNodeImpl.class.getSimpleName()); sb.append("["); sb.append("qname=" + qname); sb.append(", path=" + path);