You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by dr...@apache.org on 2008/10/01 05:24:50 UTC
svn commit: r700667 -
/incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc
Author: dreiss
Date: Tue Sep 30 20:24:50 2008
New Revision: 700667
URL: http://svn.apache.org/viewvc?rev=700667&view=rev
Log:
THRIFT-100. java: Set __isset better in beans style
When setX(null) is called on a structure, set __isset.x to false.
Modified:
incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc
Modified: incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc?rev=700667&r1=700666&r2=700667&view=diff
==============================================================================
--- incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc (original)
+++ incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc Tue Sep 30 20:24:50 2008
@@ -1131,7 +1131,13 @@
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;