*/
package org.opendaylight.yangtools.yang.parser.builder.impl;
-import java.util.ArrayList;
+import com.google.common.base.Optional;
+import com.google.common.base.Preconditions;
import java.util.Collections;
import java.util.List;
-
+import java.util.Objects;
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.util.ExtendedType;
-import org.opendaylight.yangtools.yang.model.util.UnknownType;
-import org.opendaylight.yangtools.yang.parser.builder.api.AbstractTypeAwareBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.yangtools.yang.parser.util.Comparators;
+import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder;
+import org.opendaylight.yangtools.yang.parser.builder.util.AbstractTypeAwareBuilder;
+import org.opendaylight.yangtools.yang.parser.builder.util.Comparators;
import org.opendaylight.yangtools.yang.parser.util.YangParseException;
+/**
+ * @deprecated Pre-Beryllium implementation, scheduled for removal.
+ */
+@Deprecated
public final class TypeDefinitionBuilderImpl extends AbstractTypeAwareBuilder implements TypeDefinitionBuilder {
private SchemaPath schemaPath;
private List<RangeConstraint> ranges = Collections.emptyList();
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 = Preconditions.checkNotNull(path, "Schema Path must not be null");
}
- public TypeDefinitionBuilderImpl(TypeDefinitionBuilder tdb, QName qname) {
- super(tdb.getModuleName(), tdb.getLine(), qname);
- schemaPath = tdb.getPath();
-
- type = tdb.getType();
- typedef = tdb.getTypedef();
-
- unknownNodes = tdb.getUnknownNodes();
- for (UnknownSchemaNodeBuilder usnb : tdb.getUnknownNodeBuilders()) {
- addedUnknownNodes.add(usnb);
- }
- ranges = tdb.getRanges();
- lengths = tdb.getLengths();
- patterns = tdb.getPatterns();
- fractionDigits = tdb.getFractionDigits();
-
- description = tdb.getDescription();
- reference = tdb.getReference();
- status = tdb.getStatus();
- units = tdb.getUnits();
- defaultValue = tdb.getDefaultValue();
- addedByUses = tdb.isAddedByUses();
+ public TypeDefinitionBuilderImpl(final String moduleName, final int line, final QName qname, final SchemaPath path, final ExtendedType base) {
+ super(moduleName, line, base.getQName());
+ this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null");
+
+ this.type = base.getBaseType();
+ this.description = base.getDescription();
+ this.reference = base.getReference();
+ this.status = base.getStatus();
+ this.units = base.getUnits();
+ this.defaultValue = base.getDefaultValue();
+
+ this.addedByUses = base.isAddedByUses();
+ this.ranges = base.getRangeConstraints();
+ this.lengths = base.getLengthConstraints();
+ this.patterns = base.getPatternConstraints();
+ this.fractionDigits = base.getFractionDigits();
+ this.unknownNodes.addAll(base.getUnknownSchemaNodes());
}
@Override
public TypeDefinition<? extends TypeDefinition<?>> build() {
- TypeDefinition<?> result = null;
- ExtendedType.Builder typeBuilder = null;
- if ((type == null || type instanceof UnknownType) && typedef == null) {
- throw new YangParseException("Unresolved type: '" + qname.getLocalName() + "'.");
- }
- if (type == null || type instanceof UnknownType) {
- type = typedef.build();
+ TypeDefinition<?> result;
+ ExtendedType.Builder typeBuilder;
+ if (type == null) {
+ if (typedef == null) {
+ throw new YangParseException("Unresolved type: '" + qname.getLocalName() + "'.");
+ } else {
+ type = typedef.build();
+ }
}
- typeBuilder = new ExtendedType.Builder(qname, type, description, reference, schemaPath);
-
+ typeBuilder = ExtendedType.builder(qname, type, Optional.fromNullable(description),
+ Optional.fromNullable(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<UnknownSchemaNode>();
- 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 void setQName(final QName qname) {
+ this.qname = qname;
+ }
+
@Override
public SchemaPath getPath() {
return schemaPath;
}
@Override
- public void setPath(final SchemaPath schemaPath) {
- this.schemaPath = schemaPath;
+ public void setPath(final SchemaPath path) {
+ this.schemaPath = path;
}
@Override
this.defaultValue = defaultValue;
}
- @Override
- public List<UnknownSchemaNode> getUnknownNodes() {
- return Collections.emptyList();
- }
-
@Override
public List<RangeConstraint> getRanges() {
return ranges;
@Override
public String toString() {
- final StringBuilder result = new StringBuilder("TypedefBuilder[" + qname.getLocalName());
- result.append(", type=");
- if (type == null) {
- result.append(typedef);
- } else {
- result.append(type);
+ return "typedef " + qname.getLocalName();
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + Objects.hashCode(schemaPath);
+
+ return result;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ if (!super.equals(obj)) {
+ return false;
}
- result.append("]");
- return result.toString();
+ TypeDefinitionBuilderImpl other = (TypeDefinitionBuilderImpl) obj;
+
+ if (schemaPath == null) {
+ if (other.schemaPath != null) {
+ return false;
+ }
+ } else if (!schemaPath.equals(other.schemaPath)) {
+ return false;
+ }
+
+ return true;
}
}