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%2FRpcDefinitionBuilder.java;h=65b15c583b672b30acc0be6531b91209d3202458;hb=refs%2Fchanges%2F79%2F579%2F2;hp=003ccced4ab2d72476ff8360efea25e9e3e62b73;hpb=35ba67e73cf9fea55535c1aef8303e7d12c982e7;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/RpcDefinitionBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/RpcDefinitionBuilder.java index 003ccced4a..65b15c583b 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/RpcDefinitionBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/RpcDefinitionBuilder.java @@ -12,6 +12,7 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.TreeSet; import org.opendaylight.controller.yang.common.QName; import org.opendaylight.controller.yang.model.api.ContainerSchemaNode; @@ -21,71 +22,67 @@ import org.opendaylight.controller.yang.model.api.SchemaPath; import org.opendaylight.controller.yang.model.api.Status; import org.opendaylight.controller.yang.model.api.TypeDefinition; 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.GroupingBuilder; -import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder; -import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionAwareBuilder; import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder; +import org.opendaylight.controller.yang.parser.util.Comparators; -public class RpcDefinitionBuilder implements SchemaNodeBuilder, - TypeDefinitionAwareBuilder { - private boolean built; +public final class RpcDefinitionBuilder extends AbstractSchemaNodeBuilder { + private boolean isBuilt; private final RpcDefinitionImpl instance; - private final int line; - private final QName qname; - private SchemaPath schemaPath; private ContainerSchemaNodeBuilder inputBuilder; private ContainerSchemaNodeBuilder outputBuilder; private final Set addedTypedefs = new HashSet(); private final Set addedGroupings = new HashSet(); - private final List addedUnknownNodes = new ArrayList(); - RpcDefinitionBuilder(final QName qname, final int line) { - this.qname = qname; - this.line = line; + RpcDefinitionBuilder(final int line, final QName qname) { + super(line, qname); this.instance = new RpcDefinitionImpl(qname); } @Override public RpcDefinition build() { - if(!built) { - final ContainerSchemaNode input = inputBuilder.build(); - final ContainerSchemaNode output = outputBuilder.build(); + if (!isBuilt) { + instance.setDescription(description); + instance.setReference(reference); + instance.setStatus(status); + + final ContainerSchemaNode input = inputBuilder == null ? null : inputBuilder.build(); + final ContainerSchemaNode output = outputBuilder == null ? null : outputBuilder.build(); instance.setInput(input); instance.setOutput(output); instance.setPath(schemaPath); // TYPEDEFS - final Set> typedefs = new HashSet>(); + final Set> typedefs = new TreeSet>(Comparators.SCHEMA_NODE_COMP); for (TypeDefinitionBuilder entry : addedTypedefs) { typedefs.add(entry.build()); } instance.setTypeDefinitions(typedefs); // GROUPINGS - final Set groupings = new HashSet(); + final Set groupings = new TreeSet(Comparators.SCHEMA_NODE_COMP); for (GroupingBuilder entry : addedGroupings) { groupings.add(entry.build()); } instance.setGroupings(groupings); // UNKNOWN NODES - final List unknownNodes = new ArrayList(); - for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { - unknownNodes.add(b.build()); + if (unknownNodes == null) { + unknownNodes = new ArrayList(); + for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { + unknownNodes.add(b.build()); + } + Collections.sort(unknownNodes, Comparators.SCHEMA_NODE_COMP); } instance.setUnknownSchemaNodes(unknownNodes); - built = true; + isBuilt = true; } return instance; } - @Override - public int getLine() { - return line; - } - void setInput(final ContainerSchemaNodeBuilder inputBuilder) { this.inputBuilder = inputBuilder; } @@ -94,49 +91,29 @@ public class RpcDefinitionBuilder implements SchemaNodeBuilder, this.outputBuilder = outputBuilder; } - @Override - public void addTypedef(final TypeDefinitionBuilder type) { - addedTypedefs.add(type); - } - - @Override - public SchemaPath getPath() { - return schemaPath; - } - - @Override - public void setPath(SchemaPath schemaPath) { - this.schemaPath = schemaPath; - } - - @Override - public void setDescription(final String description) { - instance.setDescription(description); - } - - @Override - public void setReference(final String reference) { - instance.setReference(reference); + public Set getTypeDefinitions() { + return addedTypedefs; } - @Override - public void setStatus(final Status status) { - instance.setStatus(status); + public void addTypedef(final TypeDefinitionBuilder type) { + addedTypedefs.add(type); } - @Override - public QName getQName() { - return null; + public Set getGroupings() { + return addedGroupings; } - @Override - public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) { - addedUnknownNodes.add(unknownNode); + public void addGrouping(GroupingBuilder grouping) { + addedGroupings.add(grouping); } @Override public int hashCode() { - return qname.hashCode(); + final int prime = 31; + int result = 1; + result = prime * result + ((qname == null) ? 0 : qname.hashCode()); + result = prime * result + ((schemaPath == null) ? 0 : schemaPath.hashCode()); + return result; } @Override @@ -155,10 +132,22 @@ public class RpcDefinitionBuilder implements SchemaNodeBuilder, } else if (!other.qname.equals(this.qname)) { return false; } + if (other.schemaPath == null) { + if (this.schemaPath != null) { + return false; + } + } else if (!other.schemaPath.equals(this.schemaPath)) { + return false; + } return true; } - private class RpcDefinitionImpl implements RpcDefinition { + @Override + public String toString() { + return "rpc " + qname.getLocalName(); + } + + private final class RpcDefinitionImpl implements RpcDefinition { private final QName qname; private SchemaPath path; private String description; @@ -302,8 +291,7 @@ public class RpcDefinitionBuilder implements SchemaNodeBuilder, @Override public String toString() { - StringBuilder sb = new StringBuilder( - RpcDefinitionImpl.class.getSimpleName() + "["); + StringBuilder sb = new StringBuilder(RpcDefinitionImpl.class.getSimpleName() + "["); sb.append("qname=" + qname); sb.append(", path=" + path); sb.append(", input=" + input);