From: David Reiss Date: Wed, 1 Oct 2008 03:24:50 +0000 (+0000) Subject: THRIFT-100. java: Set __isset better in beans style X-Git-Tag: 0.2.0~440 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=5af01bcbdc0aa34486f235294b32674c37192575;p=common%2Fthrift.git THRIFT-100. java: Set __isset better in beans style When setX(null) is called on a structure, set __isset.x to false. git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@700667 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 37af482c..44409286 100644 --- a/compiler/cpp/src/generate/t_java_generator.cc +++ b/compiler/cpp/src/generate/t_java_generator.cc @@ -1131,7 +1131,13 @@ void t_java_generator::generate_java_bean_boilerplate(ofstream& out, indent_up(); indent(out) << "this." << field_name << " = " << field_name << ";" << endl; - indent(out) << "this.__isset." << field_name << " = true;" << endl; + // if the type isn't nullable, then the setter can't have been an unset in disguise. + if ((type->is_base_type() && !type->is_string()) || type->is_enum() ) { + indent(out) << "this.__isset." << field_name << " = true;" << endl; + } else { + indent(out) << "this.__isset." << field_name << " = (" << field_name << " != null);" << endl; + } + indent_down(); indent(out) << "}" << endl << endl;