[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) {