This is an automated email from the ASF dual-hosted git repository. exceptionfactory pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/nifi.git
commit 5e6f3abdd2c57fe2a8b81cdf2c97e7f1b9a0132e Author: Matt Burgess <[email protected]> AuthorDate: Wed Jun 7 17:13:16 2023 -0400 NIFI-11655 Fixed float and double handling in GenerateRecord This closes #7356 Signed-off-by: David Handermann <[email protected]> --- .../java/org/apache/nifi/processors/standard/GenerateRecord.java | 7 ++++++- .../src/test/resources/TestGenerateRecord/nested_nullable.avsc | 8 +++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GenerateRecord.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GenerateRecord.java index 39f441aa5f..ae639709f2 100644 --- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GenerateRecord.java +++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GenerateRecord.java @@ -59,6 +59,7 @@ import org.apache.nifi.serialization.record.type.MapDataType; import org.apache.nifi.serialization.record.type.RecordDataType; import org.apache.nifi.util.StringUtils; +import java.math.BigDecimal; import java.math.BigInteger; import java.time.LocalDate; import java.time.ZoneId; @@ -310,9 +311,13 @@ public class GenerateRecord extends AbstractProcessor { return (char) faker.number().numberBetween(Character.MIN_VALUE, Character.MAX_VALUE); case DATE: return FakerUtils.getFakeData(DEFAULT_DATE_PROPERTY_NAME, faker); - case DECIMAL: case DOUBLE: + return faker.number().randomDouble(6, Long.MIN_VALUE, Long.MAX_VALUE); case FLOAT: + final double randomDouble = faker.number().randomDouble(6, Long.MIN_VALUE, Long.MAX_VALUE); + final BigDecimal asBigDecimal = new BigDecimal(randomDouble); + return asBigDecimal.floatValue(); + case DECIMAL: return faker.number().randomDouble(((DecimalDataType) recordField.getDataType()).getScale(), Long.MIN_VALUE, Long.MAX_VALUE); case INT: return faker.number().numberBetween(Integer.MIN_VALUE, Integer.MAX_VALUE); diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/TestGenerateRecord/nested_nullable.avsc b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/TestGenerateRecord/nested_nullable.avsc index f7a07ad1a0..d52b451c83 100644 --- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/TestGenerateRecord/nested_nullable.avsc +++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/TestGenerateRecord/nested_nullable.avsc @@ -18,7 +18,13 @@ }, { "name": "Name", "type": ["null", "string"] - }] + }, { + "name": "TestFloat", + "type": ["null", "float"] + }, { + "name": "TestDouble", + "type": ["null", "double"] + }] }] }, { "name": "EventID",
