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<>();