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%2FAnyXmlBuilder.java;h=ba1ea9c922e4222e4fcead053f9e20f6e2e38000;hb=1e9531138e44cd757ca27b0d86e98eccb22ccd82;hp=bd6e0afcdf0646cf04402f6d49c5c1125bd24964;hpb=39ff6ed2000232d607877311770c74cef36cf96f;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/AnyXmlBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/AnyXmlBuilder.java index bd6e0afcdf..ba1ea9c922 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/AnyXmlBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/AnyXmlBuilder.java @@ -18,8 +18,10 @@ 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.DataSchemaNodeBuilder; +import org.opendaylight.controller.yang.parser.util.YangParseException; -public class AnyXmlBuilder implements DataSchemaNodeBuilder { +public final class AnyXmlBuilder implements DataSchemaNodeBuilder { + private boolean built; private final int line; private final QName qname; private SchemaPath path; @@ -41,20 +43,23 @@ public class AnyXmlBuilder implements DataSchemaNodeBuilder { @Override public AnyXmlSchemaNode build() { - instance.setPath(path); - instance.setConstraints(constraints.build()); - instance.setDescription(description); - instance.setReference(reference); - instance.setStatus(status); - - // UNKNOWN NODES - final List unknownNodes = new ArrayList(); - for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { - unknownNodes.add(b.build()); - } - instance.setUnknownSchemaNodes(unknownNodes); + if (!built) { + instance.setPath(path); + instance.setConstraints(constraints.build()); + instance.setDescription(description); + instance.setReference(reference); + instance.setStatus(status); + instance.setConfiguration(configuration); + + // UNKNOWN NODES + final List unknownNodes = new ArrayList(); + for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { + unknownNodes.add(b.build()); + } + instance.setUnknownSchemaNodes(unknownNodes); - instance.setConfiguration(configuration); + built = true; + } return instance; } @@ -122,7 +127,7 @@ public class AnyXmlBuilder implements DataSchemaNodeBuilder { @Override public void setAugmenting(final boolean augmenting) { - throw new UnsupportedOperationException( + throw new YangParseException(line, "An anyxml node cannot be augmented."); } @@ -135,7 +140,7 @@ public class AnyXmlBuilder implements DataSchemaNodeBuilder { instance.setConfiguration(configuration); } - private static class AnyXmlSchemaNodeImpl implements AnyXmlSchemaNode { + private final class AnyXmlSchemaNodeImpl implements AnyXmlSchemaNode { private final QName qname; private SchemaPath path; private String description;