From: Martin Vitez Date: Wed, 5 Jun 2013 14:18:01 +0000 (+0200) Subject: Modified construction of built-in yang types. X-Git-Tag: releasepom-0.1.0~381^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=9ceed566491d172e02220b04ec6869867f2f2473 Modified construction of built-in yang types. Base yang types can not be restricted now. Every restriction causes creation of new ExtendedType with default yang type as base type. Updated tests. Change-Id: I04b2a0a069dcf4f7b3a3d1220c742fed047cba3a Signed-off-by: Martin Vitez --- diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/impl/YangParserImpl.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/impl/YangParserImpl.java index 25af3ebae5..401189b1d1 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/impl/YangParserImpl.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/impl/YangParserImpl.java @@ -49,6 +49,7 @@ import org.opendaylight.controller.yang.model.parser.api.YangModelParser; import org.opendaylight.controller.yang.model.util.ExtendedType; import org.opendaylight.controller.yang.model.util.IdentityrefType; import org.opendaylight.controller.yang.model.util.UnknownType; +import org.opendaylight.controller.yang.model.util.YangTypesConverter; import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder; import org.opendaylight.controller.yang.parser.builder.api.AugmentationTargetBuilder; import org.opendaylight.controller.yang.parser.builder.api.Builder; @@ -552,11 +553,16 @@ public final class YangParserImpl implements YangModelParser { constraints.addPatterns(patterns); fractionDigits = ext.getFractionDigits(); constraints.setFractionDigits(fractionDigits); - return findConstraints( - findTypeDefinitionBuilder(nodeToResolve.getPath(), builder, - ext.getQName().getLocalName(), builder.getName(), - nodeToResolve.getLine()), constraints, modules, - builder); + if(YangTypesConverter.isBaseYangType(ext.getBaseType().getQName().getLocalName())) { + mergeConstraints(ext.getBaseType(), constraints); + return constraints; + } else { + return findConstraints( + findTypeDefinitionBuilder(nodeToResolve.getPath(), builder, + ext.getQName().getLocalName(), builder.getName(), + nodeToResolve.getLine()), constraints, modules, + builder); + } } else if (referencedType instanceof UnknownType) { final UnknownType unknown = (UnknownType) referencedType; ranges = unknown.getRangeStatements(); diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/impl/YangParserListenerImpl.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/impl/YangParserListenerImpl.java index 8b739098a0..d7394e6229 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/impl/YangParserListenerImpl.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/impl/YangParserListenerImpl.java @@ -356,10 +356,7 @@ public final class YangParserListenerImpl extends YangParserBaseListener { getIdentityrefBase(typeBody), actualPath, path, line); } else { - List typePath = new ArrayList(actualPath); - typePath.add(typeName); - - type = parseTypeBody(typeName, typeBody, typePath, + type = parseTypeBody(typeName, typeBody, actualPath, namespace, revision, yangModelPrefix); moduleBuilder.setType(type, actualPath); } diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/ParserUtils.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/ParserUtils.java index 2e3f0cc860..e95a162de7 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/ParserUtils.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/ParserUtils.java @@ -8,7 +8,6 @@ package org.opendaylight.controller.yang.parser.util; import java.lang.reflect.Method; -import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -28,9 +27,6 @@ import org.opendaylight.controller.yang.model.api.type.IdentityrefTypeDefinition import org.opendaylight.controller.yang.model.api.type.InstanceIdentifierTypeDefinition; import org.opendaylight.controller.yang.model.api.type.IntegerTypeDefinition; import org.opendaylight.controller.yang.model.api.type.LeafrefTypeDefinition; -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.api.type.StringTypeDefinition; import org.opendaylight.controller.yang.model.api.type.UnionTypeDefinition; import org.opendaylight.controller.yang.model.api.type.UnsignedIntegerTypeDefinition; @@ -198,30 +194,22 @@ public final class ParserUtils { newSchemaPath = createNewSchemaPath(parentSchemaPath, nodeQName, binType.getQName()); List bytes = (List) binType.getDefaultValue(); - result = new BinaryType(newSchemaPath, bytes, - binType.getLengthConstraints(), binType.getUnits()); + result = new BinaryType(newSchemaPath, bytes); } else if (nodeType instanceof BitsTypeDefinition) { BitsTypeDefinition bitsType = (BitsTypeDefinition) nodeType; newSchemaPath = createNewSchemaPath(parentSchemaPath, nodeQName, nodeType.getQName()); - result = new BitsType(newSchemaPath, bitsType.getBits(), - bitsType.getUnits()); + result = new BitsType(newSchemaPath, bitsType.getBits()); } else if (nodeType instanceof BooleanTypeDefinition) { BooleanTypeDefinition booleanType = (BooleanTypeDefinition) nodeType; newSchemaPath = createNewSchemaPath(parentSchemaPath, nodeQName, booleanType.getQName()); - result = new BooleanType(newSchemaPath, - (Boolean) booleanType.getDefaultValue(), - booleanType.getUnits()); + result = new BooleanType(newSchemaPath); } else if (nodeType instanceof DecimalTypeDefinition) { DecimalTypeDefinition decimalType = (DecimalTypeDefinition) nodeType; newSchemaPath = createNewSchemaPath(parentSchemaPath, nodeQName, decimalType.getQName()); - BigDecimal defaultValue = (BigDecimal) decimalType - .getDefaultValue(); - result = new Decimal64(newSchemaPath, decimalType.getUnits(), - defaultValue, decimalType.getRangeStatements(), - decimalType.getFractionDigits()); + result = new Decimal64(newSchemaPath, decimalType.getFractionDigits()); } else if (nodeType instanceof EmptyTypeDefinition) { newSchemaPath = createNewSchemaPath(parentSchemaPath, nodeQName, nodeType.getQName()); @@ -232,7 +220,7 @@ public final class ParserUtils { nodeQName, enumType.getQName()); result = new EnumerationType(newSchemaPath, (EnumPair) enumType.getDefaultValue(), - enumType.getValues(), enumType.getUnits()); + enumType.getValues()); } else if (nodeType instanceof IdentityrefTypeDefinition) { IdentityrefTypeDefinition idrefType = (IdentityrefTypeDefinition) nodeType; newSchemaPath = createNewSchemaPath(parentSchemaPath, @@ -247,13 +235,13 @@ public final class ParserUtils { instIdType.getPathStatement(), instIdType.requireInstance()); } else if (nodeType instanceof StringTypeDefinition) { - result = copyStringType(parentSchemaPath, nodeQName, + result = createNewStringType(parentSchemaPath, nodeQName, (StringTypeDefinition) nodeType); } else if (nodeType instanceof IntegerTypeDefinition) { - result = copyIntType(parentSchemaPath, nodeQName, + result = createNewIntType(parentSchemaPath, nodeQName, (IntegerTypeDefinition) nodeType); } else if (nodeType instanceof UnsignedIntegerTypeDefinition) { - result = copyUIntType(parentSchemaPath, nodeQName, + result = createNewUintType(parentSchemaPath, nodeQName, (UnsignedIntegerTypeDefinition) nodeType); } else if (nodeType instanceof LeafrefTypeDefinition) { newSchemaPath = createNewSchemaPath(parentSchemaPath, @@ -270,7 +258,7 @@ public final class ParserUtils { return result; } - private static TypeDefinition copyStringType(SchemaPath schemaPath, + private static TypeDefinition createNewStringType(SchemaPath schemaPath, QName nodeQName, StringTypeDefinition nodeType) { List path = schemaPath.getPath(); List newPath = new ArrayList(path); @@ -279,64 +267,44 @@ public final class ParserUtils { SchemaPath newSchemaPath = new SchemaPath(newPath, schemaPath.isAbsolute()); - String newDefault = nodeType.getDefaultValue().toString(); - String newUnits = nodeType.getUnits(); - List lengths = nodeType.getLengthStatements(); - List patterns = nodeType.getPatterns(); - - return new StringType(newSchemaPath, newDefault, lengths, patterns, - newUnits); + return new StringType(newSchemaPath); } - private static TypeDefinition copyIntType(SchemaPath schemaPath, + private static TypeDefinition createNewIntType(SchemaPath schemaPath, QName nodeQName, IntegerTypeDefinition type) { QName typeQName = type.getQName(); SchemaPath newSchemaPath = createNewSchemaPath(schemaPath, nodeQName, typeQName); - String localName = typeQName.getLocalName(); - List ranges = type.getRangeStatements(); - String units = type.getUnits(); if ("int8".equals(localName)) { - Byte defaultValue = (Byte) type.getDefaultValue(); - return new Int8(newSchemaPath, ranges, units, defaultValue); + return new Int8(newSchemaPath); } else if ("int16".equals(localName)) { - Short defaultValue = (Short) type.getDefaultValue(); - return new Int16(newSchemaPath, ranges, units, defaultValue); + return new Int16(newSchemaPath); } else if ("int32".equals(localName)) { - Integer defaultValue = (Integer) type.getDefaultValue(); - return new Int32(newSchemaPath, ranges, units, defaultValue); + return new Int32(newSchemaPath); } else if ("int64".equals(localName)) { - Long defaultValue = (Long) type.getDefaultValue(); - return new Int64(newSchemaPath, ranges, units, defaultValue); + return new Int64(newSchemaPath); } else { return null; } } - private static TypeDefinition copyUIntType(SchemaPath schemaPath, + private static TypeDefinition createNewUintType(SchemaPath schemaPath, QName nodeQName, UnsignedIntegerTypeDefinition type) { QName typeQName = type.getQName(); SchemaPath newSchemaPath = createNewSchemaPath(schemaPath, nodeQName, typeQName); - String localName = typeQName.getLocalName(); - List ranges = type.getRangeStatements(); - String units = type.getUnits(); if ("uint8".equals(localName)) { - Byte defaultValue = (Byte) type.getDefaultValue(); - return new Int8(newSchemaPath, ranges, units, defaultValue); + return new Int8(newSchemaPath); } else if ("uint16".equals(localName)) { - Short defaultValue = (Short) type.getDefaultValue(); - return new Int16(newSchemaPath, ranges, units, defaultValue); + return new Int16(newSchemaPath); } else if ("uint32".equals(localName)) { - Integer defaultValue = (Integer) type.getDefaultValue(); - return new Int32(newSchemaPath, ranges, units, defaultValue); + return new Int32(newSchemaPath); } else if ("uint64".equals(localName)) { - Long defaultValue = (Long) type.getDefaultValue(); - return new Int64(newSchemaPath, ranges, units, defaultValue); + return new Int64(newSchemaPath); } else { return null; } diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/YangModelBuilderUtil.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/YangModelBuilderUtil.java index e63f12839d..f58ee740cf 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/YangModelBuilderUtil.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/YangModelBuilderUtil.java @@ -84,10 +84,12 @@ 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.BaseConstraints; +import org.opendaylight.controller.yang.model.util.BaseTypes; import org.opendaylight.controller.yang.model.util.BinaryType; import org.opendaylight.controller.yang.model.util.BitsType; import org.opendaylight.controller.yang.model.util.Decimal64; import org.opendaylight.controller.yang.model.util.EnumerationType; +import org.opendaylight.controller.yang.model.util.ExtendedType; import org.opendaylight.controller.yang.model.util.InstanceIdentifier; import org.opendaylight.controller.yang.model.util.Int16; import org.opendaylight.controller.yang.model.util.Int32; @@ -999,7 +1001,7 @@ public final class YangModelBuilderUtil { final Type_body_stmtsContext typeBody, final List actualPath, final URI namespace, final Date revision, final String prefix) { - TypeDefinition type = null; + TypeDefinition baseType = null; List rangeStatements = getRangeConstraints(typeBody); Integer fractionDigits = getFractionDigits(typeBody); @@ -1008,53 +1010,115 @@ public final class YangModelBuilderUtil { List enumConstants = getEnumConstants( typeBody, actualPath, namespace, revision, prefix); - SchemaPath schemaPath = createActualSchemaPath(actualPath, namespace, - revision, prefix); + SchemaPath baseTypePathFinal = createTypeSchemaPath(actualPath, + namespace, revision, prefix, typeName, true, true); + SchemaPath baseTypePath = createTypeSchemaPath(actualPath, + namespace, revision, prefix, typeName, true, false); if ("decimal64".equals(typeName)) { - type = new Decimal64(schemaPath, fractionDigits); + if (rangeStatements.isEmpty()) { + return new Decimal64(baseTypePathFinal, fractionDigits); + } + baseType = new Decimal64(baseTypePath, fractionDigits); } else if (typeName.startsWith("int")) { if ("int8".equals(typeName)) { - type = new Int8(schemaPath, rangeStatements, null, null); + baseType = new Int8(baseTypePath); } else if ("int16".equals(typeName)) { - type = new Int16(schemaPath, rangeStatements, null, null); + baseType = new Int16(baseTypePath); } else if ("int32".equals(typeName)) { - type = new Int32(schemaPath, rangeStatements, null, null); + baseType = new Int32(baseTypePath); } else if ("int64".equals(typeName)) { - type = new Int64(schemaPath, rangeStatements, null, null); + baseType = new Int64(baseTypePath); } } else if (typeName.startsWith("uint")) { if ("uint8".equals(typeName)) { - type = new Uint8(schemaPath, rangeStatements, null, null); + baseType = new Uint8(baseTypePath); } else if ("uint16".equals(typeName)) { - type = new Uint16(schemaPath, rangeStatements, null, null); + baseType = new Uint16(baseTypePath); } else if ("uint32".equals(typeName)) { - type = new Uint32(schemaPath, rangeStatements, null, null); + baseType = new Uint32(baseTypePath); } else if ("uint64".equals(typeName)) { - type = new Uint64(schemaPath, rangeStatements, null, null); + baseType = new Uint64(baseTypePath); } } else if ("enumeration".equals(typeName)) { - type = new EnumerationType(schemaPath, enumConstants); + return new EnumerationType(baseTypePathFinal, enumConstants); } else if ("string".equals(typeName)) { - type = new StringType(schemaPath, lengthStatements, - patternStatements); + baseType = new StringType(baseTypePath); } else if ("bits".equals(typeName)) { - type = new BitsType(schemaPath, getBits(typeBody, actualPath, - namespace, revision, prefix)); + return new BitsType(baseTypePathFinal, getBits(typeBody, + actualPath, namespace, revision, prefix)); } else if ("leafref".equals(typeName)) { final String path = parseLeafrefPath(typeBody); final boolean absolute = path.startsWith("/"); RevisionAwareXPath xpath = new RevisionAwareXPathImpl(path, absolute); - type = new Leafref(schemaPath, xpath); + return new Leafref(baseTypePathFinal, xpath); } else if ("binary".equals(typeName)) { - List bytes = Collections.emptyList(); - type = new BinaryType(schemaPath, bytes, lengthStatements, null); + baseType = new BinaryType(baseTypePath); } else if ("instance-identifier".equals(typeName)) { boolean requireInstance = isRequireInstance(typeBody); - type = new InstanceIdentifier(schemaPath, null, requireInstance); + baseType = new InstanceIdentifier(baseTypePath, null, + requireInstance); } - return type; + + TypeDefinition result = null; + QName qname = new QName(namespace, revision, prefix, typeName); + ExtendedType.Builder typeBuilder = null; + + SchemaPath schemaPath = createTypeSchemaPath(actualPath, namespace, + revision, prefix, typeName, false, false); + typeBuilder = new ExtendedType.Builder(qname, baseType, "", "", + schemaPath); + + typeBuilder.ranges(rangeStatements); + typeBuilder.lengths(lengthStatements); + typeBuilder.patterns(patternStatements); + typeBuilder.fractionDigits(fractionDigits); + + result = typeBuilder.build(); + return result; + } + + /** + * Create SchemaPath object from given path list with namespace, revision + * and prefix based on given values. + * + * @param actualPath + * current position in model + * @param namespace + * @param revision + * @param prefix + * @param typeName + * @param isBaseYangType + * if this is base yang type + * @param isBaseYangTypeFinal + * if this is base yang type without restrictions + * @return SchemaPath object. + */ + private static SchemaPath createTypeSchemaPath( + final List actualPath, final URI namespace, + final Date revision, final String prefix, final String typeName, + final boolean isBaseYangType, final boolean isBaseYangTypeFinal) { + List typePath = new ArrayList(actualPath); + if (isBaseYangType && !isBaseYangTypeFinal) { + typePath.add(typeName); + } + + final List path = new ArrayList(); + QName qname; + // start from index 1 -> module name omited + for (int i = 1; i < typePath.size(); i++) { + qname = new QName(namespace, revision, prefix, typePath.get(i)); + path.add(qname); + } + QName typeQName; + if (isBaseYangType) { + typeQName = new QName(BaseTypes.BaseTypesNamespace, typeName); + } else { + typeQName = new QName(namespace, revision, prefix, typeName); + } + path.add(typeQName); + return new SchemaPath(path, true); } /** diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/TypesResolutionTest.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/TypesResolutionTest.java index 36c98c36e2..461cc4b5c2 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/TypesResolutionTest.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/TypesResolutionTest.java @@ -31,7 +31,6 @@ import org.opendaylight.controller.yang.model.util.EnumerationType; import org.opendaylight.controller.yang.model.util.ExtendedType; import org.opendaylight.controller.yang.model.util.IdentityrefType; import org.opendaylight.controller.yang.model.util.InstanceIdentifier; -import org.opendaylight.controller.yang.model.util.StringType; import org.opendaylight.controller.yang.model.util.UnionType; public class TypesResolutionTest { @@ -123,7 +122,7 @@ public class TypesResolutionTest { List> unionTypes = baseType.getTypes(); ExtendedType ipv4 = (ExtendedType) unionTypes.get(0); - StringType ipv4Base = (StringType) ipv4.getBaseType(); + ExtendedType ipv4Base = (ExtendedType) ipv4.getBaseType(); String expectedPattern = "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}" + "([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])" + "(%[\\p{N}\\p{L}]+)?"; @@ -131,7 +130,7 @@ public class TypesResolutionTest { .getRegularExpression()); ExtendedType ipv6 = (ExtendedType) unionTypes.get(1); - StringType ipv6Base = (StringType) ipv6.getBaseType(); + ExtendedType ipv6Base = (ExtendedType) ipv6.getBaseType(); List ipv6Patterns = ipv6Base.getPatterns(); expectedPattern = "((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}" + "((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|" @@ -152,7 +151,7 @@ public class TypesResolutionTest { Module tested = TestUtils.findModule(testedModules, "ietf-inet-types"); Set> typedefs = tested.getTypeDefinitions(); TypeDefinition type = TestUtils.findTypedef(typedefs, "domain-name"); - StringType baseType = (StringType) type.getBaseType(); + ExtendedType baseType = (ExtendedType) type.getBaseType(); List patterns = baseType.getPatterns(); assertEquals(1, patterns.size()); String expectedPattern = "((([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.)*" @@ -160,9 +159,9 @@ public class TypesResolutionTest { + "|\\."; assertEquals(expectedPattern, patterns.get(0).getRegularExpression()); - List lengths = baseType.getLengthStatements(); + List lengths = baseType.getLengths(); assertEquals(1, lengths.size()); - LengthConstraint length = baseType.getLengthStatements().get(0); + LengthConstraint length = baseType.getLengths().get(0); assertEquals(1L, length.getMin()); assertEquals(253L, length.getMax()); } @@ -173,8 +172,9 @@ public class TypesResolutionTest { .findModule(testedModules, "custom-types-test"); LeafSchemaNode leaf = (LeafSchemaNode) tested .getDataChildByName("inst-id-leaf1"); - InstanceIdentifier leafType = (InstanceIdentifier) leaf.getType(); - assertFalse(leafType.requireInstance()); + ExtendedType leafType = (ExtendedType) leaf.getType(); + InstanceIdentifier leafTypeBase = (InstanceIdentifier)leafType.getBaseType(); + assertFalse(leafTypeBase.requireInstance()); } @Test diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/YangParserTest.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/YangParserTest.java index fd2593ba48..23bb4a41d2 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/YangParserTest.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/YangParserTest.java @@ -12,6 +12,7 @@ import static org.junit.Assert.*; import java.io.FileNotFoundException; import java.net.URI; import java.text.DateFormat; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; @@ -56,12 +57,15 @@ import org.opendaylight.controller.yang.model.util.Decimal64; import org.opendaylight.controller.yang.model.util.ExtendedType; import org.opendaylight.controller.yang.model.util.Int16; import org.opendaylight.controller.yang.model.util.Int32; +import org.opendaylight.controller.yang.model.util.Int8; import org.opendaylight.controller.yang.model.util.Leafref; import org.opendaylight.controller.yang.model.util.StringType; import org.opendaylight.controller.yang.model.util.Uint32; import org.opendaylight.controller.yang.model.util.UnionType; public class YangParserTest { + private final DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + private Set modules; @Before @@ -198,6 +202,55 @@ public class YangParserTest { assertTrue(ifMtu.getType() instanceof Int32); } + @Test + public void testParseLeaf() throws ParseException { + Module test = TestUtils.findModule(modules, "types2"); + + // leaf if-name + LeafSchemaNode ifName = (LeafSchemaNode) test + .getDataChildByName("if-name"); + Leafref ifNameType = (Leafref)ifName.getType(); + QName qname = ifNameType.getQName(); + + URI baseYangTypeNS = URI.create("urn:ietf:params:xml:ns:yang:1"); + assertEquals(baseYangTypeNS, qname.getNamespace()); + assertNull(qname.getRevision()); + assertEquals("", qname.getPrefix()); + assertEquals("leafref", qname.getLocalName()); + + // leaf name + LeafSchemaNode name = (LeafSchemaNode) test + .getDataChildByName("name"); + StringType nameType = (StringType)name.getType(); + QName nameQName = nameType.getQName(); + + assertEquals(baseYangTypeNS, nameQName.getNamespace()); + assertNull(nameQName.getRevision()); + assertEquals("", nameQName.getPrefix()); + assertEquals("string", nameQName.getLocalName()); + + // leaf count + LeafSchemaNode count = (LeafSchemaNode) test + .getDataChildByName("count"); + ExtendedType countType = (ExtendedType)count.getType(); + QName countTypeQName = countType.getQName(); + + URI expectedNS = URI.create("urn:simple.types.data.demo"); + Date expectedDate = simpleDateFormat.parse("2013-02-27"); + assertEquals(expectedNS, countTypeQName.getNamespace()); + assertEquals(expectedDate, countTypeQName.getRevision()); + assertEquals("t2", countTypeQName.getPrefix()); + assertEquals("int8", countTypeQName.getLocalName()); + + Int8 countTypeBase = (Int8)countType.getBaseType(); + QName countTypeBaseQName = countTypeBase.getQName(); + + assertEquals(baseYangTypeNS, countTypeBaseQName.getNamespace()); + assertNull(countTypeBaseQName.getRevision()); + assertEquals("", countTypeBaseQName.getPrefix()); + assertEquals("int8", countTypeBaseQName.getLocalName()); + } + @Test public void testAugmentResolving() { // testfile1 @@ -371,8 +424,14 @@ public class YangParserTest { ExtendedType baseType = (ExtendedType) testleafType.getBaseType(); assertEquals("my-base-int32-type", baseType.getQName().getLocalName()); - Int32 int32base = (Int32) baseType.getBaseType(); - List ranges = int32base.getRangeStatements(); + ExtendedType int32Type = (ExtendedType) baseType.getBaseType(); + Int32 int32TypeBase = (Int32)int32Type.getBaseType(); + QName qname = int32TypeBase.getQName(); + assertEquals(URI.create("urn:ietf:params:xml:ns:yang:1"), qname.getNamespace()); + assertNull(qname.getRevision()); + assertEquals("", qname.getPrefix()); + assertEquals("int32", qname.getLocalName()); + List ranges = int32Type.getRanges(); assertEquals(1, ranges.size()); RangeConstraint range = ranges.get(0); assertEquals(2L, range.getMin()); @@ -419,14 +478,14 @@ public class YangParserTest { UnionType unionBase = (UnionType) baseType.getBaseType(); List> unionTypes = unionBase.getTypes(); - Int16 unionType1 = (Int16) unionTypes.get(0); - List ranges = unionType1.getRangeStatements(); + ExtendedType unionType1 = (ExtendedType) unionTypes.get(0); + List ranges = unionType1.getRanges(); assertEquals(1, ranges.size()); RangeConstraint range = ranges.get(0); assertEquals(1L, range.getMin()); assertEquals(100L, range.getMax()); - assertTrue(unionTypes.get(0) instanceof Int16); + assertTrue(unionType1.getBaseType() instanceof Int16); assertTrue(unionTypes.get(1) instanceof Int32); } @@ -458,11 +517,12 @@ public class YangParserTest { .getBaseType(); List> extendedTargetTypes = extendedTargetUnion .getTypes(); - assertTrue(extendedTargetTypes.get(0) instanceof Int16); + assertTrue(extendedTargetTypes.get(0).getBaseType() instanceof Int16); assertTrue(extendedTargetTypes.get(1) instanceof Int32); - Int16 int16 = (Int16) extendedTargetTypes.get(0); - List ranges = int16.getRangeStatements(); + ExtendedType int16 = (ExtendedType) extendedTargetTypes.get(0); + assertTrue(int16.getBaseType() instanceof Int16); + List ranges = int16.getRanges(); assertEquals(1, ranges.size()); RangeConstraint range = ranges.get(0); assertEquals(1L, range.getMin()); @@ -536,10 +596,10 @@ public class YangParserTest { UnionType myUnionBase = (UnionType) myUnion.getBaseType(); List> myUnionBaseTypes = myUnionBase.getTypes(); assertEquals(2, myUnionBaseTypes.size()); - assertTrue(myUnionBaseTypes.get(0) instanceof Int16); + assertTrue(myUnionBaseTypes.get(0).getBaseType() instanceof Int16); assertTrue(myUnionBaseTypes.get(1) instanceof Int32); - Int16 int16 = (Int16) myUnionBaseTypes.get(0); - List ranges = int16.getRangeStatements(); + ExtendedType int16 = (ExtendedType) myUnionBaseTypes.get(0); + List ranges = int16.getRanges(); assertEquals(1, ranges.size()); RangeConstraint range = ranges.get(0); assertEquals(1L, range.getMin()); @@ -770,7 +830,6 @@ public class YangParserTest { @Test public void testAugmentNodesTypesSchemaPath() throws Exception { - final DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Module testModule = TestUtils.findModule(modules, "types1"); Set augments = testModule.getAugmentations(); assertEquals(1, augments.size()); @@ -807,4 +866,93 @@ public class YangParserTest { assertEquals(q3, higherLayerTypePath.get(3)); } + @Test + public void testTypePath() throws ParseException { + Module test = TestUtils.findModule(modules, "types2"); + Set> types = test.getTypeDefinitions(); + + // my-base-int32-type + ExtendedType int32Typedef = (ExtendedType)TestUtils.findTypedef(types, "my-base-int32-type"); + QName int32TypedefQName = int32Typedef.getQName(); + + URI expectedNS = URI.create("urn:simple.types.data.demo"); + Date expectedDate = simpleDateFormat.parse("2013-02-27"); + assertEquals(expectedNS, int32TypedefQName.getNamespace()); + assertEquals(expectedDate, int32TypedefQName.getRevision()); + assertEquals("t2", int32TypedefQName.getPrefix()); + assertEquals("my-base-int32-type", int32TypedefQName.getLocalName()); + + SchemaPath typeSchemaPath = int32Typedef.getPath(); + List typePath = typeSchemaPath.getPath(); + assertEquals(1, typePath.size()); + assertEquals(int32TypedefQName, typePath.get(0)); + + // my-base-int32-type/int32 + ExtendedType int32Ext = (ExtendedType)int32Typedef.getBaseType(); + QName int32ExtQName = int32Ext.getQName(); + + assertEquals(expectedNS, int32ExtQName.getNamespace()); + assertEquals(expectedDate, int32ExtQName.getRevision()); + assertEquals("t2", int32ExtQName.getPrefix()); + assertEquals("int32", int32ExtQName.getLocalName()); + + SchemaPath int32ExtSchemaPath = int32Ext.getPath(); + List int32ExtPath = int32ExtSchemaPath.getPath(); + assertEquals(2, int32ExtPath.size()); + assertEquals(int32TypedefQName, int32ExtPath.get(0)); + assertEquals(int32ExtQName, int32ExtPath.get(1)); + + // my-base-int32-type/int32/int32 + Int32 int32 = (Int32)int32Ext.getBaseType(); + QName int32QName = int32.getQName(); + assertEquals(URI.create("urn:ietf:params:xml:ns:yang:1"), int32QName.getNamespace()); + assertNull(int32QName.getRevision()); + assertEquals("", int32QName.getPrefix()); + assertEquals("int32", int32QName.getLocalName()); + + SchemaPath int32SchemaPath = int32.getPath(); + List int32Path = int32SchemaPath.getPath(); + assertEquals(3, int32Path.size()); + assertEquals(int32TypedefQName, int32Path.get(0)); + assertEquals(int32ExtQName, int32Path.get(1)); + assertEquals(int32QName, int32Path.get(2)); + } + + @Test + public void testTypePath2() throws ParseException { + Module test = TestUtils.findModule(modules, "types2"); + Set> types = test.getTypeDefinitions(); + + // my-base-int32-type + ExtendedType myDecType = (ExtendedType)TestUtils.findTypedef(types, "my-decimal-type"); + QName myDecTypeQName = myDecType.getQName(); + + URI expectedNS = URI.create("urn:simple.types.data.demo"); + Date expectedDate = simpleDateFormat.parse("2013-02-27"); + assertEquals(expectedNS, myDecTypeQName.getNamespace()); + assertEquals(expectedDate, myDecTypeQName.getRevision()); + assertEquals("t2", myDecTypeQName.getPrefix()); + assertEquals("my-decimal-type", myDecTypeQName.getLocalName()); + + SchemaPath typeSchemaPath = myDecType.getPath(); + List typePath = typeSchemaPath.getPath(); + assertEquals(1, typePath.size()); + assertEquals(myDecTypeQName, typePath.get(0)); + + // my-base-int32-type/int32 + Decimal64 dec64 = (Decimal64)myDecType.getBaseType(); + QName dec64QName = dec64.getQName(); + + assertEquals(URI.create("urn:ietf:params:xml:ns:yang:1"), dec64QName.getNamespace()); + assertNull(dec64QName.getRevision()); + assertEquals("", dec64QName.getPrefix()); + assertEquals("decimal64", dec64QName.getLocalName()); + + SchemaPath dec64SchemaPath = dec64.getPath(); + List dec64Path = dec64SchemaPath.getPath(); + assertEquals(2, dec64Path.size()); + assertEquals(myDecTypeQName, dec64Path.get(0)); + assertEquals(dec64QName, dec64Path.get(1)); + } + } diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/resources/model/testfile2.yang b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/resources/model/testfile2.yang index 8860e06622..904c8e66fd 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/resources/model/testfile2.yang +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/resources/model/testfile2.yang @@ -114,6 +114,12 @@ module types2 { leaf name { type string; } + + leaf count { + type int8 { + range "1..10"; + } + } leaf nested-type-leaf { type my-type1; diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/AbstractSignedInteger.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/AbstractSignedInteger.java index 0af3c81c6a..baefbf40fe 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/AbstractSignedInteger.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/AbstractSignedInteger.java @@ -35,29 +35,13 @@ import org.opendaylight.controller.yang.model.api.type.RangeConstraint; * */ public abstract class AbstractSignedInteger implements IntegerTypeDefinition { - private final QName name; private final SchemaPath path; private final String description; private final String reference = "https://tools.ietf.org/html/rfc6020#section-9.2"; - private final String units; private final List rangeStatements; - protected AbstractSignedInteger(final QName name, final String description, - final Number minRange, final Number maxRange, final String units) { - this.name = name; - this.description = description; - this.path = BaseTypes.schemaPath(name); - this.units = units; - this.rangeStatements = new ArrayList(); - final String rangeDescription = "Integer values between " + minRange - + " and " + maxRange + ", inclusively."; - this.rangeStatements.add(BaseConstraints.rangeConstraint(minRange, - maxRange, rangeDescription, - "https://tools.ietf.org/html/rfc6020#section-9.2.4")); - } - /** * @param name * @param description diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/AbstractUnsignedInteger.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/AbstractUnsignedInteger.java index 013d80d799..6d5b5be8a0 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/AbstractUnsignedInteger.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/AbstractUnsignedInteger.java @@ -36,25 +36,9 @@ public abstract class AbstractUnsignedInteger implements private final SchemaPath path; private final String description; private final String reference = "https://tools.ietf.org/html/rfc6020#section-9.2"; - private final String units; private final List rangeStatements; - protected AbstractUnsignedInteger(final QName name, - final String description, final Number minRange, - final Number maxRange, final String units) { - this.name = name; - this.description = description; - this.path = BaseTypes.schemaPath(name); - this.units = units; - this.rangeStatements = new ArrayList(); - final String rangeDescription = "Integer values between " + minRange - + " and " + maxRange + ", inclusively."; - this.rangeStatements.add(BaseConstraints.rangeConstraint(minRange, - maxRange, rangeDescription, - "https://tools.ietf.org/html/rfc6020#section-9.2.4")); - } - /** * * @param actualPath diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/BinaryType.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/BinaryType.java index 74214dc0c7..ea09b65b5d 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/BinaryType.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/BinaryType.java @@ -24,65 +24,33 @@ import org.opendaylight.controller.yang.model.api.type.LengthConstraint; * @see BinaryTypeDefinition */ public final class BinaryType implements BinaryTypeDefinition { - private final QName name = BaseTypes.constructQName("binary"); private final SchemaPath path; private final String description = "The binary built-in type represents any binary data, i.e., a sequence of octets."; private final String reference = "https://tools.ietf.org/html/rfc6020#section-9.8"; private final BinaryTypeDefinition baseType; - private List bytes; + private final List bytes; private final List lengthConstraints; - private String units = ""; - - private BinaryType() { - super(); + private final String units = ""; + public BinaryType(final SchemaPath path) { final List constraints = new ArrayList(); constraints.add(BaseConstraints.lengthConstraint(0, Long.MAX_VALUE, "", "")); this.lengthConstraints = Collections.unmodifiableList(constraints); this.bytes = Collections.emptyList(); - this.path = BaseTypes.schemaPath(name); + this.path = path; this.baseType = this; } - public BinaryType(final SchemaPath path) { - super(); - + public BinaryType(final SchemaPath path, final List bytes) { final List constraints = new ArrayList(); constraints.add(BaseConstraints.lengthConstraint(0, Long.MAX_VALUE, "", "")); this.lengthConstraints = Collections.unmodifiableList(constraints); - this.bytes = Collections.emptyList(); - this.path = path; - this.baseType = new BinaryType(); - } - - /** - * - * - * @param bytes - * @param lengthConstraints - * @param units - */ - public BinaryType(final SchemaPath path, final List bytes, - final List lengthConstraints, final String units) { - super(); - - if ((lengthConstraints == null) || (lengthConstraints.isEmpty())) { - final List constraints = new ArrayList(); - constraints.add(BaseConstraints.lengthConstraint(0, Long.MAX_VALUE, - "", "")); - this.lengthConstraints = Collections.unmodifiableList(constraints); - } else { - this.lengthConstraints = Collections - .unmodifiableList(lengthConstraints); - } - - this.path = path; this.bytes = Collections.unmodifiableList(bytes); - this.units = units; - this.baseType = new BinaryType(); + this.path = path; + this.baseType = this; } /* diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/BitsType.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/BitsType.java index 51e0306e8b..94391d2288 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/BitsType.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/BitsType.java @@ -22,7 +22,6 @@ import org.opendaylight.controller.yang.model.api.type.BitsTypeDefinition; * @see BitsTypeDefinition */ public final class BitsType implements BitsTypeDefinition { - private final QName name = BaseTypes.constructQName("bits"); private final SchemaPath path; private final String description = "The bits built-in type represents a bit set. " @@ -32,24 +31,17 @@ public final class BitsType implements BitsTypeDefinition { private final String reference = "https://tools.ietf.org/html/rfc6020#section-9.7"; private final BitsTypeDefinition baseType; private final List bits; - private String units = ""; + private final String units = ""; /** * Default constructor.
* Instantiates Bits type as empty bits list. */ - private BitsType() { - super(); - this.bits = Collections.emptyList(); - this.path = BaseTypes.schemaPath(name); - this.baseType = this; - } - public BitsType(final SchemaPath path) { super(); this.bits = Collections.emptyList(); this.path = path; - this.baseType = new BitsType(); + this.baseType = this; } /** @@ -64,27 +56,8 @@ public final class BitsType implements BitsTypeDefinition { public BitsType(final SchemaPath path, final List bits) { super(); this.bits = Collections.unmodifiableList(bits); - this.units = ""; - this.path = path; - this.baseType = new BitsType(); - } - - /** - * Constructor with explicit definition of bits assigned to BitsType and - * Units.
- * The default value of Bits Type is List of bits. - * - * @param bits - * The bits assigned for Bits Type - * @param units - * units for bits type - */ - public BitsType(final SchemaPath path, List bits, String units) { - super(); - this.bits = Collections.unmodifiableList(bits); - this.units = units; this.path = path; - this.baseType = new BitsType(); + this.baseType = this; } /* diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/BooleanType.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/BooleanType.java index 0cda67c27f..04b2dc90d1 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/BooleanType.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/BooleanType.java @@ -22,30 +22,22 @@ import org.opendaylight.controller.yang.model.api.type.BooleanTypeDefinition; * @see BooleanTypeDefinition */ public final class BooleanType implements BooleanTypeDefinition { - private final QName name = BaseTypes.constructQName("boolean"); private final SchemaPath path; private final String description = "The boolean built-in type represents a boolean value."; private final String reference = "https://tools.ietf.org/html/rfc6020#section-9.5"; private final BooleanTypeDefinition baseType; private final Boolean defaultValue; - private String units = ""; + private final String units = ""; /** * Default constructor with default value set to "false". */ - private BooleanType() { - super(); - this.defaultValue = false; - this.path = BaseTypes.schemaPath(name); - this.baseType = this; - } - public BooleanType(final SchemaPath path) { super(); this.defaultValue = false; this.path = path; - this.baseType = new BooleanType(); + this.baseType = this; } /** @@ -58,23 +50,7 @@ public final class BooleanType implements BooleanTypeDefinition { super(); this.defaultValue = defaultValue; this.path = path; - this.baseType = new BooleanType(); - } - - /** - * Boolean Type constructor. - * - * @param defaultValue - * Default Value - * @param units - * Units - */ - public BooleanType(final SchemaPath path, final Boolean defaultValue, final String units) { - super(); - this.defaultValue = defaultValue; - this.units = units; - this.path = path; - this.baseType = new BooleanType(); + this.baseType = this; } /* diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Decimal64.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Decimal64.java index 6a070837bd..1387da9b1c 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Decimal64.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Decimal64.java @@ -26,11 +26,10 @@ import org.opendaylight.controller.yang.model.api.type.RangeConstraint; * @see DecimalTypeDefinition */ public final class Decimal64 implements DecimalTypeDefinition { - private final QName name = BaseTypes.constructQName("decimal64"); private final SchemaPath path; - private String units = ""; - private BigDecimal defaultValue = null; + private final String units = ""; + private final BigDecimal defaultValue = null; private final String description = "The decimal64 type represents a subset of the real numbers, which can " + "be represented by decimal numerals. The value space of decimal64 is the set of numbers that can " @@ -54,25 +53,14 @@ public final class Decimal64 implements DecimalTypeDefinition { * If the fraction digits are not defined inner the definition boundaries * the constructor will throw {@link IllegalArgumentException} * + * @param path * @param fractionDigits * integer between 1 and 18 inclusively * * @see DecimalTypeDefinition * @exception IllegalArgumentException */ - private Decimal64(final Integer fractionDigits) { - if (!((fractionDigits.intValue() > 1) && (fractionDigits.intValue() <= 18))) { - throw new IllegalArgumentException( - "The fraction digits outside of boundaries. Fraction digits MUST be integer between 1 and 18 inclusively"); - } - this.fractionDigits = fractionDigits; - this.rangeStatements = defaultRangeStatements(); - this.path = BaseTypes.schemaPath(name); - this.baseType = this; - } - public Decimal64(final SchemaPath path, final Integer fractionDigits) { - super(); if (!((fractionDigits.intValue() > 1) && (fractionDigits.intValue() <= 18))) { throw new IllegalArgumentException( "The fraction digits outside of boundaries. Fraction digits MUST be integer between 1 and 18 inclusively"); @@ -80,97 +68,7 @@ public final class Decimal64 implements DecimalTypeDefinition { this.fractionDigits = fractionDigits; rangeStatements = defaultRangeStatements(); this.path = path; - this.baseType = new Decimal64(fractionDigits); - } - - /** - * Decimal64 Type Constructor.
- * - * If parameter Range Statements is null or - * defined as empty List the constructor automatically assigns - * the boundaries as min and max value defined for Decimal64 in [RFC-6020] The - * decimal64 Built-In Type
- *
- * The fractions digits MUST be defined as integer between 1 and 18 - * inclusively as defined interface {@link DecimalTypeDefinition}
- * If the fraction digits are not defined inner the definition boundaries - * the constructor will throw {@link IllegalArgumentException} - * - * @param actualPath - * @param namespace - * @param revision - * @param rangeStatements - * Range Constraint Statements - * @param fractionDigits - * integer between 1 and 18 inclusively - * @exception IllegalArgumentException - */ - public Decimal64(final SchemaPath path, final List rangeStatements, - Integer fractionDigits) { - super(); - if (!((fractionDigits.intValue() > 1) && (fractionDigits.intValue() <= 18))) { - throw new IllegalArgumentException( - "The fraction digits outside of boundaries. Fraction digits MUST be integer between 1 and 18 inclusively"); - } - if (rangeStatements == null || rangeStatements.isEmpty()) { - this.rangeStatements = defaultRangeStatements(); - } else { - this.rangeStatements = Collections - .unmodifiableList(rangeStatements); - } - this.fractionDigits = fractionDigits; - this.path = path; - this.baseType = new Decimal64(fractionDigits); - } - - /** - * Decimal64 Type Constructor.
- * If parameter Range Statements is null or - * defined as empty List the constructor automatically assigns - * the boundaries as min and max value defined for Decimal64 in [RFC-6020] The - * decimal64 Built-In Type
- *
- * The fractions digits MUST be defined as integer between 1 and 18 - * inclusively as defined interface {@link DecimalTypeDefinition}
- * If the fraction digits are not defined inner the definition boundaries - * the constructor will throw {@link IllegalArgumentException} - * - * @param actualPath - * @param namespace - * @param revision - * @param units - * units associated with the type - * @param defaultValue - * Default Value for type - * @param rangeStatements - * Range Constraint Statements - * @param fractionDigits - * integer between 1 and 18 inclusively - */ - public Decimal64(final SchemaPath path, final String units, - final BigDecimal defaultValue, - final List rangeStatements, - final Integer fractionDigits) { - super(); - if (!((fractionDigits.intValue() > 1) && (fractionDigits.intValue() <= 18))) { - throw new IllegalArgumentException( - "The fraction digits outside of boundaries. Fraction digits MUST be integer between 1 and 18 inclusively"); - } - - if (rangeStatements == null || rangeStatements.isEmpty()) { - this.rangeStatements = defaultRangeStatements(); - - } else { - this.rangeStatements = Collections - .unmodifiableList(rangeStatements); - } - this.units = units; - this.defaultValue = defaultValue; - this.fractionDigits = fractionDigits; - this.path = path; - this.baseType = new Decimal64(fractionDigits); + this.baseType = this; } /** diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/EmptyType.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/EmptyType.java index 424f313efa..0e542bc019 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/EmptyType.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/EmptyType.java @@ -17,21 +17,15 @@ import org.opendaylight.controller.yang.model.api.UnknownSchemaNode; import org.opendaylight.controller.yang.model.api.type.EmptyTypeDefinition; public final class EmptyType implements EmptyTypeDefinition { - private final QName name = BaseTypes.constructQName("empty"); private final SchemaPath path; private final String description = "The empty built-in type represents a leaf that does not have any value, it conveys information by its presence or absence."; private final String reference = "https://tools.ietf.org/html/rfc6020#page-131"; private final EmptyTypeDefinition baseType; - private EmptyType() { - path = BaseTypes.schemaPath(name); - this.baseType = this; - } - public EmptyType(final SchemaPath path) { this.path = path; - this.baseType = new EmptyType(); + this.baseType = this; } @Override diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/EnumerationType.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/EnumerationType.java index 175ea100ca..de7ee30603 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/EnumerationType.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/EnumerationType.java @@ -22,7 +22,6 @@ import org.opendaylight.controller.yang.model.api.type.EnumTypeDefinition; * @see EnumTypeDefinition */ public final class EnumerationType implements EnumTypeDefinition { - private final QName name = BaseTypes.constructQName("enumeration"); private final SchemaPath path; private final String description = "The enumeration built-in type represents values from a set of assigned names."; @@ -30,32 +29,24 @@ public final class EnumerationType implements EnumTypeDefinition { private final EnumPair defaultEnum; private final List enums; - private String units = ""; + private final String units = ""; private final EnumTypeDefinition baseType; - private EnumerationType(final List enums) { - this.path = BaseTypes.schemaPath(name); - this.enums = Collections.unmodifiableList(enums); - this.defaultEnum = null; - baseType = this; - } - public EnumerationType(final SchemaPath path, final List enums) { super(); this.path = path; this.enums = Collections.unmodifiableList(enums); this.defaultEnum = null; - baseType = new EnumerationType(enums); + this.baseType = this; } public EnumerationType(final SchemaPath path, final EnumPair defaultEnum, - final List enums, final String units) { + final List enums) { super(); this.path = path; - baseType = new EnumerationType(enums); + this.baseType = this; this.defaultEnum = defaultEnum; this.enums = Collections.unmodifiableList(enums); - this.units = units; } /* diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/IdentityrefType.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/IdentityrefType.java index 6c4598131e..30f0013d24 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/IdentityrefType.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/IdentityrefType.java @@ -22,27 +22,18 @@ import org.opendaylight.controller.yang.model.api.type.IdentityrefTypeDefinition * @see IdentityrefTypeDefinition */ public final class IdentityrefType implements IdentityrefTypeDefinition { - private final QName name = BaseTypes.constructQName("identityref"); private final SchemaPath path; private final String description = "The identityref type is used to reference an existing identity."; private final String reference = "https://tools.ietf.org/html/rfc6020#section-9.10"; private final IdentityrefTypeDefinition baseType; - private final QName identity; - - private String units = ""; - - private IdentityrefType(QName identity) { - this.identity = identity; - this.path = BaseTypes.schemaPath(name); - this.baseType = this; - } + private final String units = ""; public IdentityrefType(QName identity, SchemaPath schemaPath) { this.identity = identity; this.path = schemaPath; - this.baseType = new IdentityrefType(identity); + this.baseType = this; } @Override diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/InstanceIdentifier.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/InstanceIdentifier.java index 4c17fa6154..8139d5b50b 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/InstanceIdentifier.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/InstanceIdentifier.java @@ -23,7 +23,6 @@ import org.opendaylight.controller.yang.model.api.type.InstanceIdentifierTypeDef * @see InstanceIdentifierTypeDefinition */ public final class InstanceIdentifier implements InstanceIdentifierTypeDefinition { - private static final QName name = BaseTypes .constructQName("instance-identifier"); private static final String description = "The instance-identifier built-in type is used to " + @@ -36,20 +35,12 @@ public final class InstanceIdentifier implements InstanceIdentifierTypeDefinitio private final InstanceIdentifierTypeDefinition baseType; private final boolean requireInstance; - private InstanceIdentifier(RevisionAwareXPath xpath, boolean requireInstance) { - super(); - path = BaseTypes.schemaPath(name); - this.xpath = xpath; - this.requireInstance = requireInstance; - this.baseType = this; - } - public InstanceIdentifier(final SchemaPath path, RevisionAwareXPath xpath, boolean requireInstance) { super(); this.path = path; this.xpath = xpath; this.requireInstance = requireInstance; - this.baseType = new InstanceIdentifier(xpath, requireInstance); + this.baseType = this; } /* diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Int16.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Int16.java index 0a24bf2d05..829cd140b1 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Int16.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Int16.java @@ -7,12 +7,9 @@ */ package org.opendaylight.controller.yang.model.util; -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.type.IntegerTypeDefinition; -import org.opendaylight.controller.yang.model.api.type.RangeConstraint; /** * Implementation of Yang int16 built-in type.
@@ -22,29 +19,15 @@ import org.opendaylight.controller.yang.model.api.type.RangeConstraint; * @see AbstractSignedInteger */ public final class Int16 extends AbstractSignedInteger { - private static final QName name = BaseTypes.constructQName("int16"); - private Short defaultValue = null; + private final Short defaultValue = null; private static final String description = "int16 represents integer values between -32768 and 32767, inclusively."; private final IntegerTypeDefinition baseType; - private Int16() { - super(name, description, Short.MIN_VALUE, Short.MAX_VALUE, ""); - this.baseType = this; - } - public Int16(final SchemaPath path) { super(path, name, description, Short.MIN_VALUE, Short.MAX_VALUE, ""); - this.baseType = new Int16(); - - } + this.baseType = this; - public Int16(final SchemaPath path, - final List rangeStatements, final String units, - final Short defaultValue) { - super(path, name, description, rangeStatements, units); - this.defaultValue = defaultValue; - this.baseType = new Int16(); } @Override diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Int32.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Int32.java index 8d16e268c3..025448262e 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Int32.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Int32.java @@ -7,12 +7,9 @@ */ package org.opendaylight.controller.yang.model.util; -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.type.IntegerTypeDefinition; -import org.opendaylight.controller.yang.model.api.type.RangeConstraint; /** * Implementation of Yang int32 built-in type.
@@ -24,34 +21,14 @@ import org.opendaylight.controller.yang.model.api.type.RangeConstraint; * */ public final class Int32 extends AbstractSignedInteger { - private static final QName name = BaseTypes.constructQName("int32"); - private Integer defaultValue = null; + private final Integer defaultValue = null; private static final String description = "int32 represents integer values between -2147483648 and 2147483647, inclusively."; private final IntegerTypeDefinition baseType; - private Int32() { - super(name, description, Integer.MIN_VALUE, Integer.MAX_VALUE, ""); - this.baseType = this; - } - public Int32(final SchemaPath path) { super(path, name, description, Integer.MIN_VALUE, Integer.MAX_VALUE, ""); - this.baseType = new Int32(); - } - - public Int32(final SchemaPath path, final Integer defaultValue) { - super(path, name, description, Integer.MIN_VALUE, Integer.MAX_VALUE, ""); - this.baseType = new Int32(); - this.defaultValue = defaultValue; - } - - public Int32(final SchemaPath path, - final List rangeStatements, final String units, - final Integer defaultValue) { - super(path, name, description, rangeStatements, units); - this.baseType = new Int32(); - this.defaultValue = defaultValue; + this.baseType = this; } /* diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Int64.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Int64.java index 92e92a94a2..d51dcc7a81 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Int64.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Int64.java @@ -7,12 +7,9 @@ */ package org.opendaylight.controller.yang.model.util; -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.type.IntegerTypeDefinition; -import org.opendaylight.controller.yang.model.api.type.RangeConstraint; /** * Implementation of Yang int64 built-in type.
@@ -22,34 +19,15 @@ import org.opendaylight.controller.yang.model.api.type.RangeConstraint; * */ public final class Int64 extends AbstractSignedInteger { - private static final QName name = BaseTypes.constructQName("int64"); - private Long defaultValue = null; + private final Long defaultValue = null; private static final String description = "int64 represents integer values between -9223372036854775808 and 9223372036854775807, inclusively."; private final IntegerTypeDefinition baseType; - private Int64() { - super(name, description, Integer.MIN_VALUE, Integer.MAX_VALUE, ""); - this.baseType = this; - } - public Int64(final SchemaPath path) { super(path, name, description, Integer.MIN_VALUE, Integer.MAX_VALUE, ""); - this.baseType = new Int64(); - } - - public Int64(final SchemaPath path, final Long defaultValue) { - super(path, name, description, Integer.MIN_VALUE, Integer.MAX_VALUE, ""); - this.baseType = new Int64(); - this.defaultValue = defaultValue; - } - - public Int64(final SchemaPath path, final List rangeStatements, - final String units, final Long defaultValue) { - super(path, name, description, rangeStatements, units); - this.baseType = new Int64(); - this.defaultValue = defaultValue; + this.baseType = this; } /* diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Int8.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Int8.java index f77eebad52..9f20595549 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Int8.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Int8.java @@ -7,12 +7,9 @@ */ package org.opendaylight.controller.yang.model.util; -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.type.IntegerTypeDefinition; -import org.opendaylight.controller.yang.model.api.type.RangeConstraint; /** * Implementation of Yang int8 built-in type.
@@ -22,34 +19,14 @@ import org.opendaylight.controller.yang.model.api.type.RangeConstraint; * @see AbstractSignedInteger */ public final class Int8 extends AbstractSignedInteger { - private static final QName name = BaseTypes.constructQName("int8"); - private Byte defaultValue = null; + private final Byte defaultValue = null; private static final String description = "represents integer values between -128 and 127, inclusively."; private final IntegerTypeDefinition baseType; - private Int8() { - super(name, description, Byte.MIN_VALUE, Byte.MAX_VALUE, ""); - this.baseType = this; - } - public Int8(final SchemaPath path) { super(path, name, description, Byte.MIN_VALUE, Byte.MAX_VALUE, ""); - this.baseType = new Int8(); - } - - public Int8(final SchemaPath path, final Byte defaultValue) { - super(path, name, description, Byte.MIN_VALUE, Byte.MAX_VALUE, ""); - this.baseType = new Int8(); - this.defaultValue = defaultValue; - } - - public Int8(final SchemaPath path, - final List rangeStatements, final String units, - final Byte defaultValue) { - super(path, name, description, rangeStatements, units); - this.baseType = new Int8(); - this.defaultValue = defaultValue; + this.baseType = this; } /* diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Leafref.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Leafref.java index d17843af89..bd42903184 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Leafref.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Leafref.java @@ -33,17 +33,10 @@ public final class Leafref implements LeafrefTypeDefinition { private final String units = ""; private final LeafrefTypeDefinition baseType; - private Leafref(final RevisionAwareXPath xpath) { - this.xpath = xpath; - this.path = BaseTypes.schemaPath(name); - this.baseType = this; - } - public Leafref(final SchemaPath path, final RevisionAwareXPath xpath) { - super(); this.path = path; this.xpath = xpath; - baseType = new Leafref(xpath); + baseType = this; } /* diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/StringType.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/StringType.java index 018ba00042..b430e801dd 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/StringType.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/StringType.java @@ -25,27 +25,16 @@ import org.opendaylight.controller.yang.model.api.type.StringTypeDefinition; * @see StringTypeDefinition */ public final class StringType implements StringTypeDefinition { - private final QName name = BaseTypes.constructQName("string"); private final SchemaPath path; - private String defaultValue = ""; + private final String defaultValue = ""; private final String description = ""; private final String reference = ""; private final List lengthStatements; private final List patterns; - private String units = ""; + private final String units = ""; private final StringTypeDefinition baseType; - private StringType() { - super(); - path = BaseTypes.schemaPath(name); - final List constraints = new ArrayList(); - constraints.add(BaseConstraints.lengthConstraint(0, Long.MAX_VALUE, "", "")); - lengthStatements = Collections.unmodifiableList(constraints); - patterns = Collections.emptyList(); - baseType = this; - } - /** * Default Constructor. */ @@ -56,56 +45,7 @@ public final class StringType implements StringTypeDefinition { constraints.add(BaseConstraints.lengthConstraint(0, Long.MAX_VALUE, "", "")); lengthStatements = Collections.unmodifiableList(constraints); patterns = Collections.emptyList(); - baseType = new StringType(); - } - - /** - * - * @param actualPath - * @param namespace - * @param revision - * @param lengthStatements - * @param patterns - */ - public StringType(final SchemaPath path, final List lengthStatements, - final List patterns) { - super(); - this.path = path; - if(lengthStatements == null || lengthStatements.size() == 0) { - final List constraints = new ArrayList(); - constraints.add(BaseConstraints.lengthConstraint(0, Long.MAX_VALUE, "", "")); - this.lengthStatements = Collections.unmodifiableList(constraints); - } else { - this.lengthStatements = Collections.unmodifiableList(lengthStatements); - } - this.patterns = Collections.unmodifiableList(patterns); - baseType = new StringType(); - } - - /** - * - * - * @param defaultValue - * @param lengthStatements - * @param patterns - * @param units - */ - public StringType(final SchemaPath path, final String defaultValue, - final List lengthStatements, - final List patterns, final String units) { - super(); - this.path = path; - this.defaultValue = defaultValue; - if(lengthStatements == null || lengthStatements.size() == 0) { - final List constraints = new ArrayList(); - constraints.add(BaseConstraints.lengthConstraint(0, Long.MAX_VALUE, "", "")); - this.lengthStatements = Collections.unmodifiableList(constraints); - } else { - this.lengthStatements = Collections.unmodifiableList(lengthStatements); - } - this.patterns = Collections.unmodifiableList(patterns); - this.units = units; - this.baseType = new StringType(); + baseType = this; } /* diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Uint16.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Uint16.java index 95b438b509..79ae4674b0 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Uint16.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Uint16.java @@ -7,11 +7,8 @@ */ package org.opendaylight.controller.yang.model.util; -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.type.RangeConstraint; import org.opendaylight.controller.yang.model.api.type.UnsignedIntegerTypeDefinition; /** @@ -21,33 +18,14 @@ import org.opendaylight.controller.yang.model.api.type.UnsignedIntegerTypeDefini * */ public final class Uint16 extends AbstractUnsignedInteger { - private static final QName name = BaseTypes.constructQName("uint16"); private Integer defaultValue = null; private static final String description = "uint16 represents integer values between 0 and 65535, inclusively."; private final UnsignedIntegerTypeDefinition baseType; - private Uint16() { - super(name, description, Short.MIN_VALUE, Short.MAX_VALUE, ""); - this.baseType = this; - } - public Uint16(final SchemaPath path) { super(path, name, description, Short.MIN_VALUE, Short.MAX_VALUE, ""); - this.baseType = new Uint16(); - } - - public Uint16(final SchemaPath path, final Integer defaultValue) { - super(path, name, description, Short.MIN_VALUE, Short.MAX_VALUE, ""); - this.baseType = new Uint16(); - this.defaultValue = defaultValue; - } - - public Uint16(final SchemaPath path, final List rangeStatements, - final String units, final Integer defaultValue) { - super(path, name, description, rangeStatements, units); - this.baseType = new Uint16(); - this.defaultValue = defaultValue; + this.baseType = this; } /* diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Uint32.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Uint32.java index e530e02bbb..fddf0c4008 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Uint32.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Uint32.java @@ -7,11 +7,8 @@ */ package org.opendaylight.controller.yang.model.util; -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.type.RangeConstraint; import org.opendaylight.controller.yang.model.api.type.UnsignedIntegerTypeDefinition; /** @@ -21,33 +18,14 @@ import org.opendaylight.controller.yang.model.api.type.UnsignedIntegerTypeDefini * */ public final class Uint32 extends AbstractUnsignedInteger { - private static final QName name = BaseTypes.constructQName("uint32"); - private Long defaultValue = null; + private final Long defaultValue = null; private static final String description = "uint32 represents integer values between 0 and 4294967295, inclusively."; private final UnsignedIntegerTypeDefinition baseType; - private Uint32() { - super(name, description, Short.MIN_VALUE, Short.MAX_VALUE, ""); - this.baseType = this; - } - public Uint32(final SchemaPath path) { super(path, name, description, Short.MIN_VALUE, Short.MAX_VALUE, ""); - this.baseType = new Uint32(); - } - - public Uint32(final SchemaPath path, final Long defaultValue) { - super(path, name, description, Short.MIN_VALUE, Short.MAX_VALUE, ""); - this.baseType = new Uint32(); - this.defaultValue = defaultValue; - } - - public Uint32(final SchemaPath path, final List rangeStatements, - final String units, final Long defaultValue) { - super(path, name, description, rangeStatements, units); - this.baseType = new Uint32(); - this.defaultValue = defaultValue; + this.baseType = this; } /* diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Uint64.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Uint64.java index a4aabb56c6..9252c08f57 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Uint64.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Uint64.java @@ -8,11 +8,9 @@ package org.opendaylight.controller.yang.model.util; import java.math.BigInteger; -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.type.RangeConstraint; import org.opendaylight.controller.yang.model.api.type.UnsignedIntegerTypeDefinition; /** @@ -23,35 +21,14 @@ import org.opendaylight.controller.yang.model.api.type.UnsignedIntegerTypeDefini * */ public final class Uint64 extends AbstractUnsignedInteger { - private static final QName name = BaseTypes.constructQName("uint64"); - - private BigInteger defaultValue = null; + private final BigInteger defaultValue = null; private static final String description = "uint64 represents integer values between 0 and 18446744073709551615, inclusively."; private final UnsignedIntegerTypeDefinition baseType; - private Uint64() { - super(name, description, Short.MIN_VALUE, Short.MAX_VALUE, ""); - this.baseType = this; - } - public Uint64(final SchemaPath path) { super(path, name, description, Short.MIN_VALUE, Short.MAX_VALUE, ""); - this.baseType = new Uint64(); - } - - public Uint64(final SchemaPath path, final BigInteger defaultValue) { - super(path, name, description, Short.MIN_VALUE, Short.MAX_VALUE, ""); - this.baseType = new Uint64(); - this.defaultValue = defaultValue; - } - - public Uint64(final SchemaPath path, - final List rangeStatements, final String units, - final BigInteger defaultValue) { - super(path, name, description, rangeStatements, units); - this.baseType = new Uint64(); - this.defaultValue = defaultValue; + this.baseType = this; } /* diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Uint8.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Uint8.java index c369e03776..fa9d35ea29 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Uint8.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/Uint8.java @@ -7,11 +7,8 @@ */ package org.opendaylight.controller.yang.model.util; -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.type.RangeConstraint; import org.opendaylight.controller.yang.model.api.type.UnsignedIntegerTypeDefinition; /** @@ -25,32 +22,14 @@ import org.opendaylight.controller.yang.model.api.type.UnsignedIntegerTypeDefini public final class Uint8 extends AbstractUnsignedInteger { private static final QName name = BaseTypes.constructQName("uint8"); - private Short defaultValue = null; + private final Short defaultValue = null; private static final String description = "uint8 represents integer values between 0 and 255, inclusively."; private final UnsignedIntegerTypeDefinition baseType; - private Uint8() { - super(name, description, Short.MIN_VALUE, Short.MAX_VALUE, ""); - this.baseType = this; - } - public Uint8(final SchemaPath path) { super(path, name, description, Short.MIN_VALUE, Short.MAX_VALUE, ""); - this.baseType = new Uint8(); - } - - public Uint8(final SchemaPath path, final Short defaultValue) { - super(path, name, description, Short.MIN_VALUE, Short.MAX_VALUE, ""); - this.baseType = new Uint8(); - this.defaultValue = defaultValue; - } - - public Uint8(final SchemaPath path, final List rangeStatements, - final String units, final Short defaultValue) { - super(path, name, description, rangeStatements, units); - this.baseType = new Uint8(); - this.defaultValue = defaultValue; + this.baseType = this; } /* diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/YangTypesConverter.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/YangTypesConverter.java index 82849891f9..76d53d5b38 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/YangTypesConverter.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/YangTypesConverter.java @@ -52,25 +52,25 @@ public final class YangTypesConverter { String typeName) { TypeDefinition type = null; - SchemaPath path = createSchemaPath(actualPath, namespace, revision); + SchemaPath path = createSchemaPath(actualPath, namespace, revision, typeName); if (typeName.startsWith("int")) { - if (typeName.equals("int8")) { + if ("int8".equals(typeName)) { type = new Int8(path); - } else if (typeName.equals("int16")) { + } else if ("int16".equals(typeName)) { type = new Int16(path); - } else if (typeName.equals("int32")) { + } else if ("int32".equals(typeName)) { type = new Int32(path); - } else if (typeName.equals("int64")) { + } else if ("int64".equals(typeName)) { type = new Int64(path); } } else if (typeName.startsWith("uint")) { - if (typeName.equals("uint8")) { + if ("uint8".equals(typeName)) { type = new Uint8(path); - } else if (typeName.equals("uint16")) { + } else if ("uint16".equals(typeName)) { type = new Uint16(path); - } else if (typeName.equals("uint32")) { + } else if ("uint32".equals(typeName)) { type = new Uint32(path); - } else if (typeName.equals("uint64")) { + } else if ("uint64".equals(typeName)) { type = new Uint64(path); } } else if ("string".equals(typeName)) { @@ -88,11 +88,18 @@ public final class YangTypesConverter { return type; } - private static SchemaPath createSchemaPath(List actualPath, URI namespace, Date revision) { + private static SchemaPath createSchemaPath(List actualPath, URI namespace, Date revision, String typeName) { + List correctPath = new ArrayList(actualPath); + // remove module name + correctPath.remove(0); + List path = new ArrayList(); - for(String element : actualPath) { + for(String element : correctPath) { path.add(new QName(namespace, revision, element)); } + // add type qname + QName typeQName = new QName(BaseTypes.BaseTypesNamespace, typeName); + path.add(typeQName); return new SchemaPath(path, true); }