You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by je...@apache.org on 2013/06/09 13:48:07 UTC
git commit: Thrift-1775:
Updated Branches:
refs/heads/master 765bbfb55 -> d522421d7
Thrift-1775:
Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/d522421d
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/d522421d
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/d522421d
Branch: refs/heads/master
Commit: d522421d7f8260fa180a607ab7db5af02b7a16a2
Parents: 765bbfb
Author: kamilsalas <ka...@gmail.com>
Authored: Sun Feb 3 22:07:02 2013 +0100
Committer: Jens Geyer <je...@apache.org>
Committed: Sun Jun 9 13:47:37 2013 +0200
----------------------------------------------------------------------
compiler/cpp/src/generate/t_java_generator.cc | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/thrift/blob/d522421d/compiler/cpp/src/generate/t_java_generator.cc
----------------------------------------------------------------------
diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc
index c9a3e56..988bbbf 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -808,8 +808,24 @@ void t_java_generator::generate_java_union(t_struct* tstruct) {
}
void t_java_generator::generate_union_constructor(ofstream& out, t_struct* tstruct) {
+ const vector<t_field*>& members = tstruct->get_members();
+ vector<t_field*>::const_iterator m_iter;
+
indent(out) << "public " << type_name(tstruct) << "() {" << endl;
- indent(out) << " super();" << endl;
+ indent_up();
+ bool default_value = false;
+ for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
+ t_type* type = get_true_type((*m_iter)->get_type());
+ if ((*m_iter)->get_value() != NULL) {
+ indent(out) << "super(_Fields." << constant_name((*m_iter)->get_name()) << ", " << render_const_value(out, type, (*m_iter)->get_value()) << ");" << endl;
+ default_value = true;
+ break;
+ }
+ }
+ if (default_value == false) {
+ indent(out) << "super();" << endl;
+ }
+ indent_down();
indent(out) << "}" << endl << endl;
indent(out) << "public " << type_name(tstruct) << "(_Fields setField, Object value) {" << endl;
@@ -825,8 +841,6 @@ void t_java_generator::generate_union_constructor(ofstream& out, t_struct* tstru
indent(out) << "}" << endl << endl;
// generate "constructors" for each field
- const vector<t_field*>& members = tstruct->get_members();
- vector<t_field*>::const_iterator m_iter;
for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
t_type* type = (*m_iter)->get_type();
indent(out) << "public static " << type_name(tstruct) << " " << (*m_iter)->get_name() << "(" << type_name(type) << " value) {" << endl;