X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Fbuilder%2Fimpl%2FTypeDefinitionBuilderImpl.java;h=c8ff64102713aa779c903fc82dc0aa473547dd5d;hb=475f8732893197eb41bfa695a4c7dedb45f25f06;hp=75afe1062a55b48d08b58bfc17785789472c4d36;hpb=32a3e022c270af8a7173de9ac82321af99143116;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/TypeDefinitionBuilderImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/TypeDefinitionBuilderImpl.java index 75afe1062a..c8ff641027 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/TypeDefinitionBuilderImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/TypeDefinitionBuilderImpl.java @@ -7,18 +7,12 @@ */ package org.opendaylight.yangtools.yang.parser.builder.impl; -import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.model.api.Status; -import org.opendaylight.yangtools.yang.model.api.TypeDefinition; -import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint; -import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint; -import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; +import org.opendaylight.yangtools.yang.model.api.*; +import org.opendaylight.yangtools.yang.model.api.type.*; import org.opendaylight.yangtools.yang.model.util.ExtendedType; import org.opendaylight.yangtools.yang.model.util.UnknownType; import org.opendaylight.yangtools.yang.parser.builder.api.AbstractTypeAwareBuilder; @@ -27,7 +21,7 @@ import org.opendaylight.yangtools.yang.parser.util.Comparators; import org.opendaylight.yangtools.yang.parser.util.YangParseException; public final class TypeDefinitionBuilderImpl extends AbstractTypeAwareBuilder implements TypeDefinitionBuilder { - private SchemaPath schemaPath; + private final SchemaPath schemaPath; private List ranges = Collections.emptyList(); private List lengths = Collections.emptyList(); private List patterns = Collections.emptyList(); @@ -40,8 +34,29 @@ public final class TypeDefinitionBuilderImpl extends AbstractTypeAwareBuilder im private Object defaultValue; private boolean addedByUses; - public TypeDefinitionBuilderImpl(final String moduleName, final int line, final QName qname) { + public TypeDefinitionBuilderImpl(final String moduleName, final int line, final QName qname, final SchemaPath path) { super(moduleName, line, qname); + this.schemaPath = path; + } + + public TypeDefinitionBuilderImpl(final String moduleName, final int line, final QName qname, final SchemaPath path, final ExtendedType base) { + super(moduleName, line, base.getQName()); + this.schemaPath = path; + + this.type = base.getBaseType(); + this.description = base.getDescription(); + this.reference = base.getReference(); + this.status = base.getStatus(); + this.units = base.getUnits(); + this.defaultValue = base.getDefaultValue(); + + ExtendedType ext = base; + this.addedByUses = ext.isAddedByUses(); + this.ranges = ext.getRangeConstraints(); + this.lengths = ext.getLengthConstraints(); + this.patterns = ext.getPatternConstraints(); + this.fractionDigits = ext.getFractionDigits(); + this.unknownNodes.addAll(base.getUnknownSchemaNodes()); } @Override @@ -56,38 +71,33 @@ public final class TypeDefinitionBuilderImpl extends AbstractTypeAwareBuilder im } typeBuilder = new ExtendedType.Builder(qname, type, description, reference, schemaPath); - typeBuilder.status(status); typeBuilder.units(units); typeBuilder.defaultValue(defaultValue); typeBuilder.addedByUses(addedByUses); - typeBuilder.ranges(ranges); typeBuilder.lengths(lengths); typeBuilder.patterns(patterns); typeBuilder.fractionDigits(fractionDigits); // UNKNOWN NODES - if (unknownNodes == null) { - unknownNodes = new ArrayList(); - for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { - unknownNodes.add(b.build()); - } - Collections.sort(unknownNodes, Comparators.SCHEMA_NODE_COMP); + for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { + unknownNodes.add(b.build()); } + Collections.sort(unknownNodes, Comparators.SCHEMA_NODE_COMP); typeBuilder.unknownSchemaNodes(unknownNodes); result = typeBuilder.build(); return result; } @Override - public SchemaPath getPath() { - return schemaPath; + public void setQName(QName qname) { + this.qname = qname; } @Override - public void setPath(final SchemaPath schemaPath) { - this.schemaPath = schemaPath; + public SchemaPath getPath() { + return schemaPath; } @Override @@ -153,7 +163,7 @@ public final class TypeDefinitionBuilderImpl extends AbstractTypeAwareBuilder im } @Override - public List getUnknownNodes() { + public List getUnknownNodes() { return Collections.emptyList(); } @@ -208,4 +218,40 @@ public final class TypeDefinitionBuilderImpl extends AbstractTypeAwareBuilder im return "typedef " + qname.getLocalName(); } + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + ((schemaPath == null) ? 0 : schemaPath.hashCode()); + + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + if (!super.equals(obj)) { + return false; + } + TypeDefinitionBuilderImpl other = (TypeDefinitionBuilderImpl) obj; + + if (schemaPath == null) { + if (other.schemaPath != null) { + return false; + } + } else if (!schemaPath.equals(other.schemaPath)) { + return false; + } + + return true; + } + }