*/
package org.opendaylight.yangtools.yang.parser.builder.impl;
-import java.util.*;
-
+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.*;
-import org.opendaylight.yangtools.yang.model.api.type.*;
+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.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.BaseTypes;
import org.opendaylight.yangtools.yang.model.util.UnionType;
-import org.opendaylight.yangtools.yang.parser.builder.api.AbstractTypeAwareBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder;
+import org.opendaylight.yangtools.yang.parser.builder.util.AbstractTypeAwareBuilder;
import org.opendaylight.yangtools.yang.parser.util.YangParseException;
/**
* types.
*/
public final class UnionTypeBuilder extends AbstractTypeAwareBuilder implements TypeDefinitionBuilder {
+ private static final SchemaPath SCHEMA_PATH = SchemaPath.create(true, BaseTypes.UNION_QNAME);
private static final String NAME = "union";
- private static final QName QNAME = BaseTypes.constructQName(NAME);
private final List<TypeDefinition<?>> types;
private final List<TypeDefinitionBuilder> typedefs;
private UnionType instance;
private boolean isBuilt;
+ private List<QName> baseTypesQNames = new ArrayList<>();
+
public UnionTypeBuilder(final String moduleName, final int line) {
- super(moduleName, line, BaseTypes.constructQName(NAME));
- types = new ArrayList<TypeDefinition<?>>();
- typedefs = new ArrayList<TypeDefinitionBuilder>();
+ super(moduleName, line, BaseTypes.UNION_QNAME);
+ types = new ArrayList<>();
+ typedefs = new ArrayList<>();
+ }
+
+ public List<QName> getBaseTypeQNames() {
+ return baseTypesQNames;
+ }
+
+ @Override
+ public void setTypeQName(final QName qname) {
+ baseTypesQNames.add(qname);
}
public List<TypeDefinition<?>> getTypes() {
}
@Override
- public void setQName(QName qname) {
+ public void setQName(final QName qname) {
throw new UnsupportedOperationException("Can not set qname to union type");
}
@Override
public UnionType build() {
if (!isBuilt) {
- instance = new UnionType(types);
for (TypeDefinitionBuilder tdb : typedefs) {
types.add(tdb.build());
}
+ instance = UnionType.create(types);
isBuilt = true;
}
return instance;
@Override
public void setDescription(final String description) {
- throw new YangParseException(moduleName, line, "Can not set description to " + NAME);
+ throw new YangParseException(getModuleName(), getLine(), "Can not set description to " + NAME);
}
@Override
public void setReference(final String reference) {
- throw new YangParseException(moduleName, line, "Can not set reference to " + NAME);
+ throw new YangParseException(getModuleName(), getLine(), "Can not set reference to " + NAME);
}
@Override
public void setStatus(final Status status) {
- throw new YangParseException(moduleName, line, "Can not set status to " + NAME);
+ throw new YangParseException(getModuleName(), getLine(), "Can not set status to " + NAME);
}
@Override
@Override
public void setAddedByUses(final boolean addedByUses) {
- throw new YangParseException(moduleName, line, "Union type can not be added by uses.");
+ throw new YangParseException(getModuleName(), getLine(), "Union type can not be added by uses.");
}
@Override
@Override
public SchemaPath getPath() {
- return BaseTypes.schemaPath(QNAME);
+ return SCHEMA_PATH;
}
@Override
- public void setPath(SchemaPath path) {
- throw new YangParseException(moduleName, line, "Can not set path to " + NAME);
+ public void setPath(final SchemaPath path) {
+ throw new YangParseException(getModuleName(), getLine(), "Can not set path to " + NAME);
}
@Override
}
@Override
- public void setRanges(List<RangeConstraint> ranges) {
- throw new YangParseException(moduleName, line, "Can not set ranges to " + NAME);
+ public void setRanges(final List<RangeConstraint> ranges) {
+ throw new YangParseException(getModuleName(), getLine(), "Can not set ranges to " + NAME);
}
@Override
}
@Override
- public void setLengths(List<LengthConstraint> lengths) {
- throw new YangParseException(moduleName, line, "Can not set lengths to " + NAME);
+ public void setLengths(final List<LengthConstraint> lengths) {
+ throw new YangParseException(getModuleName(), getLine(), "Can not set lengths to " + NAME);
}
@Override
}
@Override
- public void setPatterns(List<PatternConstraint> patterns) {
- throw new YangParseException(moduleName, line, "Can not set patterns to " + NAME);
+ public void setPatterns(final List<PatternConstraint> patterns) {
+ throw new YangParseException(getModuleName(), getLine(), "Can not set patterns to " + NAME);
}
@Override
}
@Override
- public void setFractionDigits(Integer fractionDigits) {
- throw new YangParseException(moduleName, line, "Can not set fraction digits to " + NAME);
+ public void setFractionDigits(final Integer fractionDigits) {
+ throw new YangParseException(getModuleName(), getLine(), "Can not set fraction digits to " + NAME);
}
@Override
}
@Override
- public void setDefaultValue(Object defaultValue) {
- throw new YangParseException(moduleName, line, "Can not set default value to " + NAME);
+ public void setDefaultValue(final Object defaultValue) {
+ throw new YangParseException(getModuleName(), getLine(), "Can not set default value to " + NAME);
}
@Override
}
@Override
- public void setUnits(String units) {
- throw new YangParseException(moduleName, line, "Can not set units to " + NAME);
+ public void setUnits(final String units) {
+ throw new YangParseException(getModuleName(), getLine(), "Can not set units to " + NAME);
}
@Override