You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by jo...@apache.org on 2022/11/30 19:53:55 UTC
[nifi] 17/22: NIFI-10890 Replaced HashMap with LinkedHashMap in JsonRowRecordReader
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 <ph...@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 <ex...@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)) {