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%2FUnionTypeBuilder.java;h=adb39dce786bd13fb9f3b9ecf204c5dbfc1e7fa1;hb=481a692d463636bbcf75f023da71703913e1b605;hp=4e913c460f62eb0001d75b4fecbbdf08ee64e1f0;hpb=c1e1c4777e6fbf3ccde612469f100e677ff36184;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UnionTypeBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UnionTypeBuilder.java index 4e913c460f..adb39dce78 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UnionTypeBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UnionTypeBuilder.java @@ -10,19 +10,18 @@ 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.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; /** @@ -32,18 +31,29 @@ 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> types; private final List typedefs; private UnionType instance; private boolean isBuilt; + private List baseTypesQNames = new ArrayList<>(); + public UnionTypeBuilder(final String moduleName, final int line) { - super(moduleName, line, BaseTypes.constructQName(NAME)); - types = new ArrayList>(); - typedefs = new ArrayList(); + super(moduleName, line, BaseTypes.UNION_QNAME); + types = new ArrayList<>(); + typedefs = new ArrayList<>(); + } + + public List getBaseTypeQNames() { + return baseTypesQNames; + } + + @Override + public void setTypeQName(final QName qname) { + baseTypesQNames.add(qname); } public List> getTypes() { @@ -51,7 +61,7 @@ public final class UnionTypeBuilder extends AbstractTypeAwareBuilder implements } @Override - public void setQName(QName qname) { + public void setQName(final QName qname) { throw new UnsupportedOperationException("Can not set qname to union type"); } @@ -82,33 +92,28 @@ public final class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @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 setPath(final SchemaPath schemaPath) { - throw new YangParseException(moduleName, line, "Can not set path to " + NAME); - } - @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 @@ -118,12 +123,7 @@ public final class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setAddedByUses(final boolean addedByUses) { - throw new YangParseException(moduleName, line, "Union type can not be added by uses."); - } - - @Override - public List getUnknownNodes() { - return Collections.emptyList(); + throw new YangParseException(getModuleName(), getLine(), "Union type can not be added by uses."); } @Override @@ -133,7 +133,12 @@ public final class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @Override public SchemaPath getPath() { - return BaseTypes.schemaPath(QNAME); + return SCHEMA_PATH; + } + + @Override + public void setPath(final SchemaPath path) { + throw new YangParseException(getModuleName(), getLine(), "Can not set path to " + NAME); } @Override @@ -157,8 +162,8 @@ public final class UnionTypeBuilder extends AbstractTypeAwareBuilder implements } @Override - public void setRanges(List ranges) { - throw new YangParseException(moduleName, line, "Can not set ranges to " + NAME); + public void setRanges(final List ranges) { + throw new YangParseException(getModuleName(), getLine(), "Can not set ranges to " + NAME); } @Override @@ -167,8 +172,8 @@ public final class UnionTypeBuilder extends AbstractTypeAwareBuilder implements } @Override - public void setLengths(List lengths) { - throw new YangParseException(moduleName, line, "Can not set lengths to " + NAME); + public void setLengths(final List lengths) { + throw new YangParseException(getModuleName(), getLine(), "Can not set lengths to " + NAME); } @Override @@ -177,8 +182,8 @@ public final class UnionTypeBuilder extends AbstractTypeAwareBuilder implements } @Override - public void setPatterns(List patterns) { - throw new YangParseException(moduleName, line, "Can not set patterns to " + NAME); + public void setPatterns(final List patterns) { + throw new YangParseException(getModuleName(), getLine(), "Can not set patterns to " + NAME); } @Override @@ -187,12 +192,12 @@ public final class UnionTypeBuilder extends AbstractTypeAwareBuilder implements } @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 - public List getUnknownNodeBuilders() { + public List getUnknownNodes() { return Collections.emptyList(); } @@ -202,8 +207,8 @@ public final class UnionTypeBuilder extends AbstractTypeAwareBuilder implements } @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 @@ -212,8 +217,8 @@ public final class UnionTypeBuilder extends AbstractTypeAwareBuilder implements } @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