X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=inline;f=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fyang-model-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fyang%2Fparser%2Fbuilder%2Fimpl%2FAnyXmlBuilder.java;h=6b6063cc953a1063758e7a4f1ed7bd304cd20dd7;hb=ac39de5a9b96438d30df745895454c02e15e51e3;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..6b6063cc95 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 @@ -17,64 +17,68 @@ import org.opendaylight.controller.yang.model.api.ConstraintDefinition; 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.AbstractSchemaNodeBuilder; import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder; +import org.opendaylight.controller.yang.parser.builder.api.GroupingMember; +import org.opendaylight.controller.yang.parser.util.Comparators; -public class AnyXmlBuilder implements DataSchemaNodeBuilder { - private final int line; - private final QName qname; - private SchemaPath path; +public final class AnyXmlBuilder extends AbstractSchemaNodeBuilder implements DataSchemaNodeBuilder, GroupingMember { + private boolean built; private final AnyXmlSchemaNodeImpl instance; private final ConstraintsBuilder constraints; - private final List addedUnknownNodes = new ArrayList(); - private String description; - private String reference; - private Status status = Status.CURRENT; - private boolean configuration; + private Boolean configuration; + private boolean augmenting; + private boolean addedByUses; - public AnyXmlBuilder(final QName qname, final int line) { - this.qname = qname; - this.line = line; + public AnyXmlBuilder(final String moduleName, final int line, final QName qname, final SchemaPath schemaPath) { + super(moduleName, line, qname); + this.schemaPath = schemaPath; instance = new AnyXmlSchemaNodeImpl(qname); - constraints = new ConstraintsBuilder(line); + constraints = new ConstraintsBuilder(moduleName, line); } - @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); - - instance.setConfiguration(configuration); - return instance; - } - - @Override - public int getLine() { - return line; + public AnyXmlBuilder(final AnyXmlBuilder builder) { + super(builder.getModuleName(), builder.getLine(), builder.getQName()); + parent = builder.getParent(); + instance = new AnyXmlSchemaNodeImpl(qname); + constraints = builder.getConstraints(); + schemaPath = builder.getPath(); + unknownNodes = builder.unknownNodes; + addedUnknownNodes.addAll(builder.getUnknownNodes()); + description = builder.getDescription(); + reference = builder.getReference(); + status = builder.getStatus(); + configuration = builder.isConfiguration(); + augmenting = builder.isAugmenting(); + addedByUses = builder.isAddedByUses(); } @Override - public QName getQName() { - return qname; - } - - public SchemaPath getPath() { - return path; - } + public AnyXmlSchemaNode build() { + if (!built) { + instance.setPath(schemaPath); + instance.setConstraints(constraints.build()); + instance.setDescription(description); + instance.setReference(reference); + instance.setStatus(status); + instance.setConfiguration(configuration); + instance.setAugmenting(augmenting); + 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(final SchemaPath path) { - this.path = path; + built = true; + } + return instance; } @Override @@ -82,60 +86,83 @@ public class AnyXmlBuilder implements DataSchemaNodeBuilder { return constraints; } - @Override - public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) { - addedUnknownNodes.add(unknownNode); - } - public List getUnknownNodes() { return addedUnknownNodes; } - public String getDescription() { - return description; + @Override + public boolean isAugmenting() { + return augmenting; } @Override - public void setDescription(final String description) { - this.description = description; + public void setAugmenting(final boolean augmenting) { + this.augmenting = augmenting; } - public String getReference() { - return reference; + @Override + public boolean isAddedByUses() { + return addedByUses; } @Override - public void setReference(final String reference) { - this.reference = reference; + public void setAddedByUses(final boolean addedByUses) { + this.addedByUses = addedByUses; } - public Status getStatus() { - return status; + @Override + public Boolean isConfiguration() { + return configuration; } @Override - public void setStatus(final Status status) { - if (status != null) { - this.status = status; - } + public void setConfiguration(final Boolean configuration) { + this.configuration = configuration; } @Override - public void setAugmenting(final boolean augmenting) { - throw new UnsupportedOperationException( - "An anyxml node cannot be augmented."); + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((schemaPath == null) ? 0 : schemaPath.hashCode()); + return result; } - public boolean isConfiguration() { - return configuration; + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + AnyXmlBuilder other = (AnyXmlBuilder) obj; + if (schemaPath == null) { + if (other.schemaPath != null) { + return false; + } + } else if (!schemaPath.equals(other.schemaPath)) { + return false; + } + if (parent == null) { + if (other.parent != null) { + return false; + } + } else if (!parent.equals(other.parent)) { + return false; + } + return true; } @Override - public void setConfiguration(final boolean configuration) { - instance.setConfiguration(configuration); + public String toString() { + return "anyxml " + qname.getLocalName(); } - private static class AnyXmlSchemaNodeImpl implements AnyXmlSchemaNode { + private final class AnyXmlSchemaNodeImpl implements AnyXmlSchemaNode { private final QName qname; private SchemaPath path; private String description; @@ -143,6 +170,8 @@ public class AnyXmlBuilder implements DataSchemaNodeBuilder { private Status status = Status.CURRENT; private boolean configuration; private ConstraintDefinition constraintsDef; + private boolean augmenting; + private boolean addedByUses; private List unknownNodes = Collections.emptyList(); private AnyXmlSchemaNodeImpl(final QName qname) { @@ -194,7 +223,20 @@ public class AnyXmlBuilder implements DataSchemaNodeBuilder { @Override public boolean isAugmenting() { - return false; + return augmenting; + } + + private void setAugmenting(boolean augmenting) { + this.augmenting = augmenting; + } + + @Override + public boolean isAddedByUses() { + return addedByUses; + } + + private void setAddedByUses(boolean addedByUses) { + this.addedByUses = addedByUses; } @Override @@ -266,8 +308,7 @@ public class AnyXmlBuilder implements DataSchemaNodeBuilder { @Override public String toString() { - StringBuilder sb = new StringBuilder( - AnyXmlSchemaNodeImpl.class.getSimpleName()); + StringBuilder sb = new StringBuilder(AnyXmlSchemaNodeImpl.class.getSimpleName()); sb.append("["); sb.append("qname=" + qname); sb.append(", path=" + path);