From 1fdf29849d6613051da097dc9b308d81f65b36aa Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 2 Nov 2017 12:01:05 +0100 Subject: [PATCH] YANGTOOLS-621: introduce specialized integer types This introduces Int{8,16,32,64}TypeDefinition and Uint{8,16,32,64}TypeDefinition to represent type definitions based on these 8 builtin types. This renders (Unsigned)IntegerTypeDefinition only a family capture, which allows sharing common code paths. Users should refer to individual types where possible. Furthermore this eliminates the need for DerivedTypes.is*() methods, which are deprecated. Users can perform the same function, sans null checking, via plain instanceof checks. Change-Id: I2d9620287f10cb7bd4e558b59890da25d976f67a Signed-off-by: Robert Varga --- .../data/codec/gson/JSONCodecFactory.java | 4 +- .../codec/AbstractIntegerStringCodec.java | 81 ++++---- .../data/impl/codec/Int16StringCodec.java | 6 +- .../data/impl/codec/Int32StringCodec.java | 6 +- .../data/impl/codec/Int64StringCodec.java | 6 +- .../yang/data/impl/codec/Int8StringCodec.java | 7 +- .../impl/codec/TypeDefinitionAwareCodec.java | 4 +- .../data/impl/codec/Uint16StringCodec.java | 6 +- .../data/impl/codec/Uint32StringCodec.java | 6 +- .../data/impl/codec/Uint64StringCodec.java | 6 +- .../data/impl/codec/Uint8StringCodec.java | 6 +- .../data/util/codec/AbstractCodecFactory.java | 8 +- .../model/api/type/Int16TypeDefinition.java | 17 ++ .../model/api/type/Int32TypeDefinition.java | 17 ++ .../model/api/type/Int64TypeDefinition.java | 17 ++ .../model/api/type/Int8TypeDefinition.java | 17 ++ .../model/api/type/IntegerTypeDefinition.java | 9 +- .../model/api/type/Uint16TypeDefinition.java | 17 ++ .../model/api/type/Uint32TypeDefinition.java | 17 ++ .../model/api/type/Uint64TypeDefinition.java | 19 ++ .../model/api/type/Uint8TypeDefinition.java | 17 ++ .../type/UnsignedIntegerTypeDefinition.java | 9 +- .../model/export/SchemaContextEmitter.java | 8 +- .../util/type/AbstractIntegerBaseType.java | 6 +- .../util/type/AbstractUnsignedBaseType.java | 7 +- .../yang/model/util/type/BaseInt16Type.java | 3 +- .../yang/model/util/type/BaseInt32Type.java | 3 +- .../yang/model/util/type/BaseInt64Type.java | 3 +- .../yang/model/util/type/BaseInt8Type.java | 3 +- .../yang/model/util/type/BaseTypes.java | 51 ++++- .../yang/model/util/type/BaseUint16Type.java | 4 +- .../yang/model/util/type/BaseUint32Type.java | 4 +- .../yang/model/util/type/BaseUint64Type.java | 4 +- .../yang/model/util/type/BaseUint8Type.java | 3 +- .../yang/model/util/type/CompatUtils.java | 36 ++-- .../yang/model/util/type/ConcreteTypes.java | 122 ++++++++++-- ...IntegerType.java => DerivedInt16Type.java} | 10 +- .../model/util/type/DerivedInt32Type.java | 33 ++++ .../model/util/type/DerivedInt64Type.java | 33 ++++ .../yang/model/util/type/DerivedInt8Type.java | 33 ++++ .../yang/model/util/type/DerivedTypes.java | 180 ++++++++++++++---- ...signedType.java => DerivedUint16Type.java} | 10 +- .../model/util/type/DerivedUint32Type.java | 34 ++++ .../model/util/type/DerivedUint64Type.java | 34 ++++ .../model/util/type/DerivedUint8Type.java | 34 ++++ ...egerType.java => RestrictedInt16Type.java} | 10 +- .../model/util/type/RestrictedInt32Type.java | 38 ++++ .../model/util/type/RestrictedInt64Type.java | 38 ++++ .../model/util/type/RestrictedInt8Type.java | 37 ++++ .../yang/model/util/type/RestrictedTypes.java | 90 +++++++-- ...nedType.java => RestrictedUint16Type.java} | 10 +- .../model/util/type/RestrictedUint32Type.java | 39 ++++ .../model/util/type/RestrictedUint64Type.java | 39 ++++ .../model/util/type/RestrictedUint8Type.java | 39 ++++ .../yang/model/util/type/TypeDefinitions.java | 8 +- .../yangtools/yang/model/util/Int8Test.java | 6 +- .../yang/model/util/type/TypeTest.java | 52 ++--- .../stmt/rfc6020/TypeStatementImpl.java | 30 ++- .../IntegerTypeEffectiveStatementImpl.java | 47 ++++- ...gnedIntegerTypeEffectiveStatementImpl.java | 43 ++++- .../yangtools/yang/stmt/Bug5437Test.java | 4 +- .../yangtools/yang/stmt/Bug6771Test.java | 4 +- .../yang/stmt/DeviationResolutionTest.java | 8 +- .../yang/stmt/DeviationStmtTest.java | 4 +- .../yangtools/yang/stmt/UsesAugmentTest.java | 4 +- .../yangtools/yang/stmt/YangParserTest.java | 23 +-- .../yang/stmt/YangParserWithContextTest.java | 13 +- .../yangtools/yang/stmt/test/Bug5200Test.java | 6 +- 68 files changed, 1257 insertions(+), 295 deletions(-) create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int16TypeDefinition.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int32TypeDefinition.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int64TypeDefinition.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int8TypeDefinition.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint16TypeDefinition.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint32TypeDefinition.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint64TypeDefinition.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint8TypeDefinition.java rename yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/{DerivedIntegerType.java => DerivedInt16Type.java} (72%) create mode 100644 yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedInt32Type.java create mode 100644 yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedInt64Type.java create mode 100644 yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedInt8Type.java rename yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/{DerivedUnsignedType.java => DerivedUint16Type.java} (72%) create mode 100644 yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUint32Type.java create mode 100644 yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUint64Type.java create mode 100644 yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUint8Type.java rename yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/{RestrictedIntegerType.java => RestrictedInt16Type.java} (74%) create mode 100644 yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedInt32Type.java create mode 100644 yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedInt64Type.java create mode 100644 yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedInt8Type.java rename yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/{RestrictedUnsignedType.java => RestrictedUint16Type.java} (73%) create mode 100644 yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUint32Type.java create mode 100644 yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUint64Type.java create mode 100644 yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUint8Type.java diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONCodecFactory.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONCodecFactory.java index 21a640af16..07a261fc09 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONCodecFactory.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONCodecFactory.java @@ -245,7 +245,7 @@ public final class JSONCodecFactory extends AbstractCodecFactory> { } @Override - protected JSONCodec intCodec(final IntegerTypeDefinition type) { + protected JSONCodec intCodec(final IntegerTypeDefinition type) { return new NumberJSONCodec<>(AbstractIntegerStringCodec.from(type)); } @@ -255,7 +255,7 @@ public final class JSONCodecFactory extends AbstractCodecFactory> { } @Override - protected JSONCodec uintCodec(final UnsignedIntegerTypeDefinition type) { + protected JSONCodec uintCodec(final UnsignedIntegerTypeDefinition type) { return new NumberJSONCodec<>(AbstractIntegerStringCodec.from(type)); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/AbstractIntegerStringCodec.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/AbstractIntegerStringCodec.java index 159a28f3b4..c50e83434e 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/AbstractIntegerStringCodec.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/AbstractIntegerStringCodec.java @@ -8,14 +8,6 @@ package org.opendaylight.yangtools.yang.data.impl.codec; import static com.google.common.base.Preconditions.checkArgument; -import static org.opendaylight.yangtools.yang.model.util.BaseTypes.INT16_QNAME; -import static org.opendaylight.yangtools.yang.model.util.BaseTypes.INT32_QNAME; -import static org.opendaylight.yangtools.yang.model.util.BaseTypes.INT64_QNAME; -import static org.opendaylight.yangtools.yang.model.util.BaseTypes.INT8_QNAME; -import static org.opendaylight.yangtools.yang.model.util.BaseTypes.UINT16_QNAME; -import static org.opendaylight.yangtools.yang.model.util.BaseTypes.UINT32_QNAME; -import static org.opendaylight.yangtools.yang.model.util.BaseTypes.UINT64_QNAME; -import static org.opendaylight.yangtools.yang.model.util.BaseTypes.UINT8_QNAME; import com.google.common.annotations.Beta; import com.google.common.base.CharMatcher; @@ -23,8 +15,16 @@ import com.google.common.collect.RangeSet; import java.util.Optional; import java.util.regex.Pattern; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; +import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; /** @@ -56,50 +56,33 @@ public abstract class AbstractIntegerStringCodec) constraint.map(RangeConstraint::getAllowedRanges).orElse(null); } - public static AbstractIntegerStringCodec from(final IntegerTypeDefinition type) { - // FIXME: this is not necessary with yang.model.util.type - IntegerTypeDefinition baseType = type; - while (baseType.getBaseType() != null) { - baseType = baseType.getBaseType(); - } - - final Optional typeOptional = Optional.of(type); - - // FIXME: use DerivedTypes#isInt8() and friends - if (INT8_QNAME.equals(baseType.getQName())) { - return new Int8StringCodec(typeOptional); - } else if (INT16_QNAME.equals(baseType.getQName())) { - return new Int16StringCodec(typeOptional); - } else if (INT32_QNAME.equals(baseType.getQName())) { - return new Int32StringCodec(typeOptional); - } else if (INT64_QNAME.equals(baseType.getQName())) { - return new Int64StringCodec(typeOptional); + public static AbstractIntegerStringCodec> from( + final IntegerTypeDefinition type) { + if (type instanceof Int8TypeDefinition) { + return new Int8StringCodec(Optional.of((Int8TypeDefinition) type)); + } else if (type instanceof Int16TypeDefinition) { + return new Int16StringCodec(Optional.of((Int16TypeDefinition) type)); + } else if (type instanceof Int32TypeDefinition) { + return new Int32StringCodec(Optional.of((Int32TypeDefinition) type)); + } else if (type instanceof Int64TypeDefinition) { + return new Int64StringCodec(Optional.of((Int64TypeDefinition) type)); } else { - throw new IllegalArgumentException("Unsupported base type: " + baseType.getQName()); + throw new IllegalArgumentException("Unsupported type: " + type); } } - public static AbstractIntegerStringCodec from( - final UnsignedIntegerTypeDefinition type) { - // FIXME: this is not necessary with yang.model.util.type - UnsignedIntegerTypeDefinition baseType = type; - while (baseType.getBaseType() != null) { - baseType = baseType.getBaseType(); - } - - final Optional typeOptional = Optional.of(type); - - // FIXME: use DerivedTypes#isUint8() and friends - if (UINT8_QNAME.equals(baseType.getQName())) { - return new Uint8StringCodec(typeOptional); - } else if (UINT16_QNAME.equals(baseType.getQName())) { - return new Uint16StringCodec(typeOptional); - } else if (UINT32_QNAME.equals(baseType.getQName())) { - return new Uint32StringCodec(typeOptional); - } else if (UINT64_QNAME.equals(baseType.getQName())) { - return new Uint64StringCodec(typeOptional); + public static AbstractIntegerStringCodec> from( + final UnsignedIntegerTypeDefinition type) { + if (type instanceof Uint8TypeDefinition) { + return new Uint8StringCodec(Optional.of((Uint8TypeDefinition) type)); + } else if (type instanceof Uint16TypeDefinition) { + return new Uint16StringCodec(Optional.of((Uint16TypeDefinition) type)); + } else if (type instanceof Uint32TypeDefinition) { + return new Uint32StringCodec(Optional.of((Uint32TypeDefinition) type)); + } else if (type instanceof Uint64TypeDefinition) { + return new Uint64StringCodec(Optional.of((Uint64TypeDefinition) type)); } else { - throw new IllegalArgumentException("Unsupported base type: " + baseType.getQName()); + throw new IllegalArgumentException("Unsupported type: " + type); } } @@ -133,11 +116,11 @@ public abstract class AbstractIntegerStringCodec> extractRange(final IntegerTypeDefinition type) { + protected static Optional> extractRange(final IntegerTypeDefinition type) { return type == null ? Optional.empty() : type.getRangeConstraint(); } - protected static Optional> extractRange(final UnsignedIntegerTypeDefinition type) { + protected static Optional> extractRange(final UnsignedIntegerTypeDefinition type) { return type == null ? Optional.empty() : type.getRangeConstraint(); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Int16StringCodec.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Int16StringCodec.java index 9a6dcd7ccd..da4d68e48b 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Int16StringCodec.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Int16StringCodec.java @@ -11,11 +11,11 @@ package org.opendaylight.yangtools.yang.data.impl.codec; import java.util.Objects; import java.util.Optional; import org.opendaylight.yangtools.yang.data.api.codec.Int16Codec; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition; -final class Int16StringCodec extends AbstractIntegerStringCodec +final class Int16StringCodec extends AbstractIntegerStringCodec implements Int16Codec { - Int16StringCodec(final Optional typeDef) { + Int16StringCodec(final Optional typeDef) { super(typeDef, extractRange(typeDef.orElse(null)), Short.class); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Int32StringCodec.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Int32StringCodec.java index 0177b20f9a..32fde20ca4 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Int32StringCodec.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Int32StringCodec.java @@ -11,11 +11,11 @@ package org.opendaylight.yangtools.yang.data.impl.codec; import java.util.Objects; import java.util.Optional; import org.opendaylight.yangtools.yang.data.api.codec.Int32Codec; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition; -final class Int32StringCodec extends AbstractIntegerStringCodec +final class Int32StringCodec extends AbstractIntegerStringCodec implements Int32Codec { - Int32StringCodec(final Optional typeDef) { + Int32StringCodec(final Optional typeDef) { super(typeDef, extractRange(typeDef.orElse(null)), Integer.class); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Int64StringCodec.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Int64StringCodec.java index 59f2703c69..98950f8b7d 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Int64StringCodec.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Int64StringCodec.java @@ -11,12 +11,12 @@ package org.opendaylight.yangtools.yang.data.impl.codec; import java.util.Objects; import java.util.Optional; import org.opendaylight.yangtools.yang.data.api.codec.Int64Codec; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition; -final class Int64StringCodec extends AbstractIntegerStringCodec +final class Int64StringCodec extends AbstractIntegerStringCodec implements Int64Codec { - Int64StringCodec(final Optional typeDef) { + Int64StringCodec(final Optional typeDef) { super(typeDef, extractRange(typeDef.orElse(null)), Long.class); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Int8StringCodec.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Int8StringCodec.java index 7c6b6ab8ab..22ae121911 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Int8StringCodec.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Int8StringCodec.java @@ -11,12 +11,11 @@ package org.opendaylight.yangtools.yang.data.impl.codec; import java.util.Objects; import java.util.Optional; import org.opendaylight.yangtools.yang.data.api.codec.Int8Codec; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition; -final class Int8StringCodec extends AbstractIntegerStringCodec - implements Int8Codec { +final class Int8StringCodec extends AbstractIntegerStringCodec implements Int8Codec { - Int8StringCodec(final Optional typeDef) { + Int8StringCodec(final Optional typeDef) { super(typeDef, extractRange(typeDef.orElse(null)), Byte.class); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/TypeDefinitionAwareCodec.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/TypeDefinitionAwareCodec.java index a9ab1ecd1e..8adf6ffa22 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/TypeDefinitionAwareCodec.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/TypeDefinitionAwareCodec.java @@ -64,13 +64,13 @@ public abstract class TypeDefinitionAwareCodec> i } else if (typeDefinition instanceof EnumTypeDefinition) { codec = EnumStringCodec.from((EnumTypeDefinition)typeDefinition); } else if (typeDefinition instanceof IntegerTypeDefinition) { - codec = AbstractIntegerStringCodec.from((IntegerTypeDefinition) typeDefinition); + codec = AbstractIntegerStringCodec.from((IntegerTypeDefinition) typeDefinition); } else if (typeDefinition instanceof StringTypeDefinition) { codec = StringStringCodec.from((StringTypeDefinition)typeDefinition); } else if (typeDefinition instanceof UnionTypeDefinition) { codec = UnionStringCodec.from((UnionTypeDefinition)typeDefinition); } else if (typeDefinition instanceof UnsignedIntegerTypeDefinition) { - codec = AbstractIntegerStringCodec.from((UnsignedIntegerTypeDefinition) typeDefinition); + codec = AbstractIntegerStringCodec.from((UnsignedIntegerTypeDefinition) typeDefinition); } else { codec = null; } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Uint16StringCodec.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Uint16StringCodec.java index 4b2d49155c..3eea7a17c0 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Uint16StringCodec.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Uint16StringCodec.java @@ -11,11 +11,11 @@ package org.opendaylight.yangtools.yang.data.impl.codec; import java.util.Objects; import java.util.Optional; import org.opendaylight.yangtools.yang.data.api.codec.Uint16Codec; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition; -final class Uint16StringCodec extends AbstractIntegerStringCodec implements +final class Uint16StringCodec extends AbstractIntegerStringCodec implements Uint16Codec { - Uint16StringCodec(final Optional typeDef) { + Uint16StringCodec(final Optional typeDef) { super(typeDef, extractRange(typeDef.orElse(null)), Integer.class); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Uint32StringCodec.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Uint32StringCodec.java index c3b244ceba..211cc76d5d 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Uint32StringCodec.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Uint32StringCodec.java @@ -11,12 +11,12 @@ package org.opendaylight.yangtools.yang.data.impl.codec; import java.util.Objects; import java.util.Optional; import org.opendaylight.yangtools.yang.data.api.codec.Uint32Codec; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; -final class Uint32StringCodec extends AbstractIntegerStringCodec implements +final class Uint32StringCodec extends AbstractIntegerStringCodec implements Uint32Codec { - Uint32StringCodec(final Optional typeDef) { + Uint32StringCodec(final Optional typeDef) { super(typeDef, extractRange(typeDef.orElse(null)), Long.class); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Uint64StringCodec.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Uint64StringCodec.java index 5ffb044415..148a402c9b 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Uint64StringCodec.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Uint64StringCodec.java @@ -12,12 +12,12 @@ import java.math.BigInteger; import java.util.Objects; import java.util.Optional; import org.opendaylight.yangtools.yang.data.api.codec.Uint64Codec; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition; -final class Uint64StringCodec extends AbstractIntegerStringCodec implements +final class Uint64StringCodec extends AbstractIntegerStringCodec implements Uint64Codec { - Uint64StringCodec(final Optional typeDef) { + Uint64StringCodec(final Optional typeDef) { super(typeDef, extractRange(typeDef.orElse(null)), BigInteger.class); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Uint8StringCodec.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Uint8StringCodec.java index 7a3d20c76b..885c5e3669 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Uint8StringCodec.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/Uint8StringCodec.java @@ -11,12 +11,12 @@ package org.opendaylight.yangtools.yang.data.impl.codec; import java.util.Objects; import java.util.Optional; import org.opendaylight.yangtools.yang.data.api.codec.Uint8Codec; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; -final class Uint8StringCodec extends AbstractIntegerStringCodec implements +final class Uint8StringCodec extends AbstractIntegerStringCodec implements Uint8Codec { - Uint8StringCodec(final Optional typeDef) { + Uint8StringCodec(final Optional typeDef) { super(typeDef, extractRange(typeDef.orElse(null)), Short.class); } diff --git a/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/codec/AbstractCodecFactory.java b/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/codec/AbstractCodecFactory.java index 79e912176b..f7df44bbf7 100644 --- a/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/codec/AbstractCodecFactory.java +++ b/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/codec/AbstractCodecFactory.java @@ -112,13 +112,13 @@ public abstract class AbstractCodecFactory> { protected abstract T instanceIdentifierCodec(InstanceIdentifierTypeDefinition type); - protected abstract T intCodec(IntegerTypeDefinition type); + protected abstract T intCodec(IntegerTypeDefinition type); protected abstract T decimalCodec(DecimalTypeDefinition type); protected abstract T stringCodec(StringTypeDefinition type); - protected abstract T uintCodec(UnsignedIntegerTypeDefinition type); + protected abstract T uintCodec(UnsignedIntegerTypeDefinition type); protected abstract T unionCodec(UnionTypeDefinition type, List codecs); @@ -138,9 +138,9 @@ public abstract class AbstractCodecFactory> { if (type instanceof StringTypeDefinition) { ret = stringCodec((StringTypeDefinition) type); } else if (type instanceof IntegerTypeDefinition) { - ret = intCodec((IntegerTypeDefinition) type); + ret = intCodec((IntegerTypeDefinition) type); } else if (type instanceof UnsignedIntegerTypeDefinition) { - ret = uintCodec((UnsignedIntegerTypeDefinition) type); + ret = uintCodec((UnsignedIntegerTypeDefinition) type); } else if (type instanceof BooleanTypeDefinition) { ret = booleanCodec((BooleanTypeDefinition) type); } else if (type instanceof DecimalTypeDefinition) { diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int16TypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int16TypeDefinition.java new file mode 100644 index 0000000000..ac450ffbef --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int16TypeDefinition.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.api.type; + +/** + * Type definition derived from int16 type. + * + * @author Robert Varga + */ +public interface Int16TypeDefinition extends IntegerTypeDefinition { + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int32TypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int32TypeDefinition.java new file mode 100644 index 0000000000..1f22674413 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int32TypeDefinition.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.api.type; + +/** + * Type definition derived from int32 type. + * + * @author Robert Varga + */ +public interface Int32TypeDefinition extends IntegerTypeDefinition { + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int64TypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int64TypeDefinition.java new file mode 100644 index 0000000000..b36a18b9ff --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int64TypeDefinition.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.api.type; + +/** + * Type definition derived from int64 type. + * + * @author Robert Varga + */ +public interface Int64TypeDefinition extends IntegerTypeDefinition { + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int8TypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int8TypeDefinition.java new file mode 100644 index 0000000000..34f48c50cf --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int8TypeDefinition.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.api.type; + +/** + * Type definition derived from int8 type. + * + * @author Robert Varga + */ +public interface Int8TypeDefinition extends IntegerTypeDefinition { + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/IntegerTypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/IntegerTypeDefinition.java index 2dad0c0997..f22c000922 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/IntegerTypeDefinition.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/IntegerTypeDefinition.java @@ -20,7 +20,14 @@ package org.opendaylight.yangtools.yang.model.api.type; * *

* The Integer Built-In Types are defined in [RFC-6020] + * + *

+ * Note this is an intermediate interface, concretized by sub-interfaces. + * + * @param native representation type + * @param concrete type definition */ -public interface IntegerTypeDefinition extends RangeRestrictedTypeDefinition { +public interface IntegerTypeDefinition, T extends IntegerTypeDefinition> + extends RangeRestrictedTypeDefinition { } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint16TypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint16TypeDefinition.java new file mode 100644 index 0000000000..43b25df893 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint16TypeDefinition.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.api.type; + +/** + * Type definition derived from uint16 type. + * + * @author Robert Varga + */ +public interface Uint16TypeDefinition extends UnsignedIntegerTypeDefinition { + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint32TypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint32TypeDefinition.java new file mode 100644 index 0000000000..212adb0cb7 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint32TypeDefinition.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.api.type; + +/** + * Type definition derived from uint32 type. + * + * @author Robert Varga + */ +public interface Uint32TypeDefinition extends UnsignedIntegerTypeDefinition { + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint64TypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint64TypeDefinition.java new file mode 100644 index 0000000000..35dc43f92c --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint64TypeDefinition.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.api.type; + +import java.math.BigInteger; + +/** + * Type definition derived from uint64 type. + * + * @author Robert Varga + */ +public interface Uint64TypeDefinition extends UnsignedIntegerTypeDefinition { + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint8TypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint8TypeDefinition.java new file mode 100644 index 0000000000..f948df915a --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint8TypeDefinition.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.api.type; + +/** + * Type definition derived from uint8 type. + * + * @author Robert Varga + */ +public interface Uint8TypeDefinition extends UnsignedIntegerTypeDefinition { + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/UnsignedIntegerTypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/UnsignedIntegerTypeDefinition.java index 091101d0d3..f24282f5c0 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/UnsignedIntegerTypeDefinition.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/UnsignedIntegerTypeDefinition.java @@ -9,7 +9,14 @@ package org.opendaylight.yangtools.yang.model.api.type; /** * Contains the method for getting detail data about unsigned integer. + * + *

+ * Note this is an intermediate interface, concretized by sub-interfaces. + * + * @param native representation type + * @param concrete type definition */ -public interface UnsignedIntegerTypeDefinition extends RangeRestrictedTypeDefinition { +public interface UnsignedIntegerTypeDefinition, + T extends UnsignedIntegerTypeDefinition> extends RangeRestrictedTypeDefinition { } diff --git a/yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/SchemaContextEmitter.java b/yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/SchemaContextEmitter.java index 0ce5c2464b..3a28f320c7 100644 --- a/yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/SchemaContextEmitter.java +++ b/yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/SchemaContextEmitter.java @@ -1450,9 +1450,9 @@ abstract class SchemaContextEmitter { private void emitTypeBodyNodes(final TypeDefinition typeDef) { if (typeDef instanceof UnsignedIntegerTypeDefinition) { - emitUnsignedIntegerSpecification((UnsignedIntegerTypeDefinition) typeDef); + emitUnsignedIntegerSpecification((UnsignedIntegerTypeDefinition) typeDef); } else if (typeDef instanceof IntegerTypeDefinition) { - emitIntegerSpefication((IntegerTypeDefinition) typeDef); + emitIntegerSpefication((IntegerTypeDefinition) typeDef); } else if (typeDef instanceof DecimalTypeDefinition) { emitDecimal64Specification((DecimalTypeDefinition) typeDef); } else if (typeDef instanceof StringTypeDefinition) { @@ -1478,11 +1478,11 @@ abstract class SchemaContextEmitter { } } - private void emitIntegerSpefication(final IntegerTypeDefinition typeDef) { + private void emitIntegerSpefication(final IntegerTypeDefinition typeDef) { typeDef.getRangeConstraint().ifPresent(this::emitRangeNode); } - private void emitUnsignedIntegerSpecification(final UnsignedIntegerTypeDefinition typeDef) { + private void emitUnsignedIntegerSpecification(final UnsignedIntegerTypeDefinition typeDef) { typeDef.getRangeConstraint().ifPresent(this::emitRangeNode); } diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/AbstractIntegerBaseType.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/AbstractIntegerBaseType.java index 1a7636d16a..004553a245 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/AbstractIntegerBaseType.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/AbstractIntegerBaseType.java @@ -10,9 +10,9 @@ package org.opendaylight.yangtools.yang.model.util.type; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; -abstract class AbstractIntegerBaseType> - extends AbstractRangeRestrictedBaseType implements IntegerTypeDefinition { - AbstractIntegerBaseType(final QName qname, final C minValue, final C maxValue) { +abstract class AbstractIntegerBaseType, T extends IntegerTypeDefinition> + extends AbstractRangeRestrictedBaseType implements IntegerTypeDefinition { + AbstractIntegerBaseType(final QName qname, final N minValue, final N maxValue) { super(qname, minValue, maxValue); } diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/AbstractUnsignedBaseType.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/AbstractUnsignedBaseType.java index 8cd15c8c44..6ae7f5c718 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/AbstractUnsignedBaseType.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/AbstractUnsignedBaseType.java @@ -10,10 +10,9 @@ package org.opendaylight.yangtools.yang.model.util.type; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; -abstract class AbstractUnsignedBaseType> - extends AbstractRangeRestrictedBaseType - implements UnsignedIntegerTypeDefinition { - AbstractUnsignedBaseType(final QName qname, final C minValue, final C maxValue) { +abstract class AbstractUnsignedBaseType, T extends UnsignedIntegerTypeDefinition> + extends AbstractRangeRestrictedBaseType implements UnsignedIntegerTypeDefinition { + AbstractUnsignedBaseType(final QName qname, final N minValue, final N maxValue) { super(qname, minValue, maxValue); } diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseInt16Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseInt16Type.java index 51a481fa12..a09c3593bc 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseInt16Type.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseInt16Type.java @@ -7,9 +7,10 @@ */ package org.opendaylight.yangtools.yang.model.util.type; +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition; import org.opendaylight.yangtools.yang.model.util.BaseTypes; -final class BaseInt16Type extends AbstractIntegerBaseType { +final class BaseInt16Type extends AbstractIntegerBaseType implements Int16TypeDefinition { static final BaseInt16Type INSTANCE = new BaseInt16Type(); private BaseInt16Type() { diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseInt32Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseInt32Type.java index 1559dea1bd..abeacf8c45 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseInt32Type.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseInt32Type.java @@ -7,9 +7,10 @@ */ package org.opendaylight.yangtools.yang.model.util.type; +import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition; import org.opendaylight.yangtools.yang.model.util.BaseTypes; -final class BaseInt32Type extends AbstractIntegerBaseType { +final class BaseInt32Type extends AbstractIntegerBaseType implements Int32TypeDefinition { static final BaseInt32Type INSTANCE = new BaseInt32Type(); private BaseInt32Type() { diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseInt64Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseInt64Type.java index 7adff9e85c..8d69c5498b 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseInt64Type.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseInt64Type.java @@ -7,9 +7,10 @@ */ package org.opendaylight.yangtools.yang.model.util.type; +import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition; import org.opendaylight.yangtools.yang.model.util.BaseTypes; -final class BaseInt64Type extends AbstractIntegerBaseType { +final class BaseInt64Type extends AbstractIntegerBaseType implements Int64TypeDefinition { static final BaseInt64Type INSTANCE = new BaseInt64Type(); private BaseInt64Type() { diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseInt8Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseInt8Type.java index d9bef9fa13..0a871ba5b1 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseInt8Type.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseInt8Type.java @@ -7,9 +7,10 @@ */ package org.opendaylight.yangtools.yang.model.util.type; +import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition; import org.opendaylight.yangtools.yang.model.util.BaseTypes; -final class BaseInt8Type extends AbstractIntegerBaseType { +final class BaseInt8Type extends AbstractIntegerBaseType implements Int8TypeDefinition { static final BaseInt8Type INSTANCE = new BaseInt8Type(); private BaseInt8Type() { diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseTypes.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseTypes.java index a6f64a70cc..ab2f54e2c4 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseTypes.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseTypes.java @@ -15,9 +15,15 @@ import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; /** * Utility access methods for creating and accessing YANG base type definitions. YANG types come in two basic variants, @@ -85,34 +91,59 @@ public final class BaseTypes { return BaseInstanceIdentifierType.INSTANCE; } - public static IntegerTypeDefinition int8Type() { + public static Int8TypeDefinition int8Type() { return BaseInt8Type.INSTANCE; } + /** + * Check if a particular type definition represents the built-in int8 type. + * + * @param type Type definition + * @return True if the definition is the built-in int8 type. + */ public static boolean isInt8(final TypeDefinition type) { return BaseInt8Type.INSTANCE.getPath().equals(type.getPath()); } - public static IntegerTypeDefinition int16Type() { + public static Int16TypeDefinition int16Type() { return BaseInt16Type.INSTANCE; } + /** + * Check if a particular type definition represents the built-in int16 type. + * + * @param type Type definition + * @return True if the definition is the built-in int16 type. + */ public static boolean isInt16(final TypeDefinition type) { return BaseInt16Type.INSTANCE.getPath().equals(type.getPath()); } - public static IntegerTypeDefinition int32Type() { + public static Int32TypeDefinition int32Type() { return BaseInt32Type.INSTANCE; } + /** + * Check if a particular type definition represents the built-in int32 type. + * + * @param type Type definition + * @return True if the definition is the built-in int32 type. + */ + public static boolean isInt32(final TypeDefinition type) { return BaseInt32Type.INSTANCE.getPath().equals(type.getPath()); } - public static IntegerTypeDefinition int64Type() { + public static Int64TypeDefinition int64Type() { return BaseInt64Type.INSTANCE; } + /** + * Check if a particular type definition represents the built-in int64 type. + * + * @param type Type definition + * @return True if the definition is the built-in int64 type. + */ public static boolean isInt64(final TypeDefinition type) { return BaseInt64Type.INSTANCE.getPath().equals(type.getPath()); } @@ -129,7 +160,7 @@ public final class BaseTypes { return new UnionTypeBuilder(path); } - public static UnsignedIntegerTypeDefinition uint8Type() { + public static Uint8TypeDefinition uint8Type() { return BaseUint8Type.INSTANCE; } @@ -145,7 +176,7 @@ public final class BaseTypes { return BaseUint8Type.INSTANCE.getPath().equals(type.getPath()); } - public static UnsignedIntegerTypeDefinition uint16Type() { + public static Uint16TypeDefinition uint16Type() { return BaseUint16Type.INSTANCE; } @@ -161,7 +192,7 @@ public final class BaseTypes { return BaseUint16Type.INSTANCE.getPath().equals(type.getPath()); } - public static UnsignedIntegerTypeDefinition uint32Type() { + public static Uint32TypeDefinition uint32Type() { return BaseUint32Type.INSTANCE; } @@ -177,7 +208,7 @@ public final class BaseTypes { return BaseUint32Type.INSTANCE.getPath().equals(type.getPath()); } - public static UnsignedIntegerTypeDefinition uint64Type() { + public static Uint64TypeDefinition uint64Type() { return BaseUint64Type.INSTANCE; } diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUint16Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUint16Type.java index 1148be33ef..4753984123 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUint16Type.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUint16Type.java @@ -7,9 +7,11 @@ */ package org.opendaylight.yangtools.yang.model.util.type; +import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition; import org.opendaylight.yangtools.yang.model.util.BaseTypes; -final class BaseUint16Type extends AbstractUnsignedBaseType { +final class BaseUint16Type extends AbstractUnsignedBaseType + implements Uint16TypeDefinition { static final BaseUint16Type INSTANCE = new BaseUint16Type(); private BaseUint16Type() { diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUint32Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUint32Type.java index 56b0b2ef4d..36f07621f8 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUint32Type.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUint32Type.java @@ -7,9 +7,11 @@ */ package org.opendaylight.yangtools.yang.model.util.type; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; import org.opendaylight.yangtools.yang.model.util.BaseTypes; -final class BaseUint32Type extends AbstractUnsignedBaseType { +final class BaseUint32Type extends AbstractUnsignedBaseType + implements Uint32TypeDefinition { static final BaseUint32Type INSTANCE = new BaseUint32Type(); private BaseUint32Type() { diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUint64Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUint64Type.java index d68fd5d809..f0849a7ed1 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUint64Type.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUint64Type.java @@ -8,9 +8,11 @@ package org.opendaylight.yangtools.yang.model.util.type; import java.math.BigInteger; +import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition; import org.opendaylight.yangtools.yang.model.util.BaseTypes; -final class BaseUint64Type extends AbstractUnsignedBaseType { +final class BaseUint64Type extends AbstractUnsignedBaseType + implements Uint64TypeDefinition { static final BaseUint64Type INSTANCE = new BaseUint64Type(); private BaseUint64Type() { diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUint8Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUint8Type.java index b3b9379c86..14fc029acc 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUint8Type.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUint8Type.java @@ -7,9 +7,10 @@ */ package org.opendaylight.yangtools.yang.model.util.type; +import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; import org.opendaylight.yangtools.yang.model.util.BaseTypes; -final class BaseUint8Type extends AbstractUnsignedBaseType { +final class BaseUint8Type extends AbstractUnsignedBaseType implements Uint8TypeDefinition { static final BaseUint8Type INSTANCE = new BaseUint8Type(); private BaseUint8Type() { diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/CompatUtils.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/CompatUtils.java index 251b628de8..db8604d757 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/CompatUtils.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/CompatUtils.java @@ -16,14 +16,20 @@ import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint; import org.opendaylight.yangtools.yang.model.api.type.LengthRestrictedTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; import org.opendaylight.yangtools.yang.model.api.type.RangeRestrictedTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; /** * Compatibility utilities for dealing with differences between the old parser's ExtendedType-driven type @@ -139,12 +145,24 @@ public final class CompatUtils { return baseTypeIfNotConstrained((DecimalTypeDefinition) leafType); } else if (leafType instanceof InstanceIdentifierTypeDefinition) { return baseTypeIfNotConstrained((InstanceIdentifierTypeDefinition) leafType); - } else if (leafType instanceof IntegerTypeDefinition) { - return baseTypeIfNotConstrained((IntegerTypeDefinition) leafType); + } else if (leafType instanceof Int8TypeDefinition) { + return baseTypeIfNotConstrained((Int8TypeDefinition) leafType); + } else if (leafType instanceof Int16TypeDefinition) { + return baseTypeIfNotConstrained((Int16TypeDefinition) leafType); + } else if (leafType instanceof Int32TypeDefinition) { + return baseTypeIfNotConstrained((Int32TypeDefinition) leafType); + } else if (leafType instanceof Int64TypeDefinition) { + return baseTypeIfNotConstrained((Int64TypeDefinition) leafType); } else if (leafType instanceof StringTypeDefinition) { return baseTypeIfNotConstrained((StringTypeDefinition) leafType); - } else if (leafType instanceof UnsignedIntegerTypeDefinition) { - return baseTypeIfNotConstrained((UnsignedIntegerTypeDefinition) leafType); + } else if (leafType instanceof Uint8TypeDefinition) { + return baseTypeIfNotConstrained((Uint8TypeDefinition) leafType); + } else if (leafType instanceof Uint16TypeDefinition) { + return baseTypeIfNotConstrained((Uint16TypeDefinition) leafType); + } else if (leafType instanceof Uint32TypeDefinition) { + return baseTypeIfNotConstrained((Uint32TypeDefinition) leafType); + } else if (leafType instanceof Uint64TypeDefinition) { + return baseTypeIfNotConstrained((Uint64TypeDefinition) leafType); } else { // Other types cannot be constrained, return the base type return baseType; @@ -164,10 +182,6 @@ public final class CompatUtils { return type.requireInstance() == base.requireInstance() ? base : type; } - private static TypeDefinition baseTypeIfNotConstrained(final IntegerTypeDefinition type) { - return baseTypeIfNotConstrained(type, type.getBaseType()); - } - private static TypeDefinition baseTypeIfNotConstrained(final StringTypeDefinition type) { final StringTypeDefinition base = type.getBaseType(); final List patterns = type.getPatternConstraints(); @@ -181,7 +195,7 @@ public final class CompatUtils { return type; } - private static TypeDefinition baseTypeIfNotConstrained(final UnsignedIntegerTypeDefinition type) { + private static > T baseTypeIfNotConstrained(final T type) { return baseTypeIfNotConstrained(type, type.getBaseType()); } diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/ConcreteTypes.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/ConcreteTypes.java index b9ac813d60..1f43830e59 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/ConcreteTypes.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/ConcreteTypes.java @@ -19,11 +19,17 @@ import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; /** * Support for creating {@link TypeDefinition} instances defined by leaf and leaf-list statements. @@ -52,16 +58,28 @@ public final class ConcreteTypes { return concreteIdentityrefBuilder((IdentityrefTypeDefinition) baseType, path); } else if (baseType instanceof InstanceIdentifierTypeDefinition) { return concreteInstanceIdentifierBuilder((InstanceIdentifierTypeDefinition) baseType, path); - } else if (baseType instanceof IntegerTypeDefinition) { - return concreteIntegerBuilder((IntegerTypeDefinition) baseType, path); + } else if (baseType instanceof Int8TypeDefinition) { + return concreteInt8Builder((Int8TypeDefinition) baseType, path); + } else if (baseType instanceof Int16TypeDefinition) { + return concreteInt16Builder((Int16TypeDefinition) baseType, path); + } else if (baseType instanceof Int32TypeDefinition) { + return concreteInt32Builder((Int32TypeDefinition) baseType, path); + } else if (baseType instanceof Int64TypeDefinition) { + return concreteInt64Builder((Int64TypeDefinition) baseType, path); } else if (baseType instanceof LeafrefTypeDefinition) { return concreteLeafrefBuilder((LeafrefTypeDefinition) baseType, path); } else if (baseType instanceof StringTypeDefinition) { return concreteStringBuilder((StringTypeDefinition) baseType, path); } else if (baseType instanceof UnionTypeDefinition) { return concreteUnionBuilder((UnionTypeDefinition) baseType, path); - } else if (baseType instanceof UnsignedIntegerTypeDefinition) { - return concreteUnsignedBuilder((UnsignedIntegerTypeDefinition) baseType, path); + } else if (baseType instanceof Uint8TypeDefinition) { + return concreteUint8Builder((Uint8TypeDefinition) baseType, path); + } else if (baseType instanceof Uint16TypeDefinition) { + return concreteUint16Builder((Uint16TypeDefinition) baseType, path); + } else if (baseType instanceof Uint32TypeDefinition) { + return concreteUint32Builder((Uint32TypeDefinition) baseType, path); + } else if (baseType instanceof Uint64TypeDefinition) { + return concreteUint64Builder((Uint64TypeDefinition) baseType, path); } else { throw new IllegalArgumentException("Unhandled type definition class " + baseType.getClass()); } @@ -163,13 +181,49 @@ public final class ConcreteTypes { }; } - private static ConcreteTypeBuilder concreteIntegerBuilder( - final IntegerTypeDefinition baseType, final SchemaPath path) { - return new ConcreteTypeBuilder(baseType, path) { + private static ConcreteTypeBuilder concreteInt8Builder( + final Int8TypeDefinition baseType, final SchemaPath path) { + return new ConcreteTypeBuilder(baseType, path) { @Nonnull @Override - public IntegerTypeDefinition buildType() { - return new DerivedIntegerType(getBaseType(), getPath(), getDefaultValue(), getDescription(), + public Int8TypeDefinition buildType() { + return new DerivedInt8Type(getBaseType(), getPath(), getDefaultValue(), getDescription(), + getReference(), getStatus(), getUnits(), getUnknownSchemaNodes()); + } + }; + } + + private static ConcreteTypeBuilder concreteInt16Builder( + final Int16TypeDefinition baseType, final SchemaPath path) { + return new ConcreteTypeBuilder(baseType, path) { + @Nonnull + @Override + public Int16TypeDefinition buildType() { + return new DerivedInt16Type(getBaseType(), getPath(), getDefaultValue(), getDescription(), + getReference(), getStatus(), getUnits(), getUnknownSchemaNodes()); + } + }; + } + + private static ConcreteTypeBuilder concreteInt32Builder( + final Int32TypeDefinition baseType, final SchemaPath path) { + return new ConcreteTypeBuilder(baseType, path) { + @Nonnull + @Override + public Int32TypeDefinition buildType() { + return new DerivedInt32Type(getBaseType(), getPath(), getDefaultValue(), getDescription(), + getReference(), getStatus(), getUnits(), getUnknownSchemaNodes()); + } + }; + } + + private static ConcreteTypeBuilder concreteInt64Builder( + final Int64TypeDefinition baseType, final SchemaPath path) { + return new ConcreteTypeBuilder(baseType, path) { + @Nonnull + @Override + public Int64TypeDefinition buildType() { + return new DerivedInt64Type(getBaseType(), getPath(), getDefaultValue(), getDescription(), getReference(), getStatus(), getUnits(), getUnknownSchemaNodes()); } }; @@ -211,13 +265,49 @@ public final class ConcreteTypes { }; } - private static ConcreteTypeBuilder concreteUnsignedBuilder( - final UnsignedIntegerTypeDefinition baseType, final SchemaPath path) { - return new ConcreteTypeBuilder(baseType, path) { + private static ConcreteTypeBuilder concreteUint8Builder( + final Uint8TypeDefinition baseType, final SchemaPath path) { + return new ConcreteTypeBuilder(baseType, path) { + @Nonnull + @Override + public Uint8TypeDefinition buildType() { + return new DerivedUint8Type(getBaseType(), getPath(), getDefaultValue(), getDescription(), + getReference(), getStatus(), getUnits(), getUnknownSchemaNodes()); + } + }; + } + + private static ConcreteTypeBuilder concreteUint16Builder( + final Uint16TypeDefinition baseType, final SchemaPath path) { + return new ConcreteTypeBuilder(baseType, path) { + @Nonnull + @Override + public Uint16TypeDefinition buildType() { + return new DerivedUint16Type(getBaseType(), getPath(), getDefaultValue(), getDescription(), + getReference(), getStatus(), getUnits(), getUnknownSchemaNodes()); + } + }; + } + + private static ConcreteTypeBuilder concreteUint32Builder( + final Uint32TypeDefinition baseType, final SchemaPath path) { + return new ConcreteTypeBuilder(baseType, path) { + @Nonnull + @Override + public Uint32TypeDefinition buildType() { + return new DerivedUint32Type(getBaseType(), getPath(), getDefaultValue(), getDescription(), + getReference(), getStatus(), getUnits(), getUnknownSchemaNodes()); + } + }; + } + + private static ConcreteTypeBuilder concreteUint64Builder( + final Uint64TypeDefinition baseType, final SchemaPath path) { + return new ConcreteTypeBuilder(baseType, path) { @Nonnull @Override - public UnsignedIntegerTypeDefinition buildType() { - return new DerivedUnsignedType(getBaseType(), getPath(), getDefaultValue(), getDescription(), + public Uint64TypeDefinition buildType() { + return new DerivedUint64Type(getBaseType(), getPath(), getDefaultValue(), getDescription(), getReference(), getStatus(), getUnits(), getUnknownSchemaNodes()); } }; diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedIntegerType.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedInt16Type.java similarity index 72% rename from yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedIntegerType.java rename to yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedInt16Type.java index 02c64c854e..ac9e54f06e 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedIntegerType.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedInt16Type.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Pantheon Technologies s.r.o. and others. All rights reserved. + * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -11,11 +11,11 @@ import java.util.Collection; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition; -final class DerivedIntegerType extends AbstractRangeRestrictedDerivedType - implements IntegerTypeDefinition { - DerivedIntegerType(final IntegerTypeDefinition baseType, final SchemaPath path, final Object defaultValue, +final class DerivedInt16Type extends AbstractRangeRestrictedDerivedType + implements Int16TypeDefinition { + DerivedInt16Type(final Int16TypeDefinition baseType, final SchemaPath path, final Object defaultValue, final String description, final String reference, final Status status, final String units, final Collection unknownSchemaNodes) { super(baseType, path, defaultValue, description, reference, status, units, unknownSchemaNodes); diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedInt32Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedInt32Type.java new file mode 100644 index 0000000000..08a5f866ea --- /dev/null +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedInt32Type.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.util.type; + +import java.util.Collection; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.Status; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; +import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition; + +final class DerivedInt32Type extends AbstractRangeRestrictedDerivedType + implements Int32TypeDefinition { + DerivedInt32Type(final Int32TypeDefinition baseType, final SchemaPath path, final Object defaultValue, + final String description, final String reference, final Status status, final String units, + final Collection unknownSchemaNodes) { + super(baseType, path, defaultValue, description, reference, status, units, unknownSchemaNodes); + } + + @Override + public int hashCode() { + return TypeDefinitions.hashCode(this); + } + + @Override + public boolean equals(final Object obj) { + return TypeDefinitions.equals(this, obj); + } +} diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedInt64Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedInt64Type.java new file mode 100644 index 0000000000..cacda59025 --- /dev/null +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedInt64Type.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.util.type; + +import java.util.Collection; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.Status; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; +import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition; + +final class DerivedInt64Type extends AbstractRangeRestrictedDerivedType + implements Int64TypeDefinition { + DerivedInt64Type(final Int64TypeDefinition baseType, final SchemaPath path, final Object defaultValue, + final String description, final String reference, final Status status, final String units, + final Collection unknownSchemaNodes) { + super(baseType, path, defaultValue, description, reference, status, units, unknownSchemaNodes); + } + + @Override + public int hashCode() { + return TypeDefinitions.hashCode(this); + } + + @Override + public boolean equals(final Object obj) { + return TypeDefinitions.equals(this, obj); + } +} diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedInt8Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedInt8Type.java new file mode 100644 index 0000000000..e8a6d8b1ef --- /dev/null +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedInt8Type.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.util.type; + +import java.util.Collection; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.Status; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; +import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition; + +final class DerivedInt8Type extends AbstractRangeRestrictedDerivedType + implements Int8TypeDefinition { + DerivedInt8Type(final Int8TypeDefinition baseType, final SchemaPath path, final Object defaultValue, + final String description, final String reference, final Status status, final String units, + final Collection unknownSchemaNodes) { + super(baseType, path, defaultValue, description, reference, status, units, unknownSchemaNodes); + } + + @Override + public int hashCode() { + return TypeDefinitions.hashCode(this); + } + + @Override + public boolean equals(final Object obj) { + return TypeDefinitions.equals(this, obj); + } +} diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedTypes.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedTypes.java index 2c762c113a..5b2a3b69f6 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedTypes.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedTypes.java @@ -7,6 +7,8 @@ */ package org.opendaylight.yangtools.yang.model.util.type; +import static java.util.Objects.requireNonNull; + import com.google.common.annotations.Beta; import javax.annotation.Nonnull; import org.opendaylight.yangtools.yang.model.api.SchemaPath; @@ -19,11 +21,17 @@ import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; /** * YANG defines 'derived type' as a type created through a 'typedef' statement. These types are exposed in the @@ -59,115 +67,143 @@ public final class DerivedTypes { return derivedIdentityrefBuilder((IdentityrefTypeDefinition) baseType, path); } else if (baseType instanceof InstanceIdentifierTypeDefinition) { return derivedInstanceIdentifierBuilder((InstanceIdentifierTypeDefinition) baseType, path); - } else if (baseType instanceof IntegerTypeDefinition) { - return derivedIntegerBuilder((IntegerTypeDefinition) baseType, path); + } else if (baseType instanceof Int8TypeDefinition) { + return derivedInt8Builder((Int8TypeDefinition) baseType, path); + } else if (baseType instanceof Int16TypeDefinition) { + return derivedInt16Builder((Int16TypeDefinition) baseType, path); + } else if (baseType instanceof Int32TypeDefinition) { + return derivedInt32Builder((Int32TypeDefinition) baseType, path); + } else if (baseType instanceof Int64TypeDefinition) { + return derivedInt64Builder((Int64TypeDefinition) baseType, path); } else if (baseType instanceof LeafrefTypeDefinition) { return derivedLeafrefBuilder((LeafrefTypeDefinition) baseType, path); } else if (baseType instanceof StringTypeDefinition) { return derivedStringBuilder((StringTypeDefinition) baseType, path); } else if (baseType instanceof UnionTypeDefinition) { return derivedUnionBuilder((UnionTypeDefinition) baseType, path); - } else if (baseType instanceof UnsignedIntegerTypeDefinition) { - return derivedUnsignedBuilder((UnsignedIntegerTypeDefinition) baseType, path); + } else if (baseType instanceof Uint8TypeDefinition) { + return derivedUint8Builder((Uint8TypeDefinition) baseType, path); + } else if (baseType instanceof Uint16TypeDefinition) { + return derivedUint16Builder((Uint16TypeDefinition) baseType, path); + } else if (baseType instanceof Uint32TypeDefinition) { + return derivedUint32Builder((Uint32TypeDefinition) baseType, path); + } else if (baseType instanceof Uint64TypeDefinition) { + return derivedUint64Builder((Uint64TypeDefinition) baseType, path); } else { throw new IllegalArgumentException("Unhandled type definition class " + baseType.getClass()); } } /** - * Check if a particular type is corresponds to int8. Unlike {@link BaseTypes#isInt8(TypeDefinition)}, this - * method performs recursive lookup to find the base type. + * Check if a particular type is itself, or is derived from, int8. * * @param type The type to check * @return If the type belongs to the int8 type family. * @throws NullPointerException if type is null + * + * @deprecated Use @{code type instanceof Int8TypeDefinition} instead. */ + @Deprecated public static boolean isInt8(@Nonnull final TypeDefinition type) { - return BaseTypes.isInt8(BaseTypes.baseTypeOf(type)); + return requireNonNull(type) instanceof Int8TypeDefinition; } /** - * Check if a particular type is corresponds to int16. Unlike {@link BaseTypes#isInt16(TypeDefinition)}, this - * method performs recursive lookup to find the base type. + * Check if a particular type is itself, or is derived from, int16. * * @param type The type to check * @return If the type belongs to the int16 type family. * @throws NullPointerException if type is null + * + * @deprecated Use @{code type instanceof Int16TypeDefinition} instead. */ + @Deprecated public static boolean isInt16(@Nonnull final TypeDefinition type) { - return BaseTypes.isInt16(BaseTypes.baseTypeOf(type)); + return requireNonNull(type) instanceof Int16TypeDefinition; } /** - * Check if a particular type is corresponds to int32. Unlike {@link BaseTypes#isInt32(TypeDefinition)}, this - * method performs recursive lookup to find the base type. + * Check if a particular type is itself, or is derived from, int32. * * @param type The type to check * @return If the type belongs to the int32 type family. * @throws NullPointerException if type is null + * + * @deprecated Use @{code type instanceof Int32TypeDefinition} instead. */ + @Deprecated public static boolean isInt32(@Nonnull final TypeDefinition type) { - return BaseTypes.isInt32(BaseTypes.baseTypeOf(type)); + return requireNonNull(type) instanceof Int32TypeDefinition; } /** - * Check if a particular type is corresponds to int64. Unlike {@link BaseTypes#isInt64(TypeDefinition)}, this - * method performs recursive lookup to find the base type. + * Check if a particular type is itself, or is derived from, int64. * * @param type The type to check * @return If the type belongs to the int64 type family. * @throws NullPointerException if type is null + * + * @deprecated Use @{code type instanceof Int64TypeDefinition} instead. */ + @Deprecated public static boolean isInt64(@Nonnull final TypeDefinition type) { - return BaseTypes.isInt64(BaseTypes.baseTypeOf(type)); + return requireNonNull(type) instanceof Int64TypeDefinition; } /** - * Check if a particular type is corresponds to uint8. Unlike {@link BaseTypes#isUint8(TypeDefinition)}, this - * method performs recursive lookup to find the base type. + * Check if a particular type is itself, or is derived from, uint8. * * @param type The type to check * @return If the type belongs to the uint8 type family. * @throws NullPointerException if type is null + * + * @deprecated Use @{code type instanceof Uint8TypeDefinition} instead. */ + @Deprecated public static boolean isUint8(@Nonnull final TypeDefinition type) { - return BaseTypes.isUint8(BaseTypes.baseTypeOf(type)); + return requireNonNull(type) instanceof Uint8TypeDefinition; } /** - * Check if a particular type is corresponds to uint16. Unlike {@link BaseTypes#isUint16(TypeDefinition)}, this - * method performs recursive lookup to find the base type. + * Check if a particular type is itself, or is derived from, uint16. * * @param type The type to check * @return If the type belongs to the uint16 type family. * @throws NullPointerException if type is null + * + * @deprecated Use @{code type instanceof Uint16TypeDefinition} instead. */ + @Deprecated public static boolean isUint16(@Nonnull final TypeDefinition type) { - return BaseTypes.isUint16(BaseTypes.baseTypeOf(type)); + return requireNonNull(type) instanceof Uint16TypeDefinition; } /** - * Check if a particular type is corresponds to uint32. Unlike {@link BaseTypes#isUint32(TypeDefinition)}, this - * method performs recursive lookup to find the base type. + * Check if a particular type is itself, or is derived from, uint32. * * @param type The type to check * @return If the type belongs to the uint32 type family. * @throws NullPointerException if type is null + * + * @deprecated Use @{code type instanceof Uint32TypeDefinition} instead. */ + @Deprecated public static boolean isUint32(@Nonnull final TypeDefinition type) { - return BaseTypes.isUint32(BaseTypes.baseTypeOf(type)); + return requireNonNull(type) instanceof Uint32TypeDefinition; } /** - * Check if a particular type is corresponds to uint64. Unlike {@link BaseTypes#isUint64(TypeDefinition)}, this - * method performs recursive lookup to find the base type. + * Check if a particular type is itself, or is derived from, uint64. * * @param type The type to check * @return If the type belongs to the uint64 type family. * @throws NullPointerException if type is null + * + * @deprecated Use @{code type instanceof Uint64TypeDefinition} instead. */ + @Deprecated public static boolean isUint64(@Nonnull final TypeDefinition type) { - return BaseTypes.isUint64(BaseTypes.baseTypeOf(type)); + return requireNonNull(type) instanceof Uint64TypeDefinition; } private static DerivedTypeBuilder derivedBinaryBuilder( @@ -258,12 +294,45 @@ public final class DerivedTypes { }; } - private static DerivedTypeBuilder derivedIntegerBuilder(final IntegerTypeDefinition baseType, + private static DerivedTypeBuilder derivedInt8Builder(final Int8TypeDefinition baseType, + final SchemaPath path) { + return new DerivedTypeBuilder(baseType, path) { + @Override + public Int8TypeDefinition build() { + return new DerivedInt8Type(getBaseType(), getPath(), getDefaultValue(), getDescription(), + getReference(), getStatus(), getUnits(), getUnknownSchemaNodes()); + } + }; + } + + private static DerivedTypeBuilder derivedInt16Builder(final Int16TypeDefinition baseType, + final SchemaPath path) { + return new DerivedTypeBuilder(baseType, path) { + @Override + public Int16TypeDefinition build() { + return new DerivedInt16Type(getBaseType(), getPath(), getDefaultValue(), getDescription(), + getReference(), getStatus(), getUnits(), getUnknownSchemaNodes()); + } + }; + } + + private static DerivedTypeBuilder derivedInt32Builder(final Int32TypeDefinition baseType, + final SchemaPath path) { + return new DerivedTypeBuilder(baseType, path) { + @Override + public Int32TypeDefinition build() { + return new DerivedInt32Type(getBaseType(), getPath(), getDefaultValue(), getDescription(), + getReference(), getStatus(), getUnits(), getUnknownSchemaNodes()); + } + }; + } + + private static DerivedTypeBuilder derivedInt64Builder(final Int64TypeDefinition baseType, final SchemaPath path) { - return new DerivedTypeBuilder(baseType, path) { + return new DerivedTypeBuilder(baseType, path) { @Override - public IntegerTypeDefinition build() { - return new DerivedIntegerType(getBaseType(), getPath(), getDefaultValue(), getDescription(), + public Int64TypeDefinition build() { + return new DerivedInt64Type(getBaseType(), getPath(), getDefaultValue(), getDescription(), getReference(), getStatus(), getUnits(), getUnknownSchemaNodes()); } }; @@ -302,12 +371,45 @@ public final class DerivedTypes { }; } - private static DerivedTypeBuilder derivedUnsignedBuilder( - final UnsignedIntegerTypeDefinition baseType, final SchemaPath path) { - return new DerivedTypeBuilder(baseType, path) { + private static DerivedTypeBuilder derivedUint8Builder( + final Uint8TypeDefinition baseType, final SchemaPath path) { + return new DerivedTypeBuilder(baseType, path) { + @Override + public Uint8TypeDefinition build() { + return new DerivedUint8Type(getBaseType(), getPath(), getDefaultValue(), getDescription(), + getReference(), getStatus(), getUnits(), getUnknownSchemaNodes()); + } + }; + } + + private static DerivedTypeBuilder derivedUint16Builder( + final Uint16TypeDefinition baseType, final SchemaPath path) { + return new DerivedTypeBuilder(baseType, path) { + @Override + public Uint16TypeDefinition build() { + return new DerivedUint16Type(getBaseType(), getPath(), getDefaultValue(), getDescription(), + getReference(), getStatus(), getUnits(), getUnknownSchemaNodes()); + } + }; + } + + private static DerivedTypeBuilder derivedUint32Builder( + final Uint32TypeDefinition baseType, final SchemaPath path) { + return new DerivedTypeBuilder(baseType, path) { + @Override + public Uint32TypeDefinition build() { + return new DerivedUint32Type(getBaseType(), getPath(), getDefaultValue(), getDescription(), + getReference(), getStatus(), getUnits(), getUnknownSchemaNodes()); + } + }; + } + + private static DerivedTypeBuilder derivedUint64Builder( + final Uint64TypeDefinition baseType, final SchemaPath path) { + return new DerivedTypeBuilder(baseType, path) { @Override - public UnsignedIntegerTypeDefinition build() { - return new DerivedUnsignedType(getBaseType(), getPath(), getDefaultValue(), getDescription(), + public Uint64TypeDefinition build() { + return new DerivedUint64Type(getBaseType(), getPath(), getDefaultValue(), getDescription(), getReference(), getStatus(), getUnits(), getUnknownSchemaNodes()); } }; diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUnsignedType.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUint16Type.java similarity index 72% rename from yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUnsignedType.java rename to yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUint16Type.java index 67e6ee2ac0..60e067ff8c 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUnsignedType.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUint16Type.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Pantheon Technologies s.r.o. and others. All rights reserved. + * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -11,12 +11,12 @@ import java.util.Collection; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition; -final class DerivedUnsignedType extends AbstractRangeRestrictedDerivedType - implements UnsignedIntegerTypeDefinition { +final class DerivedUint16Type extends AbstractRangeRestrictedDerivedType + implements Uint16TypeDefinition { - DerivedUnsignedType(final UnsignedIntegerTypeDefinition baseType, final SchemaPath path, + DerivedUint16Type(final Uint16TypeDefinition baseType, final SchemaPath path, final Object defaultValue, final String description, final String reference, final Status status, final String units, final Collection unknownSchemaNodes) { super(baseType, path, defaultValue, description, reference, status, units, unknownSchemaNodes); diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUint32Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUint32Type.java new file mode 100644 index 0000000000..0d49a421da --- /dev/null +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUint32Type.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.util.type; + +import java.util.Collection; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.Status; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; + +final class DerivedUint32Type extends AbstractRangeRestrictedDerivedType + implements Uint32TypeDefinition { + + DerivedUint32Type(final Uint32TypeDefinition baseType, final SchemaPath path, + final Object defaultValue, final String description, final String reference, final Status status, + final String units, final Collection unknownSchemaNodes) { + super(baseType, path, defaultValue, description, reference, status, units, unknownSchemaNodes); + } + + @Override + public int hashCode() { + return TypeDefinitions.hashCode(this); + } + + @Override + public boolean equals(final Object obj) { + return TypeDefinitions.equals(this, obj); + } +} diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUint64Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUint64Type.java new file mode 100644 index 0000000000..2ec81b63d2 --- /dev/null +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUint64Type.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.util.type; + +import java.util.Collection; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.Status; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; +import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition; + +final class DerivedUint64Type extends AbstractRangeRestrictedDerivedType + implements Uint64TypeDefinition { + + DerivedUint64Type(final Uint64TypeDefinition baseType, final SchemaPath path, + final Object defaultValue, final String description, final String reference, final Status status, + final String units, final Collection unknownSchemaNodes) { + super(baseType, path, defaultValue, description, reference, status, units, unknownSchemaNodes); + } + + @Override + public int hashCode() { + return TypeDefinitions.hashCode(this); + } + + @Override + public boolean equals(final Object obj) { + return TypeDefinitions.equals(this, obj); + } +} diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUint8Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUint8Type.java new file mode 100644 index 0000000000..d1b6f11305 --- /dev/null +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/DerivedUint8Type.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.util.type; + +import java.util.Collection; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.Status; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; +import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; + +final class DerivedUint8Type extends AbstractRangeRestrictedDerivedType + implements Uint8TypeDefinition { + + DerivedUint8Type(final Uint8TypeDefinition baseType, final SchemaPath path, + final Object defaultValue, final String description, final String reference, final Status status, + final String units, final Collection unknownSchemaNodes) { + super(baseType, path, defaultValue, description, reference, status, units, unknownSchemaNodes); + } + + @Override + public int hashCode() { + return TypeDefinitions.hashCode(this); + } + + @Override + public boolean equals(final Object obj) { + return TypeDefinitions.equals(this, obj); + } +} diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedIntegerType.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedInt16Type.java similarity index 74% rename from yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedIntegerType.java rename to yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedInt16Type.java index d4c22a6bfd..ff8b651667 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedIntegerType.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedInt16Type.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Pantheon Technologies s.r.o. and others. All rights reserved. + * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -11,12 +11,12 @@ import java.util.Collection; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; -final class RestrictedIntegerType extends AbstractRangeRestrictedType - implements IntegerTypeDefinition { - RestrictedIntegerType(final IntegerTypeDefinition baseType, final SchemaPath path, +final class RestrictedInt16Type extends AbstractRangeRestrictedType + implements Int16TypeDefinition { + RestrictedInt16Type(final Int16TypeDefinition baseType, final SchemaPath path, final Collection unknownSchemaNodes, final @Nullable RangeConstraint rangeConstraint) { super(baseType, path, unknownSchemaNodes, rangeConstraint); } diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedInt32Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedInt32Type.java new file mode 100644 index 0000000000..e57b4cc21e --- /dev/null +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedInt32Type.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.util.type; + +import java.util.Collection; +import org.eclipse.jdt.annotation.Nullable; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; +import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; + +final class RestrictedInt32Type extends AbstractRangeRestrictedType + implements Int32TypeDefinition { + RestrictedInt32Type(final Int32TypeDefinition baseType, final SchemaPath path, + final Collection unknownSchemaNodes, final @Nullable RangeConstraint rangeConstraint) { + super(baseType, path, unknownSchemaNodes, rangeConstraint); + } + + @Override + public int hashCode() { + return TypeDefinitions.hashCode(this); + } + + @Override + public boolean equals(final Object obj) { + return TypeDefinitions.equals(this, obj); + } + + @Override + public String toString() { + return TypeDefinitions.toString(this); + } +} diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedInt64Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedInt64Type.java new file mode 100644 index 0000000000..07081ec9bc --- /dev/null +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedInt64Type.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.util.type; + +import java.util.Collection; +import org.eclipse.jdt.annotation.Nullable; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; +import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; + +final class RestrictedInt64Type extends AbstractRangeRestrictedType + implements Int64TypeDefinition { + RestrictedInt64Type(final Int64TypeDefinition baseType, final SchemaPath path, + final Collection unknownSchemaNodes, final @Nullable RangeConstraint rangeConstraint) { + super(baseType, path, unknownSchemaNodes, rangeConstraint); + } + + @Override + public int hashCode() { + return TypeDefinitions.hashCode(this); + } + + @Override + public boolean equals(final Object obj) { + return TypeDefinitions.equals(this, obj); + } + + @Override + public String toString() { + return TypeDefinitions.toString(this); + } +} diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedInt8Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedInt8Type.java new file mode 100644 index 0000000000..cb6ec18143 --- /dev/null +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedInt8Type.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.util.type; + +import java.util.Collection; +import org.eclipse.jdt.annotation.Nullable; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; +import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; + +final class RestrictedInt8Type extends AbstractRangeRestrictedType implements Int8TypeDefinition { + RestrictedInt8Type(final Int8TypeDefinition baseType, final SchemaPath path, + final Collection unknownSchemaNodes, final @Nullable RangeConstraint rangeConstraint) { + super(baseType, path, unknownSchemaNodes, rangeConstraint); + } + + @Override + public int hashCode() { + return TypeDefinitions.hashCode(this); + } + + @Override + public boolean equals(final Object obj) { + return TypeDefinitions.equals(this, obj); + } + + @Override + public String toString() { + return TypeDefinitions.toString(this); + } +} diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedTypes.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedTypes.java index 1bba04d09a..b539ba4d2f 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedTypes.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedTypes.java @@ -19,13 +19,19 @@ import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; /** * Restricted types are a refinement of the restrictions applied to a particular type. YANG defines restrictions only @@ -153,12 +159,42 @@ public final class RestrictedTypes { }; } - public static RangeRestrictedTypeBuilder newIntegerBuilder( - final IntegerTypeDefinition baseType, final SchemaPath path) { - return new RangeRestrictedTypeBuilderWithBase(baseType, path) { + public static RangeRestrictedTypeBuilder newInt8Builder( + final Int8TypeDefinition baseType, final SchemaPath path) { + return new RangeRestrictedTypeBuilderWithBase(baseType, path) { @Override - IntegerTypeDefinition buildType(final RangeConstraint rangeConstraint) { - return new RestrictedIntegerType(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint); + Int8TypeDefinition buildType(final RangeConstraint rangeConstraint) { + return new RestrictedInt8Type(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint); + } + }; + } + + public static RangeRestrictedTypeBuilder newInt16Builder( + final Int16TypeDefinition baseType, final SchemaPath path) { + return new RangeRestrictedTypeBuilderWithBase(baseType, path) { + @Override + Int16TypeDefinition buildType(final RangeConstraint rangeConstraint) { + return new RestrictedInt16Type(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint); + } + }; + } + + public static RangeRestrictedTypeBuilder newInt32Builder( + final Int32TypeDefinition baseType, final SchemaPath path) { + return new RangeRestrictedTypeBuilderWithBase(baseType, path) { + @Override + Int32TypeDefinition buildType(final RangeConstraint rangeConstraint) { + return new RestrictedInt32Type(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint); + } + }; + } + + public static RangeRestrictedTypeBuilder newInt64Builder( + final Int64TypeDefinition baseType, final SchemaPath path) { + return new RangeRestrictedTypeBuilderWithBase(baseType, path) { + @Override + Int64TypeDefinition buildType(final RangeConstraint rangeConstraint) { + return new RestrictedInt64Type(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint); } }; } @@ -177,12 +213,42 @@ public final class RestrictedTypes { }; } - public static RangeRestrictedTypeBuilder newUnsignedBuilder( - final UnsignedIntegerTypeDefinition baseType, final SchemaPath path) { - return new RangeRestrictedTypeBuilderWithBase(baseType, path) { + public static RangeRestrictedTypeBuilder newUint8Builder( + final Uint8TypeDefinition baseType, final SchemaPath path) { + return new RangeRestrictedTypeBuilderWithBase(baseType, path) { + @Override + Uint8TypeDefinition buildType(final RangeConstraint rangeConstraint) { + return new RestrictedUint8Type(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint); + } + }; + } + + public static RangeRestrictedTypeBuilder newUint16Builder( + final Uint16TypeDefinition baseType, final SchemaPath path) { + return new RangeRestrictedTypeBuilderWithBase(baseType, path) { + @Override + Uint16TypeDefinition buildType(final RangeConstraint rangeConstraint) { + return new RestrictedUint16Type(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint); + } + }; + } + + public static RangeRestrictedTypeBuilder newUint32Builder( + final Uint32TypeDefinition baseType, final SchemaPath path) { + return new RangeRestrictedTypeBuilderWithBase(baseType, path) { + @Override + Uint32TypeDefinition buildType(final RangeConstraint rangeConstraint) { + return new RestrictedUint32Type(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint); + } + }; + } + + public static RangeRestrictedTypeBuilder newUint64Builder( + final Uint64TypeDefinition baseType, final SchemaPath path) { + return new RangeRestrictedTypeBuilderWithBase(baseType, path) { @Override - UnsignedIntegerTypeDefinition buildType(final RangeConstraint rangeConstraint) { - return new RestrictedUnsignedType(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint); + Uint64TypeDefinition buildType(final RangeConstraint rangeConstraint) { + return new RestrictedUint64Type(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint); } }; } diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUnsignedType.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUint16Type.java similarity index 73% rename from yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUnsignedType.java rename to yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUint16Type.java index 542bdccf6e..3352a9ce98 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUnsignedType.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUint16Type.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Pantheon Technologies s.r.o. and others. All rights reserved. + * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -12,12 +12,12 @@ import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition; -final class RestrictedUnsignedType extends AbstractRangeRestrictedType - implements UnsignedIntegerTypeDefinition { +final class RestrictedUint16Type extends AbstractRangeRestrictedType + implements Uint16TypeDefinition { - RestrictedUnsignedType(final UnsignedIntegerTypeDefinition baseType, final SchemaPath path, + RestrictedUint16Type(final Uint16TypeDefinition baseType, final SchemaPath path, final Collection unknownSchemaNodes, final @Nullable RangeConstraint rangeConstraint) { super(baseType, path, unknownSchemaNodes, rangeConstraint); } diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUint32Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUint32Type.java new file mode 100644 index 0000000000..8513d7329b --- /dev/null +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUint32Type.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.util.type; + +import java.util.Collection; +import org.eclipse.jdt.annotation.Nullable; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; +import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; + +final class RestrictedUint32Type extends AbstractRangeRestrictedType + implements Uint32TypeDefinition { + + RestrictedUint32Type(final Uint32TypeDefinition baseType, final SchemaPath path, + final Collection unknownSchemaNodes, final @Nullable RangeConstraint rangeConstraint) { + super(baseType, path, unknownSchemaNodes, rangeConstraint); + } + + @Override + public int hashCode() { + return TypeDefinitions.hashCode(this); + } + + @Override + public boolean equals(final Object obj) { + return TypeDefinitions.equals(this, obj); + } + + @Override + public String toString() { + return TypeDefinitions.toString(this); + } +} diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUint64Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUint64Type.java new file mode 100644 index 0000000000..7be6a95bd7 --- /dev/null +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUint64Type.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.util.type; + +import java.util.Collection; +import org.eclipse.jdt.annotation.Nullable; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; +import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; +import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition; + +final class RestrictedUint64Type extends AbstractRangeRestrictedType + implements Uint64TypeDefinition { + + RestrictedUint64Type(final Uint64TypeDefinition baseType, final SchemaPath path, + final Collection unknownSchemaNodes, final @Nullable RangeConstraint rangeConstraint) { + super(baseType, path, unknownSchemaNodes, rangeConstraint); + } + + @Override + public int hashCode() { + return TypeDefinitions.hashCode(this); + } + + @Override + public boolean equals(final Object obj) { + return TypeDefinitions.equals(this, obj); + } + + @Override + public String toString() { + return TypeDefinitions.toString(this); + } +} diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUint8Type.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUint8Type.java new file mode 100644 index 0000000000..7d28055fa4 --- /dev/null +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedUint8Type.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.model.util.type; + +import java.util.Collection; +import org.eclipse.jdt.annotation.Nullable; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; +import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; +import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; + +final class RestrictedUint8Type extends AbstractRangeRestrictedType + implements Uint8TypeDefinition { + + RestrictedUint8Type(final Uint8TypeDefinition baseType, final SchemaPath path, + final Collection unknownSchemaNodes, final @Nullable RangeConstraint rangeConstraint) { + super(baseType, path, unknownSchemaNodes, rangeConstraint); + } + + @Override + public int hashCode() { + return TypeDefinitions.hashCode(this); + } + + @Override + public boolean equals(final Object obj) { + return TypeDefinitions.equals(this, obj); + } + + @Override + public String toString() { + return TypeDefinitions.toString(this); + } +} diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/TypeDefinitions.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/TypeDefinitions.java index 3404bb53e7..a1e737466a 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/TypeDefinitions.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/TypeDefinitions.java @@ -101,7 +101,7 @@ final class TypeDefinitions { type.getUnits().orElse(null), type.getDefaultValue().orElse(null), type.requireInstance()); } - static int hashCode(final IntegerTypeDefinition type) { + static int hashCode(final IntegerTypeDefinition type) { return Objects.hash(type.getPath(), type.getUnknownSchemaNodes(), type.getBaseType(), type.getUnits().orElse(null), type.getDefaultValue().orElse(null), type.getRangeConstraint().orElse(null)); } @@ -122,7 +122,7 @@ final class TypeDefinitions { type.getUnits().orElse(null), type.getDefaultValue().orElse(null), type.getTypes()); } - static int hashCode(final UnsignedIntegerTypeDefinition type) { + static int hashCode(final UnsignedIntegerTypeDefinition type) { return Objects.hash(type.getPath(), type.getUnknownSchemaNodes(), type.getBaseType(), type.getUnits(), type.getDefaultValue(), type.getRangeConstraint()); } @@ -269,7 +269,7 @@ final class TypeDefinitions { return toStringHelper(type).add("requireInstance", type.requireInstance()).toString(); } - static String toString(final IntegerTypeDefinition type) { + static String toString(final IntegerTypeDefinition type) { return toStringHelper(type).add("range", type.getRangeConstraint().orElse(null)).toString(); } @@ -286,7 +286,7 @@ final class TypeDefinitions { return toStringHelper(type).add("types", type.getTypes()).toString(); } - static String toString(final UnsignedIntegerTypeDefinition type) { + static String toString(final UnsignedIntegerTypeDefinition type) { return toStringHelper(type).add("range", type.getRangeConstraint().orElse(null)).toString(); } } diff --git a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/Int8Test.java b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/Int8Test.java index 9387c7827c..c2990c11d6 100644 --- a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/Int8Test.java +++ b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/Int8Test.java @@ -13,15 +13,15 @@ import static org.junit.Assert.assertSame; import java.util.Optional; import org.junit.Test; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition; import org.opendaylight.yangtools.yang.model.util.type.BaseTypes; public class Int8Test { @Test public void testInt8() { - IntegerTypeDefinition int8 = BaseTypes.int8Type(); - IntegerTypeDefinition int8Second = BaseTypes.int8Type(); + Int8TypeDefinition int8 = BaseTypes.int8Type(); + Int8TypeDefinition int8Second = BaseTypes.int8Type(); assertSame("The method 'getInstance()' has to return the same instance", int8, int8Second); assertNull("The method 'getBaseType()' is returning incorrect value", int8.getBaseType()); assertEquals("The method 'getDefaultType()' is returning incorrect value", Optional.empty(), diff --git a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/type/TypeTest.java b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/type/TypeTest.java index 49919df902..667e8c31bd 100644 --- a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/type/TypeTest.java +++ b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/type/TypeTest.java @@ -39,10 +39,16 @@ import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition.Bit; import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair; import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint; import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; import org.opendaylight.yangtools.yang.model.util.BaseConstraints; import org.opendaylight.yangtools.yang.model.util.RevisionAwareXPathImpl; @@ -191,10 +197,10 @@ public class TypeTest { @Test public void integerTypeTest() { - final IntegerTypeDefinition integerTypeDefinition8 = BaseTypes.int8Type(); - final IntegerTypeDefinition integerTypeDefinition16 = BaseTypes.int16Type(); - final IntegerTypeDefinition integerTypeDefinition32 = BaseTypes.int32Type(); - final IntegerTypeDefinition integerTypeDefinition64 = BaseTypes.int64Type(); + final Int8TypeDefinition integerTypeDefinition8 = BaseTypes.int8Type(); + final Int16TypeDefinition integerTypeDefinition16 = BaseTypes.int16Type(); + final Int32TypeDefinition integerTypeDefinition32 = BaseTypes.int32Type(); + final Int64TypeDefinition integerTypeDefinition64 = BaseTypes.int64Type(); assertTrue(BaseTypes.isInt8(integerTypeDefinition8)); assertTrue(BaseTypes.isInt16(integerTypeDefinition16)); assertTrue(BaseTypes.isInt32(integerTypeDefinition32)); @@ -204,16 +210,16 @@ public class TypeTest { testInstance(BaseInt32Type.INSTANCE, integerTypeDefinition32); testInstance(BaseInt64Type.INSTANCE, integerTypeDefinition64); - final RestrictedIntegerType restrictedIntegerType1 = (RestrictedIntegerType)RestrictedTypes.newIntegerBuilder( + final RestrictedInt8Type restrictedIntegerType1 = (RestrictedInt8Type)RestrictedTypes.newInt8Builder( integerTypeDefinition8, SCHEMA_PATH).buildType(); - final RestrictedIntegerType restrictedIntegerType2 = (RestrictedIntegerType)RestrictedTypes.newIntegerBuilder( + final RestrictedInt8Type restrictedIntegerType2 = (RestrictedInt8Type)RestrictedTypes.newInt8Builder( BaseInt8Type.INSTANCE, SCHEMA_PATH).buildType(); hashCodeEqualsToStringTest(restrictedIntegerType1, restrictedIntegerType2); - final UnsignedIntegerTypeDefinition integerTypeDefinitionu8 = BaseTypes.uint8Type(); - final UnsignedIntegerTypeDefinition integerTypeDefinitionu16 = BaseTypes.uint16Type(); - final UnsignedIntegerTypeDefinition integerTypeDefinitionu32 = BaseTypes.uint32Type(); - final UnsignedIntegerTypeDefinition integerTypeDefinitionu64 = BaseTypes.uint64Type(); + final Uint8TypeDefinition integerTypeDefinitionu8 = BaseTypes.uint8Type(); + final Uint16TypeDefinition integerTypeDefinitionu16 = BaseTypes.uint16Type(); + final Uint32TypeDefinition integerTypeDefinitionu32 = BaseTypes.uint32Type(); + final Uint64TypeDefinition integerTypeDefinitionu64 = BaseTypes.uint64Type(); assertTrue(BaseTypes.isUint8(integerTypeDefinitionu8)); assertTrue(BaseTypes.isUint16(integerTypeDefinitionu16)); assertTrue(BaseTypes.isUint32(integerTypeDefinitionu32)); @@ -223,22 +229,22 @@ public class TypeTest { testInstance(BaseUint32Type.INSTANCE, integerTypeDefinitionu32); testInstance(BaseUint64Type.INSTANCE, BaseTypes.baseTypeOf(integerTypeDefinitionu64)); - final DerivedIntegerType derivedIntegerType1 = (DerivedIntegerType)DerivedTypes + final DerivedInt8Type derivedIntegerType1 = (DerivedInt8Type)DerivedTypes .derivedTypeBuilder(integerTypeDefinition8, SCHEMA_PATH).build(); - final DerivedIntegerType derivedIntegerType2 = (DerivedIntegerType)DerivedTypes + final DerivedInt8Type derivedIntegerType2 = (DerivedInt8Type)DerivedTypes .derivedTypeBuilder(BaseInt8Type.INSTANCE, SCHEMA_PATH).build(); hashCodeEqualsToStringTest(derivedIntegerType1, derivedIntegerType2); - final DerivedUnsignedType derivedUnsignedType1 = (DerivedUnsignedType)DerivedTypes + final DerivedUint8Type derivedUnsignedType1 = (DerivedUint8Type)DerivedTypes .derivedTypeBuilder(integerTypeDefinitionu8, SCHEMA_PATH).build(); - final DerivedUnsignedType derivedUnsignedType2 = (DerivedUnsignedType)DerivedTypes + final DerivedUint8Type derivedUnsignedType2 = (DerivedUint8Type)DerivedTypes .derivedTypeBuilder(BaseUint8Type.INSTANCE, SCHEMA_PATH).build(); hashCodeEqualsToStringTest(derivedUnsignedType1, derivedUnsignedType2); - final RestrictedUnsignedType restrictedUnsignedType1 = (RestrictedUnsignedType)RestrictedTypes - .newUnsignedBuilder(integerTypeDefinitionu8, SCHEMA_PATH).buildType(); - final RestrictedUnsignedType restrictedUnsignedType2 = (RestrictedUnsignedType)RestrictedTypes - .newUnsignedBuilder(BaseUint8Type.INSTANCE, SCHEMA_PATH).buildType(); + final RestrictedUint8Type restrictedUnsignedType1 = (RestrictedUint8Type)RestrictedTypes + .newUint8Builder(integerTypeDefinitionu8, SCHEMA_PATH).buildType(); + final RestrictedUint8Type restrictedUnsignedType2 = (RestrictedUint8Type)RestrictedTypes + .newUint8Builder(BaseUint8Type.INSTANCE, SCHEMA_PATH).buildType(); hashCodeEqualsToStringTest(restrictedUnsignedType1, restrictedUnsignedType2); concreteBuilderTest(integerTypeDefinition8, derivedIntegerType1); concreteBuilderTest(integerTypeDefinitionu8, derivedUnsignedType2); @@ -421,9 +427,9 @@ public class TypeTest { final TypeDefinition typeDefinition = lengthRestrictedTypeBuilder.buildType(); assertNotNull(typeDefinition); - final IntegerTypeDefinition integerTypeDefinition8 = BaseTypes.int8Type(); - final RangeRestrictedTypeBuilder rangeRestrictedTypeBuilder = RestrictedTypes - .newIntegerBuilder(integerTypeDefinition8, SCHEMA_PATH); + final Int8TypeDefinition integerTypeDefinition8 = BaseTypes.int8Type(); + final RangeRestrictedTypeBuilder rangeRestrictedTypeBuilder = RestrictedTypes.newInt8Builder( + integerTypeDefinition8, SCHEMA_PATH); rangeRestrictedTypeBuilder.setRangeConstraint(mock(ConstraintMetaDefinition.class), lengthArrayList); final TypeDefinition typeDefinition1 = rangeRestrictedTypeBuilder.buildType(); assertNotNull(typeDefinition1); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/TypeStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/TypeStatementImpl.java index f2eb454892..71517122fc 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/TypeStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/TypeStatementImpl.java @@ -28,11 +28,17 @@ import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; import org.opendaylight.yangtools.yang.parser.spi.TypeNamespace; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport; @@ -192,16 +198,28 @@ public class TypeStatementImpl extends AbstractDeclaredStatement } else if (baseType instanceof InstanceIdentifierTypeDefinition) { return new InstanceIdentifierTypeEffectiveStatementImpl(ctx, (InstanceIdentifierTypeDefinition) baseType); - } else if (baseType instanceof IntegerTypeDefinition) { - return new IntegerTypeEffectiveStatementImpl(ctx, (IntegerTypeDefinition) baseType); + } else if (baseType instanceof Int8TypeDefinition) { + return IntegerTypeEffectiveStatementImpl.create(ctx, (Int8TypeDefinition) baseType); + } else if (baseType instanceof Int16TypeDefinition) { + return IntegerTypeEffectiveStatementImpl.create(ctx, (Int16TypeDefinition) baseType); + } else if (baseType instanceof Int32TypeDefinition) { + return IntegerTypeEffectiveStatementImpl.create(ctx, (Int32TypeDefinition) baseType); + } else if (baseType instanceof Int64TypeDefinition) { + return IntegerTypeEffectiveStatementImpl.create(ctx, (Int64TypeDefinition) baseType); } else if (baseType instanceof LeafrefTypeDefinition) { return new LeafrefTypeEffectiveStatementImpl(ctx, (LeafrefTypeDefinition) baseType); } else if (baseType instanceof StringTypeDefinition) { return new StringTypeEffectiveStatementImpl(ctx, (StringTypeDefinition) baseType); + } else if (baseType instanceof Uint8TypeDefinition) { + return UnsignedIntegerTypeEffectiveStatementImpl.create(ctx, (Uint8TypeDefinition) baseType); + } else if (baseType instanceof Uint16TypeDefinition) { + return UnsignedIntegerTypeEffectiveStatementImpl.create(ctx, (Uint16TypeDefinition) baseType); + } else if (baseType instanceof Uint32TypeDefinition) { + return UnsignedIntegerTypeEffectiveStatementImpl.create(ctx, (Uint32TypeDefinition) baseType); + } else if (baseType instanceof Uint64TypeDefinition) { + return UnsignedIntegerTypeEffectiveStatementImpl.create(ctx, (Uint64TypeDefinition) baseType); } else if (baseType instanceof UnionTypeDefinition) { return new UnionTypeEffectiveStatementImpl(ctx, (UnionTypeDefinition) baseType); - } else if (baseType instanceof UnsignedIntegerTypeDefinition) { - return new UnsignedIntegerTypeEffectiveStatementImpl(ctx, (UnsignedIntegerTypeDefinition) baseType); } else { throw new IllegalStateException("Unhandled base type " + baseType); } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/IntegerTypeEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/IntegerTypeEffectiveStatementImpl.java index 64db59535f..b35d76330b 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/IntegerTypeEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/IntegerTypeEffectiveStatementImpl.java @@ -12,6 +12,10 @@ import javax.annotation.Nonnull; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.TypeEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement; +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; import org.opendaylight.yangtools.yang.model.util.type.InvalidRangeConstraintException; import org.opendaylight.yangtools.yang.model.util.type.RangeRestrictedTypeBuilder; @@ -22,19 +26,16 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.TypeUtils; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.DeclaredEffectiveStatementBase; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.UnknownEffectiveStatementImpl; -public final class IntegerTypeEffectiveStatementImpl extends - DeclaredEffectiveStatementBase implements TypeEffectiveStatement { +public final class IntegerTypeEffectiveStatementImpl> extends + DeclaredEffectiveStatementBase implements TypeEffectiveStatement { - private final IntegerTypeDefinition typeDefinition; + private final T typeDefinition; - public IntegerTypeEffectiveStatementImpl( + private IntegerTypeEffectiveStatementImpl( final StmtContext> ctx, - final IntegerTypeDefinition baseType) { + final RangeRestrictedTypeBuilder builder) { super(ctx); - final RangeRestrictedTypeBuilder builder = - RestrictedTypes.newIntegerBuilder(baseType, TypeUtils.typeEffectiveSchemaPath(ctx)); - for (EffectiveStatement stmt : effectiveSubstatements()) { if (stmt instanceof RangeEffectiveStatementImpl) { final RangeEffectiveStatementImpl range = (RangeEffectiveStatementImpl) stmt; @@ -53,9 +54,37 @@ public final class IntegerTypeEffectiveStatementImpl extends } } + public static IntegerTypeEffectiveStatementImpl create( + final StmtContext> ctx, + final Int8TypeDefinition baseType) { + return new IntegerTypeEffectiveStatementImpl<>(ctx, RestrictedTypes.newInt8Builder(baseType, + TypeUtils.typeEffectiveSchemaPath(ctx))); + } + + public static IntegerTypeEffectiveStatementImpl create( + final StmtContext> ctx, + final Int16TypeDefinition baseType) { + return new IntegerTypeEffectiveStatementImpl<>(ctx, RestrictedTypes.newInt16Builder(baseType, + TypeUtils.typeEffectiveSchemaPath(ctx))); + } + + public static IntegerTypeEffectiveStatementImpl create( + final StmtContext> ctx, + final Int32TypeDefinition baseType) { + return new IntegerTypeEffectiveStatementImpl<>(ctx, RestrictedTypes.newInt32Builder(baseType, + TypeUtils.typeEffectiveSchemaPath(ctx))); + } + + public static IntegerTypeEffectiveStatementImpl create( + final StmtContext> ctx, + final Int64TypeDefinition baseType) { + return new IntegerTypeEffectiveStatementImpl<>(ctx, RestrictedTypes.newInt64Builder(baseType, + TypeUtils.typeEffectiveSchemaPath(ctx))); + } + @Nonnull @Override - public IntegerTypeDefinition getTypeDefinition() { + public T getTypeDefinition() { return typeDefinition; } } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/UnsignedIntegerTypeEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/UnsignedIntegerTypeEffectiveStatementImpl.java index 9f88fea04e..7f207894ec 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/UnsignedIntegerTypeEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/UnsignedIntegerTypeEffectiveStatementImpl.java @@ -12,6 +12,10 @@ import javax.annotation.Nonnull; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.TypeEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement; +import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; import org.opendaylight.yangtools.yang.model.util.type.RangeRestrictedTypeBuilder; import org.opendaylight.yangtools.yang.model.util.type.RestrictedTypes; @@ -20,19 +24,16 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.TypeUtils; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.DeclaredEffectiveStatementBase; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.UnknownEffectiveStatementImpl; -public final class UnsignedIntegerTypeEffectiveStatementImpl extends +public final class UnsignedIntegerTypeEffectiveStatementImpl> extends DeclaredEffectiveStatementBase implements TypeEffectiveStatement { - private final UnsignedIntegerTypeDefinition typeDefinition; + private final T typeDefinition; - public UnsignedIntegerTypeEffectiveStatementImpl( + private UnsignedIntegerTypeEffectiveStatementImpl( final StmtContext> ctx, - final UnsignedIntegerTypeDefinition baseType) { + final RangeRestrictedTypeBuilder builder) { super(ctx); - final RangeRestrictedTypeBuilder builder = - RestrictedTypes.newUnsignedBuilder(baseType, TypeUtils.typeEffectiveSchemaPath(ctx)); - for (EffectiveStatement stmt : effectiveSubstatements()) { if (stmt instanceof RangeEffectiveStatementImpl) { final RangeEffectiveStatementImpl rangeStmt = (RangeEffectiveStatementImpl)stmt; @@ -46,6 +47,34 @@ public final class UnsignedIntegerTypeEffectiveStatementImpl extends typeDefinition = builder.build(); } + public static UnsignedIntegerTypeEffectiveStatementImpl create( + final StmtContext> ctx, + final Uint8TypeDefinition baseType) { + return new UnsignedIntegerTypeEffectiveStatementImpl<>(ctx, RestrictedTypes.newUint8Builder(baseType, + TypeUtils.typeEffectiveSchemaPath(ctx))); + } + + public static UnsignedIntegerTypeEffectiveStatementImpl create( + final StmtContext> ctx, + final Uint16TypeDefinition baseType) { + return new UnsignedIntegerTypeEffectiveStatementImpl<>(ctx, RestrictedTypes.newUint16Builder(baseType, + TypeUtils.typeEffectiveSchemaPath(ctx))); + } + + public static UnsignedIntegerTypeEffectiveStatementImpl create( + final StmtContext> ctx, + final Uint32TypeDefinition baseType) { + return new UnsignedIntegerTypeEffectiveStatementImpl<>(ctx, RestrictedTypes.newUint32Builder(baseType, + TypeUtils.typeEffectiveSchemaPath(ctx))); + } + + public static UnsignedIntegerTypeEffectiveStatementImpl create( + final StmtContext> ctx, + final Uint64TypeDefinition baseType) { + return new UnsignedIntegerTypeEffectiveStatementImpl<>(ctx, RestrictedTypes.newUint64Builder(baseType, + TypeUtils.typeEffectiveSchemaPath(ctx))); + } + @Nonnull @Override public UnsignedIntegerTypeDefinition getTypeDefinition() { diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug5437Test.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug5437Test.java index d9065b36ef..e1e42cc136 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug5437Test.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug5437Test.java @@ -18,7 +18,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition; import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; @@ -54,6 +54,6 @@ public class Bug5437Test { (LeafrefTypeDefinition) leafRefNode2.getType(), context, leafRefNode2); assertTrue(baseTypeForLeafRef instanceof BinaryTypeDefinition); - assertTrue(baseTypeForLeafRef2 instanceof IntegerTypeDefinition); + assertTrue(baseTypeForLeafRef2 instanceof Int16TypeDefinition); } } diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug6771Test.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug6771Test.java index af931ca43e..432f5f5eb5 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug6771Test.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug6771Test.java @@ -16,7 +16,7 @@ import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; public class Bug6771Test { @@ -68,6 +68,6 @@ public class Bug6771Test { private static void verifyLeafType(final SchemaNode schemaNode) { assertTrue(schemaNode instanceof LeafSchemaNode); - assertTrue(((LeafSchemaNode) schemaNode).getType() instanceof UnsignedIntegerTypeDefinition); + assertTrue(((LeafSchemaNode) schemaNode).getType() instanceof Uint32TypeDefinition); } } diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/DeviationResolutionTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/DeviationResolutionTest.java index 56bdd32872..84fe74a936 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/DeviationResolutionTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/DeviationResolutionTest.java @@ -32,7 +32,7 @@ import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException; import org.opendaylight.yangtools.yang.parser.spi.meta.InvalidSubstatementException; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; @@ -124,7 +124,7 @@ public class DeviationResolutionTest { QName.create(barModule.getQNameModule(), "my-leaf")); assertNotNull(myLeaf); - assertTrue(myLeaf.getType() instanceof UnsignedIntegerTypeDefinition); + assertTrue(myLeaf.getType() instanceof Uint32TypeDefinition); assertEquals(Optional.of("bytes"), myLeaf.getType().getUnits()); assertEquals(Optional.of("10"), myLeaf.getType().getDefaultValue()); @@ -151,7 +151,7 @@ public class DeviationResolutionTest { final LeafSchemaNode myAugLeaf = (LeafSchemaNode) myCont.getDataChildByName( QName.create(barModule.getQNameModule(), "my-aug-leaf")); assertNotNull(myAugLeaf); - assertTrue(myAugLeaf.getType() instanceof UnsignedIntegerTypeDefinition); + assertTrue(myAugLeaf.getType() instanceof Uint32TypeDefinition); assertEquals(Optional.of("seconds"), myAugLeaf.getType().getUnits()); assertEquals(Optional.of("new-def-val"), myAugLeaf.getType().getDefaultValue()); assertEquals(1, myAugLeaf.getUnknownSchemaNodes().size()); @@ -160,7 +160,7 @@ public class DeviationResolutionTest { final LeafSchemaNode myUsedLeaf = (LeafSchemaNode) myCont.getDataChildByName( QName.create(barModule.getQNameModule(), "my-used-leaf")); assertNotNull(myUsedLeaf); - assertTrue(myUsedLeaf.getType() instanceof UnsignedIntegerTypeDefinition); + assertTrue(myUsedLeaf.getType() instanceof Uint32TypeDefinition); assertEquals(Optional.of("weeks"), myUsedLeaf.getType().getUnits()); assertEquals(Optional.of("new-def-val"), myUsedLeaf.getType().getDefaultValue()); assertEquals(1, myUsedLeaf.getUnknownSchemaNodes().size()); diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/DeviationStmtTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/DeviationStmtTest.java index 6da3c70dfb..bb857bd77d 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/DeviationStmtTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/DeviationStmtTest.java @@ -25,7 +25,7 @@ import org.opendaylight.yangtools.yang.model.api.DeviateKind; import org.opendaylight.yangtools.yang.model.api.Deviation; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource; import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; @@ -70,7 +70,7 @@ public class DeviationStmtTest { assertEquals(12, deviate.getDeviatedMaxElements().intValue()); } else if (DeviateKind.REPLACE.equals(deviate.getDeviateType())) { assertEquals(5, deviate.getDeviatedMinElements().intValue()); - assertTrue(deviate.getDeviatedType() instanceof UnsignedIntegerTypeDefinition); + assertTrue(deviate.getDeviatedType() instanceof Uint32TypeDefinition); } else { assertEquals(2, deviate.getDeviatedMusts().size()); assertEquals("minutes", deviate.getDeviatedUnits()); diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/UsesAugmentTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/UsesAugmentTest.java index fda9889627..a0a9c59068 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/UsesAugmentTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/UsesAugmentTest.java @@ -34,8 +34,8 @@ import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException; import org.opendaylight.yangtools.yang.model.util.type.BaseTypes; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; @@ -339,7 +339,7 @@ public class UsesAugmentTest { path.offer(expectedQName); expectedPath = SchemaPath.create(path, true); assertEquals(expectedPath, version.getPath()); - assertTrue(version.getType() instanceof UnsignedIntegerTypeDefinition); + assertTrue(version.getType() instanceof Uint8TypeDefinition); assertEquals(BaseTypes.uint8Type(), version.getType().getBaseType().getBaseType()); assertTrue(version.isAddedByUses()); assertTrue(version.isAugmenting()); diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserTest.java index 325f27f791..865672de8c 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserTest.java @@ -56,12 +56,13 @@ import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; import org.opendaylight.yangtools.yang.model.util.type.BaseTypes; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.parser.spi.meta.SomeModifiersUnresolvedException; @@ -159,7 +160,7 @@ public class YangParserTest { final LeafSchemaNode ifIndex = (LeafSchemaNode) ifEntry.getDataChildByName(QName.create(bar.getQNameModule(), "ifIndex")); assertEquals(ifEntry.getKeyDefinition().get(0), ifIndex.getQName()); - assertTrue(ifIndex.getType() instanceof UnsignedIntegerTypeDefinition); + assertTrue(ifIndex.getType() instanceof Uint32TypeDefinition); assertEquals(Optional.of("minutes"), ifIndex.getType().getUnits()); final LeafSchemaNode ifMtu = (LeafSchemaNode) ifEntry.getDataChildByName(QName.create(bar.getQNameModule(), "ifMtu")); @@ -171,7 +172,7 @@ public class YangParserTest { final LeafSchemaNode int32Leaf = (LeafSchemaNode) foo.getDataChildByName(QName.create(foo.getQNameModule(), "int32-leaf")); - final IntegerTypeDefinition leafType = (IntegerTypeDefinition) int32Leaf.getType(); + final Int32TypeDefinition leafType = (Int32TypeDefinition) int32Leaf.getType(); assertEquals(QName.create(FOO, "int32-ext2"), leafType.getQName()); assertEquals(Optional.of("mile"), leafType.getUnits()); assertEquals(Optional.of("11"), leafType.getDefaultValue()); @@ -184,7 +185,7 @@ public class YangParserTest { assertEquals(12, range.lowerEndpoint().intValue()); assertEquals(20, range.upperEndpoint().intValue()); - final IntegerTypeDefinition firstBaseType = leafType.getBaseType(); + final Int32TypeDefinition firstBaseType = leafType.getBaseType(); assertEquals(QName.create(BAR, "int32-ext2"), firstBaseType.getQName()); assertEquals(Optional.of("mile"), firstBaseType.getUnits()); assertEquals(Optional.of("11"), firstBaseType.getDefaultValue()); @@ -201,7 +202,7 @@ public class YangParserTest { assertEquals(11, baseTypeRange2.lowerEndpoint().intValue()); assertEquals(20, baseTypeRange2.upperEndpoint().intValue()); - final IntegerTypeDefinition secondBaseType = firstBaseType.getBaseType(); + final Int32TypeDefinition secondBaseType = firstBaseType.getBaseType(); final QName baseQName = secondBaseType.getQName(); assertEquals("int32-ext1", baseQName.getLocalName()); assertEquals(BAR, baseQName.getModule()); @@ -439,7 +440,7 @@ public class YangParserTest { final List> unionTypes = unionType.getTypes(); assertEquals(2, unionTypes.size()); - final IntegerTypeDefinition unionType1 = (IntegerTypeDefinition) unionTypes.get(0); + final Int16TypeDefinition unionType1 = (Int16TypeDefinition) unionTypes.get(0); assertEquals(QName.create(BAR, "my-union"), baseType.getQName()); assertEquals(Optional.empty(), unionType1.getUnits()); assertEquals(Optional.empty(), unionType1.getDefaultValue()); @@ -501,10 +502,10 @@ public class YangParserTest { final UnionTypeDefinition myUnionBase = myUnion.getBaseType(); final List> myUnionBaseTypes = myUnionBase.getTypes(); assertEquals(2, myUnionBaseTypes.size()); - assertTrue(myUnionBaseTypes.get(0) instanceof IntegerTypeDefinition); + assertTrue(myUnionBaseTypes.get(0) instanceof Int16TypeDefinition); assertEquals(BaseTypes.int32Type(), myUnionBaseTypes.get(1)); - final IntegerTypeDefinition int16Ext = (IntegerTypeDefinition) myUnionBaseTypes.get(0); + final Int16TypeDefinition int16Ext = (Int16TypeDefinition) myUnionBaseTypes.get(0); assertEquals(QName.create(BAR, "int16"), int16Ext.getQName()); assertEquals(Optional.empty(), int16Ext.getUnits()); assertEquals(Optional.empty(), int16Ext.getDefaultValue()); @@ -628,7 +629,7 @@ public class YangParserTest { final Set> types = bar.getTypeDefinitions(); // int32-ext1 - final IntegerTypeDefinition int32ext1 = (IntegerTypeDefinition) TestUtils.findTypedef(types, "int32-ext1"); + final Int32TypeDefinition int32ext1 = (Int32TypeDefinition) TestUtils.findTypedef(types, "int32-ext1"); final QName int32TypedefQName = QName.create(BAR, "int32-ext1"); assertEquals(int32TypedefQName, int32ext1.getQName()); @@ -639,7 +640,7 @@ public class YangParserTest { assertFalse(typePathIt.hasNext()); // int32-ext1/int32 - final IntegerTypeDefinition int32 = int32ext1.getBaseType(); + final Int32TypeDefinition int32 = int32ext1.getBaseType(); assertEquals(BaseTypes.int32Type(), int32); } diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserWithContextTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserWithContextTest.java index 2f2da995fb..a1a9d41afc 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserWithContextTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserWithContextTest.java @@ -42,7 +42,8 @@ import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.UsesNode; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource; import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; @@ -84,21 +85,21 @@ public class YangParserWithContextTest { final LeafSchemaNode leaf = (LeafSchemaNode) module.getDataChildByName(QName.create(module.getQNameModule(), "id")); - assertTrue(leaf.getType() instanceof UnsignedIntegerTypeDefinition); - final UnsignedIntegerTypeDefinition leafType = (UnsignedIntegerTypeDefinition) leaf.getType(); + assertTrue(leaf.getType() instanceof Uint16TypeDefinition); + final Uint16TypeDefinition leafType = (Uint16TypeDefinition) leaf.getType(); QName qname = leafType.getQName(); assertEquals(URI.create("urn:simple.demo.test1"), qname.getNamespace()); assertEquals(Revision.ofNullable("2013-06-18"), qname.getRevision()); assertEquals("port-number", qname.getLocalName()); - final UnsignedIntegerTypeDefinition leafBaseType = leafType.getBaseType(); + final Uint16TypeDefinition leafBaseType = leafType.getBaseType(); qname = leafBaseType.getQName(); assertEquals(URI.create("urn:ietf:params:xml:ns:yang:ietf-inet-types"), qname.getNamespace()); assertEquals(Revision.ofNullable("2010-09-24"), qname.getRevision()); assertEquals("port-number", qname.getLocalName()); - final UnsignedIntegerTypeDefinition dscpExt = (UnsignedIntegerTypeDefinition) TestUtils.findTypedef( - module.getTypeDefinitions(), "dscp-ext"); + final Uint8TypeDefinition dscpExt = (Uint8TypeDefinition) TestUtils.findTypedef(module.getTypeDefinitions(), + "dscp-ext"); final Set> ranges = dscpExt.getRangeConstraint().get().getAllowedRanges().asRanges(); assertEquals(1, ranges.size()); final Range range = ranges.iterator().next(); diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/test/Bug5200Test.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/test/Bug5200Test.java index 8ca82531e6..28c3cf97cf 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/test/Bug5200Test.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/test/Bug5200Test.java @@ -20,7 +20,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint; import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; @@ -51,7 +51,7 @@ public class Bug5200Test { TypeDefinition myLeaf2Type = ((LeafSchemaNode) myLeaf2Node).getType(); assertTrue(myLeafType instanceof StringTypeDefinition); - assertTrue(myLeaf2Type instanceof IntegerTypeDefinition); + assertTrue(myLeaf2Type instanceof Int32TypeDefinition); final LengthConstraint lengthConstraint = ((StringTypeDefinition) myLeafType).getLengthConstraint().get(); @@ -67,7 +67,7 @@ public class Bug5200Test { assertEquals(Optional.of("pattern constraint error-app-tag"), patternConstraint.getErrorAppTag()); assertEquals(Optional.of("pattern constraint error-app-message"), patternConstraint.getErrorMessage()); - RangeConstraint rangeConstraint = ((IntegerTypeDefinition) myLeaf2Type).getRangeConstraint().get(); + RangeConstraint rangeConstraint = ((Int32TypeDefinition) myLeaf2Type).getRangeConstraint().get(); assertEquals(1, rangeConstraint.getAllowedRanges().asRanges().size()); assertEquals(Optional.of("range constraint error-app-tag"), rangeConstraint.getErrorAppTag()); -- 2.36.6