Fixed types range validation. 91/891/2
authorMartin Vitez <mvitez@cisco.com>
Fri, 16 Aug 2013 11:45:51 +0000 (13:45 +0200)
committerMartin Vitez <mvitez@cisco.com>
Fri, 16 Aug 2013 12:35:59 +0000 (14:35 +0200)
Change-Id: Ife21296868c198f6c78eb189da651eb2872c77cc
Signed-off-by: Martin Vitez <mvitez@cisco.com>
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/TypeConstraints.java

index 8575c4ec2ed797b95093d5d940b55337f5f54b63..995493e50a583489efe7b122d333f232707e5421 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.yangtools.yang.parser.util;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -270,8 +271,8 @@ public final class TypeConstraints {
             if (range.getMin() instanceof UnknownBoundaryNumber || range.getMax() instanceof UnknownBoundaryNumber) {
                 throw new YangParseException(moduleName, line, "Unresolved range constraints");
             }
-            final long min = range.getMin().longValue();
-            final long max = range.getMax().longValue();
+            final BigDecimal min = new BigDecimal(range.getMin().toString());
+            final BigDecimal max = new BigDecimal(range.getMax().toString());
 
             List<RangeConstraint> parentRanges = ranges.get(1);
             boolean check = false;
@@ -280,15 +281,15 @@ public final class TypeConstraints {
                 if (parentMinNumber instanceof UnknownBoundaryNumber) {
                     parentMinNumber = resolveMinRange(parentMinNumber);
                 }
-                long parentMin = parentMinNumber.longValue();
+                BigDecimal parentMin = new BigDecimal(parentMinNumber.toString());
 
                 Number parentMaxNumber = r.getMax();
                 if (parentMaxNumber instanceof UnknownBoundaryNumber) {
                     parentMaxNumber = resolveMaxRange(parentMaxNumber);
                 }
-                long parentMax = parentMaxNumber.longValue();
+                BigDecimal parentMax = new BigDecimal(parentMaxNumber.toString());
 
-                if (parentMin <= min && parentMax >= max) {
+                if(parentMin.compareTo(min) <=0 && parentMax.compareTo(max) >= 0) {
                     check = true;
                     break;
                 }