You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by jg...@apache.org on 2022/02/23 18:12:15 UTC
[nifi] branch main updated: NIFI-9721: Support enum types in AvroTypeUtil.buildAvroSchema()
This is an automated email from the ASF dual-hosted git repository.
jgresock 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 ab4cadc NIFI-9721: Support enum types in AvroTypeUtil.buildAvroSchema()
ab4cadc is described below
commit ab4cadc20444bc6c1539ae1806f3747552cac8cb
Author: Matthew Burgess <ma...@apache.org>
AuthorDate: Wed Feb 23 11:06:41 2022 -0500
NIFI-9721: Support enum types in AvroTypeUtil.buildAvroSchema()
Signed-off-by: Joe Gresock <jg...@gmail.com>
This closes #5793.
---
.../src/main/java/org/apache/nifi/avro/AvroTypeUtil.java | 5 +++++
.../src/test/java/org/apache/nifi/avro/TestAvroTypeUtil.java | 11 +++++++++++
2 files changed, 16 insertions(+)
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 fb29f66..fef3515 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
@@ -46,6 +46,7 @@ import org.apache.nifi.serialization.record.StandardSchemaIdentifier;
import org.apache.nifi.serialization.record.type.ArrayDataType;
import org.apache.nifi.serialization.record.type.ChoiceDataType;
import org.apache.nifi.serialization.record.type.DecimalDataType;
+import org.apache.nifi.serialization.record.type.EnumDataType;
import org.apache.nifi.serialization.record.type.MapDataType;
import org.apache.nifi.serialization.record.type.RecordDataType;
import org.apache.nifi.serialization.record.util.DataTypeUtils;
@@ -298,6 +299,10 @@ public class AvroTypeUtil {
schema = Schema.create(Type.LONG);
LogicalTypes.timestampMillis().addToSchema(schema);
break;
+ case ENUM:
+ final EnumDataType enumType = (EnumDataType) dataType;
+ schema = Schema.createEnum(fieldName, "", "org.apache.nifi", enumType.getEnums());
+ break;
default:
return null;
}
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 42e9141..3ab9474 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
@@ -1155,6 +1155,17 @@ public class TestAvroTypeUtil {
assertEquals(expected, actual.toString());
}
+ @Test
+ public void testBuildEnumSchema() {
+ final List<RecordField> fields = new ArrayList<>();
+
+ final DataType enumDataType = RecordFieldType.ENUM.getEnumDataType(Arrays.asList("YES", "NO"));
+ fields.add(new RecordField("enumField", enumDataType));
+ RecordSchema recordSchema = new SimpleRecordSchema(fields);
+ Schema actual = AvroTypeUtil.extractAvroSchema(recordSchema);
+ assertNotNull(actual);
+ }
+
private MapRecord givenRecordContainingNumericMap() {
final Map<String, Object> numberValues = new HashMap<>();