From: Mark Slee Date: Wed, 24 Oct 2007 02:56:24 +0000 (+0000) Subject: Make the Java generator respect the optional keyword in struct writers X-Git-Tag: 0.2.0~1164 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=2e7801d7c0b7b881067f4f84c664f22e64a988fa;p=common%2Fthrift.git Make the Java generator respect the optional keyword in struct writers Reviewed By: dreiss Test Plan: Generate Java code. Check functionality and safe compile git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665308 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 ea27854d..0bfab75d 100644 --- a/compiler/cpp/src/generate/t_java_generator.cc +++ b/compiler/cpp/src/generate/t_java_generator.cc @@ -566,6 +566,11 @@ void t_java_generator::generate_java_struct_writer(ofstream& out, indent() << "if (this." << (*f_iter)->get_name() << " != null) {" << endl; indent_up(); } + bool optional = bean_style_ && (*f_iter)->get_req() == t_field::OPTIONAL; + if (optional) { + out << + indent() << "if (this.__isset." << (*f_iter)->get_name() << ") {" << endl; + } out << indent() << "field.name = \"" << (*f_iter)->get_name() << "\";" << endl << @@ -580,6 +585,10 @@ void t_java_generator::generate_java_struct_writer(ofstream& out, indent(out) << "oprot.writeFieldEnd();" << endl; + if (optional) { + indent_down(); + indent(out) << "}" << endl; + } if (null_allowed) { indent_down(); indent(out) << "}" << endl;