From: Bryan Duxbury Date: Thu, 1 Sep 2011 18:54:07 +0000 (+0000) Subject: THRIFT-1319. java: Mismatch between how a union reads and writes a container X-Git-Tag: 0.8.0~103 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=adaf82615bb0c59435dc5857541941d2a0b426c7;p=common%2Fthrift.git THRIFT-1319. java: Mismatch between how a union reads and writes a container This patch fixes the problem in the java generator (and removes an unnecessary comment). It also amends TestTUnion to catch this. Patch: Armaan Sarkar git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1164202 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc index 946400bd..db33e934 100644 --- a/compiler/cpp/src/generate/t_java_generator.cc +++ b/compiler/cpp/src/generate/t_java_generator.cc @@ -773,10 +773,6 @@ void t_java_generator::generate_java_union(t_struct* tstruct) { f_struct << endl; - // generate_java_struct_standard_scheme(f_struct, tstruct); - - f_struct << endl; - scope_down(f_struct); f_struct.close(); @@ -1028,7 +1024,7 @@ void t_java_generator::generate_write_value(ofstream& out, t_struct* tstruct) { indent_up(); indent(out) << type_name(field->get_type(), true, false) << " " << field->get_name() << " = (" << type_name(field->get_type(), true, false) << ")value_;" << endl; - generate_serialize_field(out, field, "", false); + generate_serialize_field(out, field, ""); indent(out) << "return;" << endl; indent_down(); } diff --git a/lib/java/test/org/apache/thrift/TestTUnion.java b/lib/java/test/org/apache/thrift/TestTUnion.java index b3d2968b..e9d9825c 100644 --- a/lib/java/test/org/apache/thrift/TestTUnion.java +++ b/lib/java/test/org/apache/thrift/TestTUnion.java @@ -24,6 +24,7 @@ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.nio.ByteBuffer; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -152,6 +153,7 @@ public class TestTUnion extends TestCase { public void testSerialization() throws Exception { TestUnion union = new TestUnion(TestUnion._Fields.I32_FIELD, 25); + union.setI32_set(Collections.singleton(42)); TMemoryBuffer buf = new TMemoryBuffer(0); TProtocol proto = new TBinaryProtocol(buf);