From a0fc60e31e4e430dac0d2b691740e3f7e090afec Mon Sep 17 00:00:00 2001 From: Zoltan Farkas Date: Tue, 7 Feb 2017 13:52:08 -0500 Subject: [PATCH] [fix] get/set defaults for fixed. --- .../java/org/apache/avro/SchemaBuilder.java | 4 ++++ .../avro/util/internal/JacksonUtils.java | 3 ++- .../test/java/org/apache/avro/TestFixed.java | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 lang/java/avro/src/test/java/org/apache/avro/TestFixed.java diff --git a/lang/java/avro/src/main/java/org/apache/avro/SchemaBuilder.java b/lang/java/avro/src/main/java/org/apache/avro/SchemaBuilder.java index f1a1faa1515..ce038d4b448 100644 --- a/lang/java/avro/src/main/java/org/apache/avro/SchemaBuilder.java +++ b/lang/java/avro/src/main/java/org/apache/avro/SchemaBuilder.java @@ -2587,6 +2587,10 @@ private static JsonNode toJsonNode(Object o) { s = new String(data, "ISO-8859-1"); char[] quoted = JsonStringEncoder.getInstance().quoteAsString(s); s = "\"" + new String(quoted) + "\""; + } else if (o instanceof byte[]) { + s = new String((byte[]) o, "ISO-8859-1"); + char[] quoted = JsonStringEncoder.getInstance().quoteAsString(s); + s = '\"' + new String(quoted) + '\"'; } else { s = GenericData.get().toString(o); } diff --git a/lang/java/avro/src/main/java/org/apache/avro/util/internal/JacksonUtils.java b/lang/java/avro/src/main/java/org/apache/avro/util/internal/JacksonUtils.java index ca98e4c540d..49b939e729a 100644 --- a/lang/java/avro/src/main/java/org/apache/avro/util/internal/JacksonUtils.java +++ b/lang/java/avro/src/main/java/org/apache/avro/util/internal/JacksonUtils.java @@ -120,7 +120,8 @@ public static Object toObject(JsonNode jsonNode, Schema schema) { if (schema == null || schema.getType().equals(Schema.Type.STRING) || schema.getType().equals(Schema.Type.ENUM)) { return jsonNode.asText(); - } else if (schema.getType().equals(Schema.Type.BYTES)) { + } else if (schema.getType().equals(Schema.Type.BYTES) + || schema.getType().equals(Schema.Type.FIXED)) { try { return jsonNode.getTextValue().getBytes(BYTES_CHARSET); } catch (UnsupportedEncodingException e) { diff --git a/lang/java/avro/src/test/java/org/apache/avro/TestFixed.java b/lang/java/avro/src/test/java/org/apache/avro/TestFixed.java new file mode 100644 index 00000000000..da0ab5f3029 --- /dev/null +++ b/lang/java/avro/src/test/java/org/apache/avro/TestFixed.java @@ -0,0 +1,19 @@ +package org.apache.avro; + +import org.junit.Assert; +import org.junit.Test; + +public class TestFixed { + + + @Test + public void testFixedDefaultValueDrop() { + Schema md5 = SchemaBuilder.builder().fixed("MD5").size(16); + Schema frec = SchemaBuilder.builder().record("test") + .fields().name("hash").type(md5).withDefault(new byte[16]).endRecord(); + Schema.Field field = frec.getField("hash"); + Assert.assertNotNull(field.defaultVal()); + Assert.assertArrayEquals(new byte[16], (byte[]) field.defaultVal()); + } + +}