You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by to...@apache.org on 2015/08/25 16:27:56 UTC
svn commit: r1697684 - in /avro/branches/branch-1.8: CHANGES.txt
lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
lang/java/ipc/src/test/java/org/apache/avro/specific/TestSpecificData.java
Author: tomwhite
Date: Tue Aug 25 14:27:55 2015
New Revision: 1697684
URL: http://svn.apache.org/r1697684
Log:
AVRO-1676. Java: Do not treat enum symbols as immutable when deep copying. Contributed by Mike Rodriguez.
Modified:
avro/branches/branch-1.8/CHANGES.txt
avro/branches/branch-1.8/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
avro/branches/branch-1.8/lang/java/ipc/src/test/java/org/apache/avro/specific/TestSpecificData.java
Modified: avro/branches/branch-1.8/CHANGES.txt
URL: http://svn.apache.org/viewvc/avro/branches/branch-1.8/CHANGES.txt?rev=1697684&r1=1697683&r2=1697684&view=diff
==============================================================================
--- avro/branches/branch-1.8/CHANGES.txt (original)
+++ avro/branches/branch-1.8/CHANGES.txt Tue Aug 25 14:27:55 2015
@@ -181,6 +181,9 @@ Avro 1.8.0 (10 August 2014)
AVRO-1491. Avro.ipc.dll not included in release zip/build file.
(Dmitry Kovalev via tomwhite)
+ AVRO-1676. Java: Do not treat enum symbols as immutable when deep copying.
+ (Mike Rodriguez via tomwhite)
+
Avro 1.7.7 (23 July 2014)
NEW FEATURES
Modified: avro/branches/branch-1.8/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
URL: http://svn.apache.org/viewvc/avro/branches/branch-1.8/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java?rev=1697684&r1=1697683&r2=1697684&view=diff
==============================================================================
--- avro/branches/branch-1.8/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java (original)
+++ avro/branches/branch-1.8/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java Tue Aug 25 14:27:55 2015
@@ -1049,8 +1049,7 @@ public class GenericData {
case DOUBLE:
return value; // immutable
case ENUM:
- // Enums are immutable; shallow copy will suffice
- return value;
+ return (T)createEnum(value.toString(), schema);
case FIXED:
return (T)createFixed(null, ((GenericFixed) value).bytes(), schema);
case FLOAT:
Modified: avro/branches/branch-1.8/lang/java/ipc/src/test/java/org/apache/avro/specific/TestSpecificData.java
URL: http://svn.apache.org/viewvc/avro/branches/branch-1.8/lang/java/ipc/src/test/java/org/apache/avro/specific/TestSpecificData.java?rev=1697684&r1=1697683&r2=1697684&view=diff
==============================================================================
--- avro/branches/branch-1.8/lang/java/ipc/src/test/java/org/apache/avro/specific/TestSpecificData.java (original)
+++ avro/branches/branch-1.8/lang/java/ipc/src/test/java/org/apache/avro/specific/TestSpecificData.java Tue Aug 25 14:27:55 2015
@@ -46,6 +46,8 @@ import org.apache.avro.test.MD5;
import org.apache.avro.test.Kind;
import org.apache.avro.test.Reserved;
+import org.apache.avro.generic.GenericRecord;
+
public class TestSpecificData {
@Test
@@ -101,6 +103,16 @@ public class TestSpecificData {
new SpecificDatumReader<Object>());
}
+ @Test public void testConvertGenericToSpecific() {
+ GenericRecord generic = new GenericData.Record(TestRecord.SCHEMA$);
+ generic.put("name", "foo");
+ generic.put("kind", new GenericData.EnumSymbol(Kind.SCHEMA$, "BAR"));
+ generic.put("hash", new GenericData.Fixed
+ (MD5.SCHEMA$, new byte[]{0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5}));
+ TestRecord specific =
+ (TestRecord)SpecificData.get().deepCopy(TestRecord.SCHEMA$, generic);
+ }
+
@Test public void testGetClassSchema() throws Exception {
Assert.assertEquals(TestRecord.getClassSchema(), TestRecord.SCHEMA$);
Assert.assertEquals(MD5.getClassSchema(), MD5.SCHEMA$);