Make the Java generator respect the optional keyword in struct writers
authorMark Slee <mcslee@apache.org>
Wed, 24 Oct 2007 02:56:24 +0000 (02:56 +0000)
committerMark Slee <mcslee@apache.org>
Wed, 24 Oct 2007 02:56:24 +0000 (02:56 +0000)
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

compiler/cpp/src/generate/t_java_generator.cc

index ea27854..0bfab75 100644 (file)
@@ -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;