mirror of
https://github.com/apache/nifi.git
synced 2025-02-06 18:18:27 +00:00
NIFI-8297: Report incompatible value if it doesn't fit in an Integer
Signed-off-by: Pierre Villard <pierre.villard.fr@gmail.com> This closes #4886.
This commit is contained in:
parent
931f8fe798
commit
b039606cf8
@ -1598,6 +1598,14 @@ public class DataTypeUtils {
|
||||
}
|
||||
|
||||
public static boolean isIntegerTypeCompatible(final Object value) {
|
||||
if (value instanceof Number) {
|
||||
try {
|
||||
Math.toIntExact(((Number) value).longValue());
|
||||
return true;
|
||||
} catch (ArithmeticException ae) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return isNumberTypeCompatible(value, s -> isIntegral(s, Integer.MIN_VALUE, Integer.MAX_VALUE));
|
||||
}
|
||||
|
||||
|
@ -429,6 +429,22 @@ public class TestDataTypeUtils {
|
||||
assertFalse(DataTypeUtils.isCompatibleDataType(new Long[]{1L, 2L}, dataType));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIsCompatibleDataTypeInteger() {
|
||||
final DataType dataType = RecordFieldType.INT.getDataType();
|
||||
assertTrue(DataTypeUtils.isCompatibleDataType(new Integer("1234567"), dataType));
|
||||
assertTrue(DataTypeUtils.isCompatibleDataType("1234567", dataType));
|
||||
assertFalse(DataTypeUtils.isCompatibleDataType(new BigInteger("12345678901234567890"), dataType));
|
||||
assertFalse(DataTypeUtils.isCompatibleDataType(1234567890123456789L, dataType));
|
||||
assertTrue(DataTypeUtils.isCompatibleDataType(1, dataType));
|
||||
assertTrue(DataTypeUtils.isCompatibleDataType((short) 1, dataType));
|
||||
assertFalse(DataTypeUtils.isCompatibleDataType("12345678901234567890", dataType));
|
||||
assertTrue(DataTypeUtils.isCompatibleDataType(3.1f, dataType));
|
||||
assertTrue(DataTypeUtils.isCompatibleDataType(3.0, dataType));
|
||||
assertFalse(DataTypeUtils.isCompatibleDataType("1234567XYZ", dataType));
|
||||
assertFalse(DataTypeUtils.isCompatibleDataType(new Long[]{1L, 2L}, dataType));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIsCompatibleDataTypeArrayDifferentElementTypes() {
|
||||
Object[] array = new Object[]{"2", 1};
|
||||
|
Loading…
x
Reference in New Issue
Block a user