You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2018/10/15 18:33:45 UTC
nifi git commit: NIFI-5678: Fixed MAP type support of MapRecord
objects in StandardSchemaValidator
Repository: nifi
Updated Branches:
refs/heads/master f55204cb6 -> 218063a0b
NIFI-5678: Fixed MAP type support of MapRecord objects in StandardSchemaValidator
This closes #3060.
Signed-off-by: Mark Payne <ma...@hotmail.com>
Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/218063a0
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/218063a0
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/218063a0
Branch: refs/heads/master
Commit: 218063a0b57c609cbc30276907c0c254d88c699c
Parents: f55204c
Author: Matthew Burgess <ma...@apache.org>
Authored: Wed Oct 10 15:01:40 2018 -0400
Committer: Mark Payne <ma...@hotmail.com>
Committed: Mon Oct 15 14:33:21 2018 -0400
----------------------------------------------------------------------
.../validation/StandardSchemaValidator.java | 37 +++++++++++++-------
.../validation/TestStandardSchemaValidator.java | 8 +++++
2 files changed, 32 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/nifi/blob/218063a0/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-standard-record-utils/src/main/java/org/apache/nifi/schema/validation/StandardSchemaValidator.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-standard-record-utils/src/main/java/org/apache/nifi/schema/validation/StandardSchemaValidator.java b/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-standard-record-utils/src/main/java/org/apache/nifi/schema/validation/StandardSchemaValidator.java
index d467962..eb9722c 100644
--- a/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-standard-record-utils/src/main/java/org/apache/nifi/schema/validation/StandardSchemaValidator.java
+++ b/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-standard-record-utils/src/main/java/org/apache/nifi/schema/validation/StandardSchemaValidator.java
@@ -196,21 +196,32 @@ public class StandardSchemaValidator implements RecordSchemaValidator {
return true;
case MAP:
- if (!(value instanceof Map)) {
- return false;
- }
-
- final MapDataType mapDataType = (MapDataType) dataType;
- final DataType valueDataType = mapDataType.getValueType();
- final Map<?, ?> map = (Map<?, ?>) value;
-
- for (final Object mapValue : map.values()) {
- if (!isTypeCorrect(mapValue, valueDataType)) {
- return false;
+ if (value instanceof Map) {
+ final MapDataType mapDataType = (MapDataType) dataType;
+ final DataType valueDataType = mapDataType.getValueType();
+ final Map<?, ?> map = (Map<?, ?>) value;
+
+ for (final Object mapValue : map.values()) {
+ if (!isTypeCorrect(mapValue, valueDataType)) {
+ return false;
+ }
}
+ return true;
+ } else if (value instanceof Record) {
+ Record record = (Record) value;
+ final MapDataType mapDataType = (MapDataType) dataType;
+ final DataType valueDataType = mapDataType.getValueType();
+
+ for (final String fieldName : record.getRawFieldNames()) {
+ final Object fieldValue = record.getValue(fieldName);
+ if (!isTypeCorrect(fieldValue, valueDataType)) {
+ return false;
+ }
+ }
+ return true;
+ } else {
+ return false;
}
-
- return true;
case RECORD:
return value instanceof Record;
case CHOICE:
http://git-wip-us.apache.org/repos/asf/nifi/blob/218063a0/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-standard-record-utils/src/test/java/org/apache/nifi/schema/validation/TestStandardSchemaValidator.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-standard-record-utils/src/test/java/org/apache/nifi/schema/validation/TestStandardSchemaValidator.java b/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-standard-record-utils/src/test/java/org/apache/nifi/schema/validation/TestStandardSchemaValidator.java
index f323a03..00de9f5 100644
--- a/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-standard-record-utils/src/test/java/org/apache/nifi/schema/validation/TestStandardSchemaValidator.java
+++ b/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-standard-record-utils/src/test/java/org/apache/nifi/schema/validation/TestStandardSchemaValidator.java
@@ -75,6 +75,13 @@ public class TestStandardSchemaValidator {
intMap.put("height", 48);
intMap.put("width", 96);
+ List<RecordField> mapRecordFields = new ArrayList<>();
+ RecordField mapRecordField = new RecordField("mapRecord", RecordFieldType.MAP.getMapDataType(RecordFieldType.INT.getDataType()));
+ mapRecordFields.add(mapRecordField);
+ fields.add(mapRecordField);
+ RecordSchema mapRecordSchema = new SimpleRecordSchema(mapRecordFields);
+ MapRecord mapRecord = new MapRecord(mapRecordSchema, intMap);
+
final RecordSchema schema = new SimpleRecordSchema(fields);
final Map<String, Object> valueMap = new LinkedHashMap<>();
valueMap.put("string", "string");
@@ -94,6 +101,7 @@ public class TestStandardSchemaValidator {
valueMap.put("array", null);
valueMap.put("choice", 48L);
valueMap.put("map", intMap);
+ valueMap.put("mapRecord", mapRecord);
final Record record = new MapRecord(schema, valueMap);