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
The following commit(s) were added to refs/heads/main by this push:
new a3e8048b2d NIFI-9981 Added support for Avro UUID types
a3e8048b2d is described below
commit a3e8048b2d9c42d975965d482e33c28885f198e2
Author: Mike Thomsen <[email protected]>
AuthorDate: Tue May 3 09:16:41 2022 -0400
NIFI-9981 Added support for Avro UUID types
This closes #6013
Signed-off-by: David Handermann <[email protected]>
---
.../nifi/serialization/record/RecordFieldType.java | 5 ++
.../serialization/record/util/DataTypeUtils.java | 52 +++++++++++++++++++++
.../serialization/record/TestDataTypeUtils.java | 53 ++++++++++++++++++++++
.../java/org/apache/nifi/avro/AvroTypeUtil.java | 7 +++
.../org/apache/nifi/avro/TestAvroTypeUtil.java | 35 ++++++++++++++
.../apache/nifi/json/JsonPathRowRecordReader.java | 1 +
.../apache/nifi/json/JsonTreeRowRecordReader.java | 1 +
.../java/org/apache/nifi/json/WriteJsonResult.java | 1 +
.../java/org/apache/nifi/xml/WriteXMLResult.java | 1 +
.../java/org/apache/nifi/xml/XMLRecordReader.java | 1 +
.../org/apache/nifi/csv/TestWriteCSVResult.java | 4 +-
.../org/apache/nifi/json/TestWriteJsonResult.java | 1 +
.../org/apache/nifi/xml/TestWriteXMLResult.java | 3 +-
.../src/test/resources/json/output/dataTypes.json | 1 +
14 files changed, 164 insertions(+), 2 deletions(-)
diff --git
a/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/RecordFieldType.java
b/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/RecordFieldType.java
index 8f57f7ce04..beceead604 100644
---
a/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/RecordFieldType.java
+++
b/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/RecordFieldType.java
@@ -95,6 +95,11 @@ public enum RecordFieldType {
*/
TIME("time", "HH:mm:ss"),
+ /**
+ * A UUID data type. Fields of this type us a {@code java.util.UUID} value
+ */
+ UUID("uuid"),
+
/**
* A char field type. Fields of this type use a {@code char} value.
*/
diff --git
a/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/util/DataTypeUtils.java
b/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/util/DataTypeUtils.java
index 1416b9777d..e281d6cfbe 100644
---
a/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/util/DataTypeUtils.java
+++
b/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/util/DataTypeUtils.java
@@ -38,6 +38,7 @@ import java.io.Reader;
import java.lang.reflect.Array;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.sql.Blob;
@@ -72,6 +73,7 @@ import java.util.Optional;
import java.util.Queue;
import java.util.Set;
import java.util.TimeZone;
+import java.util.UUID;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
@@ -210,6 +212,8 @@ public class DataTypeUtils {
return toTime(value, timeFormat, fieldName);
case TIMESTAMP:
return toTimestamp(value, timestampFormat, fieldName);
+ case UUID:
+ return toUUID(value);
case ARRAY:
return toArray(value, fieldName,
((ArrayDataType)dataType).getElementType(), charset);
case MAP:
@@ -233,6 +237,40 @@ public class DataTypeUtils {
return null;
}
+ private static Object toUUID(Object value) {
+ if (value == null) {
+ throw new IllegalTypeConversionException("Null values cannot be
converted to a UUID");
+ }
+
+ if (value instanceof String) {
+ try {
+ return UUID.fromString((String)value);
+ } catch (Exception ex) {
+ throw new IllegalTypeConversionException(String.format("Could
not parse %s into a UUID", value), ex);
+ }
+ } else if (value instanceof byte[]) {
+ return uuidFromBytes((byte[])value);
+ } else if (value instanceof Byte[]) {
+ Byte[] array = (Byte[])value;
+ byte[] converted = new byte[array.length];
+ for (int x = 0; x < array.length; x++) {
+ converted[x] = array[x];
+ }
+ return uuidFromBytes(converted);
+ } else {
+ throw new IllegalTypeConversionException(value.getClass() + "
cannot be converted into a UUID");
+ }
+ }
+
+ private static UUID uuidFromBytes(byte[] bytes) {
+ try {
+ ByteBuffer buffer = ByteBuffer.wrap(bytes);
+ return new UUID(buffer.getLong(), buffer.getLong());
+ } catch (Exception ex) {
+ throw new IllegalTypeConversionException("Could not convert bytes
to UUID");
+ }
+ }
+
public static boolean isCompatibleDataType(final Object value, final
DataType dataType) {
return isCompatibleDataType(value, dataType, false);
}
@@ -712,6 +750,20 @@ public class DataTypeUtils {
return dest;
}
+ if (value instanceof UUID) {
+ UUID uuid = (UUID)value;
+ ByteBuffer buffer = ByteBuffer.allocate(16);
+ buffer.putLong(uuid.getMostSignificantBits());
+ buffer.putLong(uuid.getLeastSignificantBits());
+ Byte[] result = new Byte[16];
+ byte[] array = buffer.array();
+ for (int index = 0; index < array.length; index++) {
+ result[index] = array[index];
+ }
+
+ return result;
+ }
+
if (value instanceof List) {
final List<?> list = (List<?>)value;
return list.toArray();
diff --git
a/nifi-commons/nifi-record/src/test/java/org/apache/nifi/serialization/record/TestDataTypeUtils.java
b/nifi-commons/nifi-record/src/test/java/org/apache/nifi/serialization/record/TestDataTypeUtils.java
index 8d9f13aaf7..46cd012239 100644
---
a/nifi-commons/nifi-record/src/test/java/org/apache/nifi/serialization/record/TestDataTypeUtils.java
+++
b/nifi-commons/nifi-record/src/test/java/org/apache/nifi/serialization/record/TestDataTypeUtils.java
@@ -26,6 +26,7 @@ import org.junit.jupiter.api.Test;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.sql.Date;
import java.sql.Timestamp;
@@ -49,6 +50,7 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.TimeZone;
+import java.util.UUID;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.DoubleAdder;
import java.util.function.Function;
@@ -133,6 +135,57 @@ public class TestDataTypeUtils {
}
+ @Test
+ public void testUUIDStringToUUIDObject() {
+ UUID generated = UUID.randomUUID();
+ String uuidString = generated.toString();
+
+ Object result = DataTypeUtils.convertType(uuidString,
RecordFieldType.UUID.getDataType(), "uuid_test");
+ assertTrue(result instanceof UUID);
+ assertEquals(generated, result);
+ }
+
+ @Test
+ public void testUUIDObjectToUUIDString() {
+ UUID generated = UUID.randomUUID();
+ String uuid = generated.toString();
+
+ Object result = DataTypeUtils.convertType(generated,
RecordFieldType.STRING.getDataType(), "uuid_test");
+ assertTrue(result instanceof String);
+ assertEquals(uuid, result);
+ }
+
+ @Test
+ public void testUUIDToByteArray() {
+ UUID generated = UUID.randomUUID();
+ ByteBuffer buffer = ByteBuffer.allocate(16);
+ buffer.putLong(generated.getMostSignificantBits());
+ buffer.putLong(generated.getLeastSignificantBits());
+ byte[] expected = buffer.array();
+
+ Object result = DataTypeUtils.convertType(expected,
RecordFieldType.UUID.getDataType(), "uuid_test");
+ assertTrue(result instanceof UUID);
+ assertEquals(generated, result);
+ }
+
+ @Test
+ public void testByteArrayToUUID() {
+ UUID generated = UUID.randomUUID();
+ ByteBuffer buffer = ByteBuffer.allocate(16);
+ buffer.putLong(generated.getMostSignificantBits());
+ buffer.putLong(generated.getLeastSignificantBits());
+ byte[] expected = buffer.array();
+
+ Object result = DataTypeUtils.convertType(expected,
RecordFieldType.ARRAY.getDataType(), "uuid_test");
+ assertTrue(result instanceof Byte[]);
+ assertEquals( 16, ((Byte[]) result).length);
+ Byte[] bytes = (Byte[])result;
+ for (int x = 0; x < bytes.length; x++) {
+ byte current = bytes[x];
+ assertEquals(expected[x], current);
+ }
+ }
+
@Test
public void testConvertRecordArrayToJavaArray() {
assertNull(DataTypeUtils.convertRecordArrayToJavaArray(null, null));
diff --git
a/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/src/main/java/org/apache/nifi/avro/AvroTypeUtil.java
b/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/src/main/java/org/apache/nifi/avro/AvroTypeUtil.java
index 09e908fa4e..ac82e812ea 100644
---
a/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/src/main/java/org/apache/nifi/avro/AvroTypeUtil.java
+++
b/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/src/main/java/org/apache/nifi/avro/AvroTypeUtil.java
@@ -89,6 +89,7 @@ public class AvroTypeUtil {
private static final String LOGICAL_TYPE_TIMESTAMP_MILLIS =
"timestamp-millis";
private static final String LOGICAL_TYPE_TIMESTAMP_MICROS =
"timestamp-micros";
private static final String LOGICAL_TYPE_DECIMAL = "decimal";
+ private static final String LOGICAL_TYPE_UUID = "uuid";
public static Schema extractAvroSchema(final RecordSchema recordSchema) {
@@ -299,6 +300,10 @@ public class AvroTypeUtil {
schema = Schema.create(Type.LONG);
LogicalTypes.timestampMillis().addToSchema(schema);
break;
+ case UUID:
+ schema = Schema.create(Type.STRING);
+ LogicalTypes.uuid().addToSchema(schema);
+ break;
case ENUM:
final EnumDataType enumType = (EnumDataType) dataType;
schema = Schema.createEnum(fieldName, "", "org.apache.nifi",
enumType.getEnums());
@@ -362,6 +367,8 @@ public class AvroTypeUtil {
case LOGICAL_TYPE_DECIMAL:
final LogicalTypes.Decimal decimal =
(LogicalTypes.Decimal) logicalType;
return
RecordFieldType.DECIMAL.getDecimalDataType(decimal.getPrecision(),
decimal.getScale());
+ case LOGICAL_TYPE_UUID:
+ return RecordFieldType.UUID.getDataType();
}
}
diff --git
a/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/src/test/java/org/apache/nifi/avro/TestAvroTypeUtil.java
b/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/src/test/java/org/apache/nifi/avro/TestAvroTypeUtil.java
index f5f93ecbc6..938f0ebf3a 100644
---
a/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/src/test/java/org/apache/nifi/avro/TestAvroTypeUtil.java
+++
b/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/src/test/java/org/apache/nifi/avro/TestAvroTypeUtil.java
@@ -186,6 +186,41 @@ public class TestAvroTypeUtil {
assertEquals(0L, avroRecord.get("number"));
}
+ @Test
+ public void testUUIDSupport() {
+ final List<RecordField> fields = new ArrayList<>();
+ fields.add(new RecordField("uuidv4",
RecordFieldType.UUID.getDataType(), false));
+ final RecordSchema schema = new SimpleRecordSchema(fields);
+ final Schema result = AvroTypeUtil.extractAvroSchema(schema);
+ assertNotNull(result);
+ assertEquals(1, result.getFields().size());
+ assertNotNull(result.getFields().get(0));
+ assertEquals(LogicalTypes.uuid(),
result.getFields().get(0).schema().getLogicalType());
+ }
+
+ @Test
+ public void testAvroUUIDToRecordApiUUID() {
+ String avroSchema = "{\n" +
+ "\t\"type\": \"record\",\n" +
+ "\t\"name\": \"test\",\n" +
+ "\t\"fields\": [\n" +
+ "\t\t{\n" +
+ "\t\t\t\"name\": \"uuid_test\",\n" +
+ "\t\t\t\"type\": {\n" +
+ "\t\t\t\t\"type\": \"string\",\n" +
+ "\t\t\t\t\"logicalType\": \"uuid\"\n" +
+ "\t\t\t}\n" +
+ "\t\t}\n" +
+ "\t]\n" +
+ "}";
+ Schema schema = new Schema.Parser().parse(avroSchema);
+ RecordSchema recordSchema = AvroTypeUtil.createSchema(schema);
+ Optional<RecordField> uuidField = recordSchema.getField("uuid_test");
+ assertTrue(uuidField.isPresent());
+ RecordField field = uuidField.get();
+ assertTrue(field.getDataType() == RecordFieldType.UUID.getDataType());
+ }
+
@Test
public void testCreateAvroSchemaPrimitiveTypes() {
final List<RecordField> fields = new ArrayList<>();
diff --git
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/JsonPathRowRecordReader.java
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/JsonPathRowRecordReader.java
index 61fa2cdb7f..21ff1c3920 100644
---
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/JsonPathRowRecordReader.java
+++
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/JsonPathRowRecordReader.java
@@ -184,6 +184,7 @@ public class JsonPathRowRecordReader extends
AbstractJsonRowRecordReader {
switch (dataType.getFieldType()) {
case DATE:
case TIME:
+ case UUID:
case TIMESTAMP:
try {
return DataTypeUtils.convertType(value, dataType,
getLazyDateFormat(), getLazyTimeFormat(), getLazyTimestampFormat(), fieldName);
diff --git
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/JsonTreeRowRecordReader.java
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/JsonTreeRowRecordReader.java
index 7f36e64bc6..ae2ae11afb 100644
---
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/JsonTreeRowRecordReader.java
+++
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/JsonTreeRowRecordReader.java
@@ -198,6 +198,7 @@ public class JsonTreeRowRecordReader extends
AbstractJsonRowRecordReader {
case ENUM:
case DATE:
case TIME:
+ case UUID:
case TIMESTAMP: {
final Object rawValue = getRawNodeValue(fieldNode, fieldName);
return DataTypeUtils.convertType(rawValue, desiredType,
getLazyDateFormat(), getLazyTimeFormat(), getLazyTimestampFormat(), fieldName);
diff --git
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/WriteJsonResult.java
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/WriteJsonResult.java
index 6348337b4d..d96860f91a 100644
---
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/WriteJsonResult.java
+++
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/WriteJsonResult.java
@@ -374,6 +374,7 @@ public class WriteJsonResult extends
AbstractRecordSetWriter implements RecordSe
case SHORT:
generator.writeNumber(DataTypeUtils.toInteger(coercedValue,
fieldName));
break;
+ case UUID:
case CHAR:
case STRING:
generator.writeString(coercedValue.toString());
diff --git
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/xml/WriteXMLResult.java
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/xml/WriteXMLResult.java
index 3903ca20d5..8e272d07dc 100644
---
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/xml/WriteXMLResult.java
+++
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/xml/WriteXMLResult.java
@@ -263,6 +263,7 @@ public class WriteXMLResult extends AbstractRecordSetWriter
implements RecordSet
case INT:
case LONG:
case SHORT:
+ case UUID:
case STRING: {
writeAllTags(tagsToOpen, fieldName);
writer.writeCharacters(coercedValue.toString());
diff --git
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/xml/XMLRecordReader.java
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/xml/XMLRecordReader.java
index 9eec76a552..e656553923 100644
---
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/xml/XMLRecordReader.java
+++
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/xml/XMLRecordReader.java
@@ -154,6 +154,7 @@ public class XMLRecordReader implements RecordReader {
case STRING:
case DATE:
case TIME:
+ case UUID:
case TIMESTAMP: {
StringBuilder content = new StringBuilder();
diff --git
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/csv/TestWriteCSVResult.java
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/csv/TestWriteCSVResult.java
index 44af9ddee3..96efe4a155 100644
---
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/csv/TestWriteCSVResult.java
+++
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/csv/TestWriteCSVResult.java
@@ -134,6 +134,7 @@ public class TestWriteCSVResult {
valueMap.put("choice", 48L);
valueMap.put("array", null);
valueMap.put("enum", null);
+ valueMap.put("uuid", "8bb20bf2-ec41-4b94-80a4-922f4dba009c");
final Record record = new MapRecord(schema, valueMap);
final RecordSet rs = RecordSet.of(schema, record);
@@ -156,7 +157,8 @@ public class TestWriteCSVResult {
final String values = splits[1];
final StringBuilder expectedBuilder = new StringBuilder();
-
expectedBuilder.append("\"true\",\"1\",\"8\",\"9\",\"8\",\"8\",\"8.0\",\"8.0\",\"8.1\",\""
+ timestampValue + "\",\"" + dateValue + "\",\"" + timeValue +
"\",\"c\",,\"a孟bc李12儒3\",,\"48\",,");
+
expectedBuilder.append("\"true\",\"1\",\"8\",\"9\",\"8\",\"8\",\"8.0\",\"8.0\",\"8.1\",\""
+ timestampValue +
+ "\",\"" + dateValue + "\",\"" + timeValue +
"\",\"8bb20bf2-ec41-4b94-80a4-922f4dba009c\",\"c\",,\"a孟bc李12儒3\",,\"48\",,");
final String expectedValues = expectedBuilder.toString();
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/TestWriteJsonResult.java
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestWriteJsonResult.java
index 84e06523cd..4cdef538c8 100644
---
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestWriteJsonResult.java
+++
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestWriteJsonResult.java
@@ -102,6 +102,7 @@ class TestWriteJsonResult {
valueMap.put("enum", null);
valueMap.put("choice", 48L);
valueMap.put("map", map);
+ valueMap.put("uuid", "8bb20bf2-ec41-4b94-80a4-922f4dba009c");
final Record record = new MapRecord(schema, valueMap);
final RecordSet rs = RecordSet.of(schema, record);
diff --git
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/xml/TestWriteXMLResult.java
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/xml/TestWriteXMLResult.java
index 2fe263eea6..91304d958b 100644
---
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/xml/TestWriteXMLResult.java
+++
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/xml/TestWriteXMLResult.java
@@ -197,6 +197,7 @@ public class TestWriteXMLResult {
valueMap.put("enum", null);
valueMap.put("choice", 48L);
valueMap.put("map", map);
+ valueMap.put("uuid", "8bb20bf2-ec41-4b94-80a4-922f4dba009c");
final Record record = new MapRecord(schema, valueMap);
final RecordSet rs = RecordSet.of(schema, record);
@@ -207,7 +208,7 @@ public class TestWriteXMLResult {
writer.write(rs);
writer.flush();
- String xmlResult =
"<ROOT><RECORD><string>string</string><boolean>true</boolean><byte>1</byte><char>c</char><enum
/><short>8</short>" +
+ String xmlResult =
"<ROOT><RECORD><string>string</string><boolean>true</boolean><byte>1</byte><uuid>8bb20bf2-ec41-4b94-80a4-922f4dba009c</uuid><char>c</char><enum
/><short>8</short>" +
"<int>9</int><bigint>8</bigint><long>8</long><float>8.0</float><double>8.0</double><decimal>8.1</decimal>"
+
"<date>2017-01-01</date><time>17:00:00</time><timestamp>2017-01-01
17:00:00</timestamp><record /><choice>48</choice><array />" +
"<map><height>48</height><width>96</width></map></RECORD></ROOT>";
diff --git
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/resources/json/output/dataTypes.json
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/resources/json/output/dataTypes.json
index e991978e1a..e4b5ef6d02 100644
---
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/resources/json/output/dataTypes.json
+++
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/resources/json/output/dataTypes.json
@@ -11,6 +11,7 @@
"timestamp" : "2017-01-01 17:00:00",
"date" : "2017-01-01",
"time" : "17:00:00",
+ "uuid": "8bb20bf2-ec41-4b94-80a4-922f4dba009c",
"char" : "c",
"enum" : null,
"string" : "string",