X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?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=811b77566836b0f95ad9844562117bc239b569a1;hb=6e8fef270b6dc88f1dedca0c3e607a1a16e6ce2f;hp=fd9a3aabc84cc5d10b7d1d41cca9a4b5787de809;hpb=39ff6ed2000232d607877311770c74cef36cf96f;p=controller.git 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 fd9a3aabc8..811b775668 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 @@ -22,8 +22,8 @@ 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 @@ -32,11 +32,14 @@ import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder * types. */ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements - TypeDefinitionBuilder, Builder { + 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 final List actualPath; private final URI namespace; @@ -89,40 +92,41 @@ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @Override public UnionType build() { - for (TypeDefinitionBuilder tdb : typedefs) { - types.add(tdb.build()); + if (built) { + return instance; + } else { + for (TypeDefinitionBuilder tdb : typedefs) { + types.add(tdb.build()); + } + built = true; + return instance; } - return instance; } @Override public void setPath(final SchemaPath schemaPath) { - throw new IllegalStateException("Can not set path to " - + UnionTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set path to " + NAME); } @Override public void setDescription(final String description) { - throw new IllegalStateException("Can not set description to " - + UnionTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set description to " + NAME); } @Override public void setReference(final String reference) { - throw new IllegalStateException("Can not set reference to " - + UnionTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set reference to " + NAME); } @Override public void setStatus(final Status status) { - throw new IllegalStateException("Can not set status to " - + UnionTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set status to " + NAME); } @Override public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) { - throw new IllegalStateException("Can not add unknown node to " - + UnionTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not add unknown node to " + + NAME); } @Override @@ -157,8 +161,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(line, "Can not set ranges to " + NAME); } @Override @@ -168,8 +171,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(line, "Can not set lengths to " + NAME); } @Override @@ -179,8 +181,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(line, "Can not set patterns to " + NAME); } @Override @@ -190,8 +191,8 @@ 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(line, "Can not set fraction digits to " + + NAME); } @Override @@ -206,8 +207,8 @@ 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(line, "Can not set default value to " + + NAME); } @Override @@ -217,8 +218,7 @@ public class UnionTypeBuilder extends AbstractTypeAwareBuilder implements @Override public void setUnits(String units) { - throw new IllegalStateException("Can not set units to " - + UnionTypeBuilder.class.getSimpleName()); + throw new YangParseException(line, "Can not set units to " + NAME); } public List getActualPath() {