Codecs are cross-referencing an already-parsed value with YANG
constraints, which puts them squarely to Content layer of NETCONF
protocol -- and that implies ErrorType.APPLICATION.
JIRA: YANGTOOLS-1300
Change-Id: Icd6d2fbfbda554bc09978725d33f927d87d526ac
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit
f590327d054f08b91cea58020c164b44afa9ee2a)
if (rangeConstraint != null) {
final RangeSet<N> ranges = rangeConstraint.getAllowedRanges();
if (!ranges.contains(deserialized)) {
if (rangeConstraint != null) {
final RangeSet<N> ranges = rangeConstraint.getAllowedRanges();
if (!ranges.contains(deserialized)) {
- throw new YangInvalidValueException(ErrorType.PROTOCOL, rangeConstraint,
+ throw new YangInvalidValueException(ErrorType.APPLICATION, rangeConstraint,
"Value '" + deserialized + "' is not in required ranges " + ranges);
}
}
"Value '" + deserialized + "' is not in required ranges " + ranges);
}
}
}
private static int provideBase(final String integer) {
}
private static int provideBase(final String integer) {
- if (integer.length() == 1 && integer.charAt(0) == '0') {
- return 10;
- } else if (INT_PATTERN.matcher(integer).matches()) {
+ if ((integer.length() == 1 && integer.charAt(0) == '0') || INT_PATTERN.matcher(integer).matches()) {
return 10;
} else if (HEX_PATTERN.matcher(integer).matches()) {
return 16;
return 10;
} else if (HEX_PATTERN.matcher(integer).matches()) {
return 16;
void validate(final byte[] value) {
final RangeSet<Integer> ranges = lengthConstraint.getAllowedRanges();
if (!ranges.contains(value.length)) {
void validate(final byte[] value) {
final RangeSet<Integer> ranges = lengthConstraint.getAllowedRanges();
if (!ranges.contains(value.length)) {
- throw new YangInvalidValueException(ErrorType.PROTOCOL, lengthConstraint,
+ throw new YangInvalidValueException(ErrorType.APPLICATION, lengthConstraint,
"Value length " + value.length + " is not in required ranges " + ranges);
}
}
"Value length " + value.length + " is not in required ranges " + ranges);
}
}
void validate(final String str) {
if (pattern.matcher(str).matches() == invert) {
void validate(final String str) {
if (pattern.matcher(str).matches() == invert) {
- throw new YangInvalidValueException(ErrorType.PROTOCOL, constraint,
+ throw new YangInvalidValueException(ErrorType.APPLICATION, constraint,
"Value '" + str + "' " + (invert ? "matches" : "does not match") + " regular expression '"
+ constraint.getRegularExpressionString() + "'");
}
"Value '" + str + "' " + (invert ? "matches" : "does not match") + " regular expression '"
+ constraint.getRegularExpressionString() + "'");
}
if (lengthConstraint != null) {
final RangeSet<Integer> ranges = lengthConstraint.getAllowedRanges();
if (!ranges.contains(str.codePointCount(0, str.length()))) {
if (lengthConstraint != null) {
final RangeSet<Integer> ranges = lengthConstraint.getAllowedRanges();
if (!ranges.contains(str.codePointCount(0, str.length()))) {
- throw new YangInvalidValueException(ErrorType.PROTOCOL, lengthConstraint,
+ throw new YangInvalidValueException(ErrorType.APPLICATION, lengthConstraint,
"String " + str + " does not match allowed lengths " + ranges);
}
}
"String " + str + " does not match allowed lengths " + ranges);
}
}