Use yang.common.Decimal64 for decimal64 58/97458/4
authorRobert Varga <robert.varga@pantheon.tech>
Sun, 12 Sep 2021 16:48:44 +0000 (18:48 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 13 Sep 2021 08:22:13 +0000 (10:22 +0200)
We now have a dedicated class for carrying decimal64 values, use that
instead of BigInteger.

JIRA: YANGTOOLS-556
Change-Id: Ifdb672383f73c5845499b55e307c60b1c30ddbd5
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
16 files changed:
codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/AbstractYT1027Test.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/codec/DecimalCodec.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/DecimalStringCodec.java
data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/DecimalCodecStringTest.java
data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/TypeDefinitionAwareCodecTestHelper.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/DecimalTypeDefinition.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseDecimalType.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/DecimalTypeBuilder.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/DerivedDecimalType.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/NumberUtil.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/RestrictedDecimalType.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/RestrictedTypes.java
model/yang-model-ri/src/test/java/org/opendaylight/yangtools/yang/model/ri/type/NumberUtilTest.java
parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/RangeStatementSupport.java
parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractTypeStatementSupport.java
parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/TypedefConstraintsTest.java

index 3b7655c1d3b1faac80bff35e3cf35e22696ce8bf..b50fdf2a748afef9a7944a6961a8e0b1f3ee262c 100644 (file)
@@ -17,10 +17,10 @@ import java.io.IOException;
 import java.io.StringReader;
 import java.io.StringWriter;
 import java.io.Writer;
-import java.math.BigDecimal;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.Uint64;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
@@ -45,7 +45,7 @@ public abstract class AbstractYT1027Test {
     private static final QName INT64 = QName.create(DECIMAL, "int64");
     private static final QName UINT64 = QName.create(DECIMAL, "uint64");
 
-    static final LeafNode<?> DECIMAL_DATA = ImmutableNodes.leafNode(DECIMAL, new BigDecimal("1.1"));
+    static final LeafNode<?> DECIMAL_DATA = ImmutableNodes.leafNode(DECIMAL, Decimal64.valueOf("1.1"));
     static final LeafNode<?> INT64_DATA = ImmutableNodes.leafNode(INT64, 2L);
     static final LeafNode<?> UINT64_DATA = ImmutableNodes.leafNode(UINT64, Uint64.ONE);
 
index b42a6d93a26deadf595788a6389111974b62f873..b112e58fe3193eb4f29f5b6f850aa3eaf58e8b7d 100644 (file)
@@ -7,9 +7,9 @@
  */
 package org.opendaylight.yangtools.yang.data.api.codec;
 
-import java.math.BigDecimal;
 import org.opendaylight.yangtools.concepts.IllegalArgumentCodec;
+import org.opendaylight.yangtools.yang.common.Decimal64;
 
-public interface DecimalCodec<T> extends IllegalArgumentCodec<T, BigDecimal> {
+public interface DecimalCodec<T> extends IllegalArgumentCodec<T, Decimal64> {
 
 }
index 946e333455b5330a66d5e4d2918d539d852d6afc..35a5c87f8ddbd2fa3503c811cc2f599474a78019 100644 (file)
@@ -10,8 +10,8 @@ package org.opendaylight.yangtools.yang.data.impl.codec;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.Beta;
-import java.math.BigDecimal;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.opendaylight.yangtools.yang.data.api.codec.DecimalCodec;
 import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
 
@@ -19,10 +19,10 @@ import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
  * Do not use this class outside of yangtools, its presence does not fall into the API stability contract.
  */
 @Beta
-public final class DecimalStringCodec extends TypeDefinitionAwareCodec<BigDecimal, DecimalTypeDefinition>
+public final class DecimalStringCodec extends TypeDefinitionAwareCodec<Decimal64, DecimalTypeDefinition>
         implements DecimalCodec<String> {
     private DecimalStringCodec(final DecimalTypeDefinition typeDef) {
-        super(typeDef, BigDecimal.class);
+        super(typeDef, Decimal64.class);
     }
 
     public static @NonNull DecimalStringCodec from(final DecimalTypeDefinition type) {
@@ -30,13 +30,13 @@ public final class DecimalStringCodec extends TypeDefinitionAwareCodec<BigDecima
     }
 
     @Override
-    protected BigDecimal deserializeImpl(final String product) {
+    protected Decimal64 deserializeImpl(final String product) {
         // FIXME: run value validation
-        return new BigDecimal(product);
+        return Decimal64.valueOf(product);
     }
 
     @Override
-    protected @NonNull String serializeImpl(@NonNull final BigDecimal input) {
+    protected String serializeImpl(final Decimal64 input) {
         return input.toString();
     }
 }
index 4f9d63c811f8a5d01a09c49514d507c050184706..fb3cc82375899cbd4576c9389c5423f07286fefa 100644 (file)
@@ -9,8 +9,8 @@ package org.opendaylight.yangtools.yang.data.impl.codec;
 
 import static org.junit.Assert.assertEquals;
 
-import java.math.BigDecimal;
 import org.junit.Test;
+import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.codec.DecimalCodec;
 import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
@@ -26,7 +26,7 @@ public class DecimalCodecStringTest {
     @Test
     public void testSerialize() {
         DecimalCodec<String> codec = TypeDefinitionAwareCodecTestHelper.getCodec(getType(), DecimalCodec.class);
-        assertEquals("serialize", "123.456", codec.serialize(new BigDecimal("123.456")));
+        assertEquals("123.456", codec.serialize(Decimal64.valueOf("123.456")));
     }
 
     @SuppressWarnings("unchecked")
@@ -34,7 +34,7 @@ public class DecimalCodecStringTest {
     public void testDeserialize() {
         DecimalCodec<String> codec = TypeDefinitionAwareCodecTestHelper.getCodec(getType(), DecimalCodec.class);
 
-        assertEquals("deserialize", new BigDecimal("123.456"), codec.deserialize("123.456"));
+        assertEquals(Decimal64.valueOf("123.456"), codec.deserialize("123.456"));
 
         TypeDefinitionAwareCodecTestHelper.deserializeWithExpectedIllegalArgEx(codec, "12o.3");
         TypeDefinitionAwareCodecTestHelper.deserializeWithExpectedIllegalArgEx(codec, "");
index df048cff08c910fa1c349997fd9f4a891cadadc6..4b0b330f43a5ffc8fdcac7429b49f529023e94bd 100644 (file)
@@ -9,7 +9,7 @@ package org.opendaylight.yangtools.yang.data.impl.codec;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.assertThrows;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 
@@ -35,12 +35,7 @@ public final class TypeDefinitionAwareCodecTestHelper {
 
     public static void deserializeWithExpectedIllegalArgEx(final Codec<String, ?, IllegalArgumentException> codec,
             final @NonNull String param) {
-        try {
-            codec.deserialize(param);
-            fail("Expected IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
-            // Expected ...
-        }
+        assertThrows(IllegalArgumentException.class, () -> codec.deserialize(param));
     }
 
     public static EnumTypeDefinition toEnumTypeDefinition(final String... enums) {
index e548f4eeeb9e35318d394d47c570790be98ff909..ddafa0ffe2014c503c66210a1af0aac98e9fa668 100644 (file)
@@ -7,14 +7,14 @@
  */
 package org.opendaylight.yangtools.yang.model.api.type;
 
-import java.math.BigDecimal;
 import java.util.Objects;
+import org.opendaylight.yangtools.yang.common.Decimal64;
 
 /**
  * Contains methods for getting data from the YANG <code>type</code> substatement for <code>decimal64</code> built-in
  * type.
  */
-public interface DecimalTypeDefinition extends RangeRestrictedTypeDefinition<DecimalTypeDefinition, BigDecimal> {
+public interface DecimalTypeDefinition extends RangeRestrictedTypeDefinition<DecimalTypeDefinition, Decimal64> {
     /**
      * Returns integer between 1 and 18 inclusively.
      *
index 04e8a0449dce10f974eadf11381c28031aaecded..798f5ac616dfb780ead8c17dfb34825ef06365fc 100644 (file)
@@ -12,16 +12,16 @@ import static com.google.common.base.Verify.verifyNotNull;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableRangeSet;
 import com.google.common.collect.Range;
-import java.math.BigDecimal;
 import java.util.Collection;
 import java.util.Optional;
+import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ConstraintMetaDefinition;
 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.RangeConstraint;
 
-final class BaseDecimalType extends AbstractRangeRestrictedBaseType<DecimalTypeDefinition, BigDecimal>
+final class BaseDecimalType extends AbstractRangeRestrictedBaseType<DecimalTypeDefinition, Decimal64>
         implements DecimalTypeDefinition {
     private static final ConstraintMetaDefinition BUILTIN_CONSTRAINT = new ConstraintMetaDefinition() {
 
@@ -46,7 +46,7 @@ final class BaseDecimalType extends AbstractRangeRestrictedBaseType<DecimalTypeD
         }
     };
 
-    private static final ImmutableList<RangeConstraint<BigDecimal>> IMPLICIT_RANGE_STATEMENTS = ImmutableList.of(
+    private static final ImmutableList<RangeConstraint<Decimal64>> IMPLICIT_RANGE_STATEMENTS = ImmutableList.of(
         createRangeConstraint("-922337203685477580.8", "922337203685477580.7"),
         createRangeConstraint("-92233720368547758.08", "92233720368547758.07"),
         createRangeConstraint("-9223372036854775.808", "9223372036854775.807"),
@@ -66,19 +66,19 @@ final class BaseDecimalType extends AbstractRangeRestrictedBaseType<DecimalTypeD
         createRangeConstraint("-92.23372036854775808", "92.23372036854775807"),
         createRangeConstraint("-9.223372036854775808", "9.223372036854775807"));
 
-    private static RangeConstraint<BigDecimal> createRangeConstraint(final String min, final String max) {
+    private static RangeConstraint<Decimal64> createRangeConstraint(final String min, final String max) {
         return new ResolvedRangeConstraint<>(BUILTIN_CONSTRAINT, ImmutableRangeSet.of(
-            Range.closed(new BigDecimal(min), new BigDecimal(max))));
+            Range.closed(Decimal64.valueOf(min), Decimal64.valueOf(max))));
     }
 
-    static RangeConstraint<BigDecimal> constraintsForDigits(final int fractionDigits) {
+    static RangeConstraint<Decimal64> constraintsForDigits(final int fractionDigits) {
         return verifyNotNull(IMPLICIT_RANGE_STATEMENTS.get(fractionDigits - 1));
     }
 
     private final int fractionDigits;
 
     BaseDecimalType(final QName qname, final Collection<? extends UnknownSchemaNode> unknownSchemaNodes,
-            final int fractionDigits, final RangeConstraint<BigDecimal> rangeConstraint) {
+            final int fractionDigits, final RangeConstraint<Decimal64> rangeConstraint) {
         super(qname, unknownSchemaNodes, rangeConstraint);
         this.fractionDigits = fractionDigits;
     }
index d95b7f0df90082ca8aa141743cbb036b4e1d78e9..8e83e45f03e7ed8a159376803ce8e39576f13aef 100644 (file)
@@ -10,11 +10,11 @@ package org.opendaylight.yangtools.yang.model.ri.type;
 import static com.google.common.base.Preconditions.checkState;
 
 import com.google.common.base.Preconditions;
-import java.math.BigDecimal;
+import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
 
-public final class DecimalTypeBuilder extends RangeRestrictedTypeBuilder<DecimalTypeDefinition, BigDecimal> {
+public final class DecimalTypeBuilder extends RangeRestrictedTypeBuilder<DecimalTypeDefinition, Decimal64> {
     private Integer fractionDigits;
 
     DecimalTypeBuilder(final QName qname) {
index 7bc202b480e6e3c0fce543797102f53c54f6103b..7050d24af25e06b8e4709bf6e34f6a6cdccb5510 100644 (file)
@@ -7,14 +7,14 @@
  */
 package org.opendaylight.yangtools.yang.model.ri.type;
 
-import java.math.BigDecimal;
 import java.util.Collection;
+import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.Status;
 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
 
-final class DerivedDecimalType extends AbstractRangeRestrictedDerivedType<DecimalTypeDefinition, BigDecimal>
+final class DerivedDecimalType extends AbstractRangeRestrictedDerivedType<DecimalTypeDefinition, Decimal64>
         implements DecimalTypeDefinition {
     DerivedDecimalType(final DecimalTypeDefinition baseType, final QName qname, final Object defaultValue,
             final String description, final String reference, final Status status, final String units,
index 9bebead5b63c1f88188ff2fb8a80661cfbae4ab4..a96815fa0b9245d11ca4662690e50c8710b233d5 100644 (file)
@@ -10,9 +10,9 @@ package org.opendaylight.yangtools.yang.model.ri.type;
 import static com.google.common.base.Preconditions.checkArgument;
 
 import com.google.common.collect.ImmutableMap;
-import java.math.BigDecimal;
 import java.util.Comparator;
 import java.util.function.Function;
+import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.opendaylight.yangtools.yang.common.Uint16;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.common.Uint64;
@@ -39,8 +39,8 @@ final class NumberUtil {
             return ((Uint32)o1).compareTo((Uint32) o2);
         } else if (o1 instanceof Uint64) {
             return ((Uint64)o1).compareTo((Uint64) o2);
-        } else if (o1 instanceof BigDecimal) {
-            return ((BigDecimal)o1).compareTo((BigDecimal) o2);
+        } else if (o1 instanceof Decimal64) {
+            return ((Decimal64)o1).compareTo((Decimal64) o2);
         } else {
             throw new IllegalArgumentException("Unsupported Number class " + o1.getClass());
         }
@@ -87,15 +87,15 @@ final class NumberUtil {
 
             return Long.valueOf(input.toString());
         });
-        b.put(BigDecimal.class, input -> {
-            if (input instanceof BigDecimal) {
+        b.put(Decimal64.class, input -> {
+            if (input instanceof Decimal64) {
                 return input;
             }
             if (input instanceof Byte || input instanceof Short || input instanceof Integer || input instanceof Long) {
-                return BigDecimal.valueOf(input.longValue());
+                return Decimal64.valueOf(input.longValue());
             }
 
-            return new BigDecimal(input.toString());
+            return Decimal64.valueOf(input.toString());
         });
         b.put(Uint8.class, input -> {
             if (input instanceof Uint8) {
index 870b8749d11f1ff55fe922310ce70ff7e61f4fa4..0a4f2502c2f718eb13104f12cacf0ce52546357d 100644 (file)
@@ -7,19 +7,19 @@
  */
 package org.opendaylight.yangtools.yang.model.ri.type;
 
-import java.math.BigDecimal;
 import java.util.Collection;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.opendaylight.yangtools.yang.common.QName;
 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.RangeConstraint;
 
-final class RestrictedDecimalType extends AbstractRangeRestrictedType<DecimalTypeDefinition, BigDecimal>
+final class RestrictedDecimalType extends AbstractRangeRestrictedType<DecimalTypeDefinition, Decimal64>
         implements DecimalTypeDefinition {
     RestrictedDecimalType(final DecimalTypeDefinition baseType, final QName qname,
             final Collection<? extends UnknownSchemaNode> unknownSchemaNodes,
-            final @Nullable RangeConstraint<BigDecimal> rangeConstraint) {
+            final @Nullable RangeConstraint<Decimal64> rangeConstraint) {
         super(baseType, qname, unknownSchemaNodes, rangeConstraint);
     }
 
index d5fbe61d6af29ae976c775b206b9878c7bdeb05b..58b54db4681e38ddfa76e6c5462837ce751a1379 100644 (file)
@@ -8,9 +8,9 @@
 package org.opendaylight.yangtools.yang.model.ri.type;
 
 import com.google.common.annotations.Beta;
-import java.math.BigDecimal;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.Uint16;
 import org.opendaylight.yangtools.yang.common.Uint32;
@@ -111,11 +111,11 @@ public final class RestrictedTypes {
         };
     }
 
-    public static @NonNull RangeRestrictedTypeBuilder<DecimalTypeDefinition, BigDecimal> newDecima64Builder(
+    public static @NonNull RangeRestrictedTypeBuilder<DecimalTypeDefinition, Decimal64> newDecima64Builder(
             final DecimalTypeDefinition baseType, final QName qname) {
         return new RangeRestrictedTypeBuilderWithBase<>(baseType, qname) {
             @Override
-            DecimalTypeDefinition buildType(final RangeConstraint<BigDecimal> rangeConstraint) {
+            DecimalTypeDefinition buildType(final RangeConstraint<@NonNull Decimal64> rangeConstraint) {
                 return new RestrictedDecimalType(getBaseType(), getQName(), getUnknownSchemaNodes(), rangeConstraint);
             }
         };
index 2c5cf8b9c678df5cd6529d5ecb2ff241ffb6d664..787c8c7c1940ecdeeb6b9831df30116b7feefa06 100644 (file)
@@ -15,6 +15,7 @@ import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.util.function.Function;
 import org.junit.Test;
+import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.opendaylight.yangtools.yang.common.Uint16;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.common.Uint64;
@@ -42,11 +43,11 @@ public class NumberUtilTest {
     }
 
     @Test
-    public void testRangeCoveredForBigDecimal() {
-        final BigDecimal min = new BigDecimal(100.0);
-        final BigDecimal superMin = new BigDecimal(50.0);
-        final BigDecimal max = new BigDecimal(200.0);
-        final BigDecimal superMax = new BigDecimal(300.0);
+    public void testRangeCoveredForDecimal64() {
+        final Decimal64 min = Decimal64.valueOf(100.0);
+        final Decimal64 superMin = Decimal64.valueOf(50.0);
+        final Decimal64 max = Decimal64.valueOf(200.0);
+        final Decimal64 superMax = Decimal64.valueOf(300.0);
 
         assertTrue(NumberUtil.isRangeCovered(min, max, superMin, superMax));
     }
@@ -137,15 +138,15 @@ public class NumberUtilTest {
 
     @Test
     public void testConverterToBigDecimal() {
-        BigDecimal bigDecNum = new BigDecimal(20.0);
-        final Function<Number, BigDecimal> numberFunction = NumberUtil.converterTo(BigDecimal.class);
+        Decimal64 bigDecNum = Decimal64.valueOf(20.0);
+        final Function<Number, Decimal64> numberFunction = NumberUtil.converterTo(Decimal64.class);
         assertEquals(bigDecNum, numberFunction.apply(bigDecNum));
 
         int intNum = 20;
         assertEquals(bigDecNum, numberFunction.apply(intNum));
 
         double doubleNum = 20.0;
-        bigDecNum = new BigDecimal("20.0");
+        bigDecNum = Decimal64.valueOf("20.0");
         assertEquals(bigDecNum, numberFunction.apply(doubleNum));
     }
 
index a839d34a547df9c9b5bc9eb7d10cf895d5f7f942..1deed17aac652b321064fd6c04548708dcc16c37 100644 (file)
@@ -9,11 +9,11 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
-import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.opendaylight.yangtools.yang.common.Uint64;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclarationReference;
@@ -109,8 +109,7 @@ public final class RangeStatementSupport
         // Deal with decimal64, i.e. 'decimal-value' production of the RFC6020 ABNF
         if (value.indexOf('.') != -1) {
             try {
-                // FIXME: YANGTOOLS-556: Use Decimal64 here
-                return new BigDecimal(value);
+                return Decimal64.valueOf(value);
             } catch (NumberFormatException e) {
                 throw new SourceException(ctx, e, "Value %s is not a valid decimal number", value);
             }
index 44cad1f9e0c65dc632f69c1325265b5bdbb48e18..32978a7fe6bea85b20e81a98a0d9507985f473dc 100644 (file)
@@ -11,9 +11,9 @@ import static com.google.common.base.Verify.verifyNotNull;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
-import java.math.BigDecimal;
 import java.util.Collection;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.opendaylight.yangtools.yang.common.Empty;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
@@ -331,7 +331,7 @@ abstract class AbstractTypeStatementSupport extends AbstractTypeSupport<TypeStat
     private static @NonNull TypeEffectiveStatement<TypeStatement> createDecimal(final Current<QName, ?> ctx,
             final DecimalTypeDefinition baseType, final TypeStatement declared,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
-        final RangeRestrictedTypeBuilder<DecimalTypeDefinition, BigDecimal> builder =
+        final RangeRestrictedTypeBuilder<DecimalTypeDefinition, Decimal64> builder =
                 RestrictedTypes.newDecima64Builder(baseType, typeEffectiveQName(ctx));
 
         for (EffectiveStatement<?, ?> stmt : substatements) {
index 6b7bf818a0f76d4b0fd8f9f79b0d2301459c7c99..33406be696722799d715baa958925bd85551ae34 100644 (file)
@@ -13,10 +13,10 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 import com.google.common.collect.Range;
-import java.math.BigDecimal;
 import java.util.Collection;
 import java.util.Set;
 import org.junit.Test;
+import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
@@ -26,7 +26,6 @@ import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.TypeDefinitions;
 
 public class TypedefConstraintsTest {
-
     @Test
     public void decimalRangeConstraintsTest() throws Exception {
         final SchemaContext context = StmtTestUtils.parseYangSources("/stmt-test/constraints");
@@ -65,8 +64,8 @@ public class TypedefConstraintsTest {
         assertEquals(1, decRangeConstraints.size());
 
         final Range<?> range = decRangeConstraints.iterator().next();
-        assertEquals(new BigDecimal(1.5), range.lowerEndpoint());
-        assertEquals(new BigDecimal(5.5), range.upperEndpoint());
+        assertEquals(Decimal64.valueOf(1.5), range.lowerEndpoint());
+        assertEquals(Decimal64.valueOf(5.5), range.upperEndpoint());
 
         assertEquals(TypeDefinitions.DECIMAL64.bindTo(leafDecimal.getQName().getModule()), decType.getQName());
         assertNull(decType.getBaseType());