X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fyang-model-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fyang%2Fparser%2Fbuilder%2Fimpl%2FUnionTypeBuilder.java;h=6c57c25b988949587a68a878b9357fbd290f2a73;hp=a184e23e1b84f6dea74e814801aea5660a1a7d0a;hb=ac39de5a9b96438d30df745895454c02e15e51e3;hpb=1069fd445de35caa94d8cf6021e4e54399bdf5f7 diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UnionTypeBuilder.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UnionTypeBuilder.java index a184e23e1b..6c57c25b98 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UnionTypeBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UnionTypeBuilder.java @@ -7,23 +7,21 @@ */ package org.opendaylight.controller.yang.parser.builder.impl; -import java.net.URI; import java.util.ArrayList; import java.util.Collections; -import java.util.Date; import java.util.List; -import org.opendaylight.controller.yang.common.QName; 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.model.api.type.LengthConstraint; import org.opendaylight.controller.yang.model.api.type.PatternConstraint; import org.opendaylight.controller.yang.model.api.type.RangeConstraint; import org.opendaylight.controller.yang.model.util.UnionType; import org.opendaylight.controller.yang.parser.builder.api.AbstractTypeAwareBuilder; -import org.opendaylight.controller.yang.parser.builder.api.Builder; import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder; +import org.opendaylight.controller.yang.parser.util.YangParseException; /** * Builder for YANG union type. User can add type to this union as @@ -31,36 +29,20 @@ import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder * When build is called, types in builder form will be built and add to resolved * types. */ -public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements - TypeDefinitionBuilder, Builder { - private final static String CLASS_NAME = UnionTypeBuilder.class - .getSimpleName(); +public final class UnionTypeBuilder extends AbstractTypeAwareBuilder implements TypeDefinitionBuilder { + private final static String NAME = "union"; - private final int line; private final List> types; private final List typedefs; - private final UnionType instance; - private boolean built; + private UnionType instance; + private boolean isBuilt; - private final List actualPath; - private final URI namespace; - private final Date revision; + private SchemaPath path; - public UnionTypeBuilder(final List actualPath, final URI namespace, - final Date revision, final int line) { - this.line = line; + public UnionTypeBuilder(final String moduleName, final int line) { + super(moduleName, line, null); types = new ArrayList>(); typedefs = new ArrayList(); - instance = new UnionType(actualPath, namespace, revision, types); - - this.actualPath = actualPath; - this.namespace = namespace; - this.revision = revision; - } - - @Override - public int getLine() { - return line; } public List> getTypes() { @@ -87,59 +69,65 @@ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements } @Override - public void setType(final TypeDefinitionBuilder tdb) { + public void setTypedef(final TypeDefinitionBuilder tdb) { typedefs.add(tdb); } @Override public UnionType build() { - if (built) { - return instance; - } else { + if (!isBuilt) { + instance = new UnionType(path, types); for (TypeDefinitionBuilder tdb : typedefs) { types.add(tdb.build()); } - built = true; - return instance; + isBuilt = true; } + return instance; } @Override public void setPath(final SchemaPath schemaPath) { - throw new IllegalStateException("Can not set path to " + CLASS_NAME); + this.path = schemaPath; } @Override public void setDescription(final String description) { - throw new IllegalStateException("Can not set description to " - + CLASS_NAME); + throw new YangParseException(moduleName, line, "Can not set description to " + NAME); } @Override public void setReference(final String reference) { - throw new IllegalStateException("Can not set reference to " - + CLASS_NAME); + throw new YangParseException(moduleName, line, "Can not set reference to " + NAME); } @Override public void setStatus(final Status status) { - throw new IllegalStateException("Can not set status to " + CLASS_NAME); + throw new YangParseException(moduleName, line, "Can not set status to " + NAME); } @Override - public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) { - throw new IllegalStateException("Can not add unknown node to " - + CLASS_NAME); + public boolean isAddedByUses() { + return false; } @Override - public QName getQName() { - return null; + 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(); + } + + @Override + public void addUnknownNodeBuilder(final UnknownSchemaNodeBuilder unknownNode) { + // not yet supported } @Override public SchemaPath getPath() { - return null; + return path; } @Override @@ -164,8 +152,7 @@ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setRanges(List ranges) { - throw new IllegalStateException("Can not set ranges to " - + UnionTypeBuilder.class.getSimpleName()); + throw new YangParseException(moduleName, line, "Can not set ranges to " + NAME); } @Override @@ -175,8 +162,7 @@ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setLengths(List lengths) { - throw new IllegalStateException("Can not set lengths to " - + UnionTypeBuilder.class.getSimpleName()); + throw new YangParseException(moduleName, line, "Can not set lengths to " + NAME); } @Override @@ -186,8 +172,7 @@ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setPatterns(List patterns) { - throw new IllegalStateException("Can not set patterns to " - + UnionTypeBuilder.class.getSimpleName()); + throw new YangParseException(moduleName, line, "Can not set patterns to " + NAME); } @Override @@ -197,12 +182,11 @@ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setFractionDigits(Integer fractionDigits) { - throw new IllegalStateException("Can not set fraction digits to " - + UnionTypeBuilder.class.getSimpleName()); + throw new YangParseException(moduleName, line, "Can not set fraction digits to " + NAME); } @Override - public List getUnknownNodes() { + public List getUnknownNodeBuilders() { return Collections.emptyList(); } @@ -213,8 +197,7 @@ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setDefaultValue(Object defaultValue) { - throw new IllegalStateException("Can not set default value to " - + UnionTypeBuilder.class.getSimpleName()); + throw new YangParseException(moduleName, line, "Can not set default value to " + NAME); } @Override @@ -224,26 +207,12 @@ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setUnits(String units) { - throw new IllegalStateException("Can not set units to " - + UnionTypeBuilder.class.getSimpleName()); - } - - public List getActualPath() { - return actualPath; - } - - public URI getNamespace() { - return namespace; - } - - public Date getRevision() { - return revision; + throw new YangParseException(moduleName, line, "Can not set units to " + NAME); } @Override public String toString() { - final StringBuilder result = new StringBuilder( - UnionTypeBuilder.class.getSimpleName() + "["); + final StringBuilder result = new StringBuilder(UnionTypeBuilder.class.getSimpleName() + "["); result.append(", types=" + types); result.append(", typedefs=" + typedefs); result.append("]");