This is an automated email from the ASF dual-hosted git repository. joewitt pushed a commit to branch support/nifi-1.19 in repository https://gitbox.apache.org/repos/asf/nifi.git
commit e6dfea6352f5ffabbbcafde10745c4fc59a64fc1 Author: sopan98 <phaltankarso...@gmail.com> AuthorDate: Mon Nov 28 21:35:44 2022 -0600 NIFI-10890 Replaced HashMap with LinkedHashMap in JsonRowRecordReader - Updated unit test based on deterministic behavior of LinkedHashMap This closes #6726 Signed-off-by: David Handermann <exceptionfact...@apache.org> --- .../java/org/apache/nifi/json/AbstractJsonRowRecordReader.java | 8 ++++---- .../java/org/apache/nifi/json/TestJsonTreeRowRecordReader.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-json-record-utils/src/main/java/org/apache/nifi/json/AbstractJsonRowRecordReader.java b/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-json-record-utils/src/main/java/org/apache/nifi/json/AbstractJsonRowRecordReader.java index b024beed6c..59f12770e9 100644 --- a/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-json-record-utils/src/main/java/org/apache/nifi/json/AbstractJsonRowRecordReader.java +++ b/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-json-record-utils/src/main/java/org/apache/nifi/json/AbstractJsonRowRecordReader.java @@ -43,8 +43,8 @@ import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; import java.util.Collections; -import java.util.HashMap; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.BiPredicate; @@ -119,7 +119,7 @@ public abstract class AbstractJsonRowRecordReader implements RecordReader { this.strategy = strategy; this.captureFieldPredicate = captureFieldPredicate; - capturedFields = new HashMap<>(); + capturedFields = new LinkedHashMap<>(); try { jsonParser = jsonFactory.createParser(in); @@ -306,7 +306,7 @@ public abstract class AbstractJsonRowRecordReader implements RecordReader { final MapDataType mapDataType = (MapDataType) dataType; final DataType valueType = mapDataType.getValueType(); - final Map<String, Object> mapValue = new HashMap<>(); + final Map<String, Object> mapValue = new LinkedHashMap<>(); final Iterator<Map.Entry<String, JsonNode>> fieldItr = fieldNode.fields(); while (fieldItr.hasNext()) { @@ -372,7 +372,7 @@ public abstract class AbstractJsonRowRecordReader implements RecordReader { private Record createRecordFromRawValue(final JsonNode fieldNode, final RecordSchema childSchema) throws IOException { final Iterator<String> fieldNames = fieldNode.fieldNames(); - final Map<String, Object> childValues = new HashMap<>(); + final Map<String, Object> childValues = new LinkedHashMap<>(); while (fieldNames.hasNext()) { final String childFieldName = fieldNames.next(); diff --git a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestJsonTreeRowRecordReader.java b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestJsonTreeRowRecordReader.java index e8b0b6c48c..1f77aa6318 100644 --- a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestJsonTreeRowRecordReader.java +++ b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestJsonTreeRowRecordReader.java @@ -423,7 +423,7 @@ class TestJsonTreeRowRecordReader { fields.add(new RecordField("id", RecordFieldType.INT.getDataType())); final RecordSchema schema = new SimpleRecordSchema(fields); - final String expectedMap = "{id=1, name=John Doe, address=123 My Street, city=My City, state=MS, zipCode=11111, country=USA, account=MapRecord[{balance=4750.89, id=42}]}"; + final String expectedMap = "{id=1, name=John Doe, address=123 My Street, city=My City, state=MS, zipCode=11111, country=USA, account=MapRecord[{id=42, balance=4750.89}]}"; final String expectedRecord = String.format("MapRecord[%s]", expectedMap); try (final InputStream in = new FileInputStream("src/test/resources/json/single-element-nested.json"); final JsonTreeRowRecordReader reader = new JsonTreeRowRecordReader(in, mock(ComponentLog.class), schema, dateFormat, timeFormat, timestampFormat)) {