[ONOS-4938] Defect fix: range interval

Change-Id: I3229d35fb7c80da3bcf150d52ed7e7eba72bb4c8
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRangeRestriction.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRangeRestriction.java
index ae9b68e..29322e6 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRangeRestriction.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRangeRestriction.java
@@ -165,7 +165,7 @@
 
         T curMaxvalue = getMaxRestrictedvalue();
 
-        if (newInterval.getStartValue().compareTo(curMaxvalue) != 1) {
+        if (newInterval.getStartValue().compareTo(curMaxvalue) < 1) {
             throw new DataModelException(
                     "New added range interval is lesser than the old interval(s)");
         }
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangType.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangType.java
index 6815a3a..45f0df6 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangType.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangType.java
@@ -289,7 +289,10 @@
                 if (getDataTypeExtendedInfo() == null) {
                     getDataObjectFromString(value, getDataType());
                 } else {
-                    ((YangRangeRestriction) getDataTypeExtendedInfo()).isValidValueString(value);
+                    if (!((YangRangeRestriction) getDataTypeExtendedInfo()).isValidValueString(value)) {
+                        throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
+                                                            getDataType());
+                    }
                 }
                 break;
             }
@@ -308,14 +311,14 @@
                         && ((YangStringRestriction) getDataTypeExtendedInfo())
                         .isValidStringOnPatternRestriction(value))) {
                     throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
-                                                        "string");
+                                                        getDataType());
                 }
                 break;
             }
             case BOOLEAN:
                 if (!(value.equals(DataModelUtils.TRUE) || value.equals(DataModelUtils.FALSE))) {
                     throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
-                                                        "boolean");
+                                                        getDataType());
                 }
                 break;
             case ENUMERATION: {
@@ -331,7 +334,7 @@
 
                 if (!isValidated) {
                     throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
-                                                        "union");
+                                                        getDataType());
                 }
                 break;
             }
@@ -339,14 +342,14 @@
                 YangBits bits = (YangBits) getDataTypeExtendedInfo();
                 if (bits.fromString(value) == null) {
                     throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
-                                                        "bits");
+                                                        getDataType());
                 }
                 break;
             }
             case BINARY: {
                 if (!isValidBinary(value, (YangRangeRestriction) getDataTypeExtendedInfo())) {
                     throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
-                                                        "binary");
+                                                        getDataType());
                 }
                 break;
             }
@@ -360,8 +363,11 @@
                 break;
             }
             case EMPTY: {
-                throw new DataTypeException("YANG file error : Input value \"" + value
-                                                    + "\" is not a allowed for a data type " + "empty");
+                if (value.length() > 0) {
+                    throw new DataTypeException("YANG file error : Input value \"" + value
+                                                        + "\" is not allowed for a data type " + getDataType());
+                }
+                break;
             }
             case UNION: {
                 ListIterator<YangType<?>> listIterator = ((YangUnion) getDataTypeExtendedInfo()).getTypeList()
@@ -380,7 +386,7 @@
 
                 if (!isValidated) {
                     throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
-                                                        "union");
+                                                        getDataType());
                 }
                 break;
             }
@@ -399,7 +405,7 @@
                         if (!((YangRangeRestriction) ((YangDerivedInfo) getDataTypeExtendedInfo())
                                 .getResolvedExtendedInfo()).isValidValueString(value)) {
                             throw new DataTypeException("YANG file error : Input value \"" + value
-                                                                + "\" is not a valid " + dataType.toString());
+                                                                + "\" is not a valid " + dataType);
                         }
                     }
                 } else if (dataType == YangDataTypes.STRING) {
@@ -410,20 +416,20 @@
                         if (!(stringRestriction.isValidStringOnLengthRestriction(value) &&
                                 stringRestriction.isValidStringOnPatternRestriction(value))) {
                             throw new DataTypeException("YANG file error : Input value \"" + value
-                                                                + "\" is not a valid " + dataType.toString());
+                                                                + "\" is not a valid " + dataType);
                         }
                     }
                 } else if (dataType == YangDataTypes.BITS) {
                     YangBits bits = (YangBits) getDataTypeExtendedInfo();
                     if (bits.fromString(value) == null) {
                         throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
-                                                            "bits");
+                                                            dataType);
                     }
                 } else if (dataType == YangDataTypes.BINARY) {
                     if (!isValidBinary(value, (YangRangeRestriction) ((YangDerivedInfo)
                             getDataTypeExtendedInfo()).getResolvedExtendedInfo())) {
                         throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
-                                                            dataType.toString());
+                                                            dataType);
                     }
                 } else if (dataType == YangDataTypes.DECIMAL64) {
                     YangDerivedInfo derivedInfo = (YangDerivedInfo) getDataTypeExtendedInfo();
@@ -438,8 +444,8 @@
                 break;
             }
             default: {
-                throw new DataTypeException("YANG file error : Input value \"" + value + "\" is for unsupported " +
-                                                    "data type.");
+                throw new DataTypeException("YANG file error : Input value \"" + value + "\" received for " +
+                                                    "unsupported data type " + getDataType());
             }
         }
     }
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint64.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint64.java
index 49a5153..16576c9 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint64.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint64.java
@@ -18,7 +18,6 @@
 
 import java.io.Serializable;
 import java.math.BigInteger;
-import java.util.regex.Pattern;
 
 /**
  * Handles the YANG's Uint16 data type processing.
@@ -40,11 +39,6 @@
     private static final String MAX_KEYWORD = "max";
 
     /**
-     * YANG's Integer value pattern.
-     */
-    private static final Pattern NON_NEGATIVE_INTEGER_PATTERN = Pattern.compile("[0-9]+");
-
-    /**
      * Valid minimum value of YANG's Uint64.
      */
     public static final BigInteger MIN_VALUE = BigInteger.valueOf(0);
@@ -71,11 +65,13 @@
             value = MIN_VALUE;
         } else if (valueInString.matches(MAX_KEYWORD)) {
             value = MAX_VALUE;
-        } else if (NON_NEGATIVE_INTEGER_PATTERN.matcher(valueInString).matches()) {
-            value = new BigInteger(valueInString);
         } else {
-            throw new DataTypeException("YANG file error : Input value \"" + valueInString + "\" is not a valid " +
-                    "uint64.");
+            try {
+                value = new BigInteger(valueInString);
+            } catch (Exception e) {
+                throw new DataTypeException("YANG file error : Input value \"" + valueInString + "\" is not a valid " +
+                                                    "uint64.");
+            }
         }
 
         if (value.compareTo(MIN_VALUE) < 0) {