From 4ff6be45148e6e6d4fa1121fec72dc7c51fbad22 Mon Sep 17 00:00:00 2001 From: JohannesDaniel Date: Mon, 14 May 2018 16:28:46 +0200 Subject: [PATCH] NIFI-5189 Schema name is not available for RecordSchema --- .../nifi-record-utils/nifi-avro-record-utils/pom.xml | 1 + .../main/java/org/apache/nifi/avro/AvroTypeUtil.java | 4 +++- .../java/org/apache/nifi/avro/TestAvroTypeUtil.java | 8 ++++++++ .../resources/org/apache/nifi/avro/simpleSchema.json | 11 +++++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) mode change 100644 => 100755 nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/pom.xml mode change 100644 => 100755 nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/src/main/java/org/apache/nifi/avro/AvroTypeUtil.java mode change 100644 => 100755 nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/src/test/java/org/apache/nifi/avro/TestAvroTypeUtil.java create mode 100755 nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/src/test/resources/org/apache/nifi/avro/simpleSchema.json diff --git a/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/pom.xml b/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/pom.xml old mode 100644 new mode 100755 index 21ab5f36f07e..0f5dc62c402b --- a/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/pom.xml +++ b/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/pom.xml @@ -53,6 +53,7 @@ src/test/resources/org/apache/nifi/avro/data.avro src/test/resources/org/apache/nifi/avro/schema.json + src/test/resources/org/apache/nifi/avro/simpleSchema.json src/test/resources/org/apache/nifi/avro/defaultArrayValue1.json src/test/resources/org/apache/nifi/avro/defaultArrayValue2.json src/test/resources/org/apache/nifi/avro/defaultArrayInRecords1.json 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 old mode 100644 new mode 100755 index 411ca68e5e19..c21481999094 --- 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 @@ -62,6 +62,7 @@ import org.apache.nifi.serialization.record.RecordFieldType; import org.apache.nifi.serialization.record.RecordSchema; import org.apache.nifi.serialization.record.SchemaIdentifier; +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.MapDataType; @@ -367,7 +368,8 @@ public static RecordSchema createSchema(final Schema avroSchema) { throw new IllegalArgumentException("Avro Schema cannot be null"); } - return createSchema(avroSchema, avroSchema.toString(), SchemaIdentifier.EMPTY); + SchemaIdentifier identifier = new StandardSchemaIdentifier.Builder().name(avroSchema.getName()).build(); + return createSchema(avroSchema, avroSchema.toString(), identifier); } /** 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 old mode 100644 new mode 100755 index e4e515b185fb..83d54c6fadaa --- 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 @@ -396,6 +396,14 @@ public void testToDecimalConversion() { } + @Test + public void testSchemaNameNotEmpty() throws IOException { + Schema schema = new Schema.Parser().parse(getClass().getResourceAsStream("simpleSchema.json")); + RecordSchema recordSchema = AvroTypeUtil.createSchema(schema); + Assert.assertTrue(recordSchema.getIdentifier().getName().isPresent()); + Assert.assertEquals(Optional.of("record_name"), recordSchema.getIdentifier().getName()); + } + @Test public void testStringToBytesConversion() { Object o = AvroTypeUtil.convertToAvroObject("Hello", Schema.create(Type.BYTES), StandardCharsets.UTF_16); diff --git a/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/src/test/resources/org/apache/nifi/avro/simpleSchema.json b/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/src/test/resources/org/apache/nifi/avro/simpleSchema.json new file mode 100755 index 000000000000..95ba69349453 --- /dev/null +++ b/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-avro-record-utils/src/test/resources/org/apache/nifi/avro/simpleSchema.json @@ -0,0 +1,11 @@ +{ + "type": "record", + "name": "record_name", + "namespace": "namespace", + "fields": [ + { + "name": "field1", + "type": "string" + } + ] +} \ No newline at end of file