Skip to content

Commit d792092

Browse files
committed
[Java] Validate range on enum valid values.
1 parent b428a4e commit d792092

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

sbe-tool/src/main/java/uk/co/real_logic/sbe/xml/EnumType.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,22 @@ else if (presence() == OPTIONAL)
149149
handleWarning(node, "validValue already exists for name: " + v.name());
150150
}
151151

152+
if (PrimitiveType.CHAR != encodingType)
153+
{
154+
final long value = v.primitiveValue().longValue();
155+
final long minValue = null != encodedDataType && null != encodedDataType.minValue() ?
156+
encodedDataType.minValue().longValue() : encodingType.minValue().longValue();
157+
final long maxValue = null != encodedDataType && null != encodedDataType.maxValue() ?
158+
encodedDataType.maxValue().longValue() : encodingType.maxValue().longValue();
159+
160+
if (value < minValue || value > maxValue)
161+
{
162+
handleError(
163+
node,
164+
"validValue " + v.name() + " outside of range " + minValue + " - " + maxValue + ": " + value);
165+
}
166+
}
167+
152168
validValueByPrimitiveValueMap.put(v.primitiveValue(), v);
153169
validValueByNameMap.put(v.name(), v);
154170
}

0 commit comments

Comments
 (0)