From a0f8bdca952a521d27ec848026dc7631fbb8abac Mon Sep 17 00:00:00 2001 From: Mark Slee Date: Wed, 29 Aug 2007 04:36:28 +0000 Subject: [PATCH] Merge patch from Dan Engeleman for Java utility constructors Summary: As well as a packaging fix Reviewed By: aditya Test Plan: Generate test files, look at Java obj constructors git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665231 13f79535-47bb-0310-9956-ffa450edef68 --- compiler/cpp/src/generate/t_java_generator.cc | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc index 808d7ecd..c138df35 100644 --- a/compiler/cpp/src/generate/t_java_generator.cc +++ b/compiler/cpp/src/generate/t_java_generator.cc @@ -400,6 +400,34 @@ void t_java_generator::generate_java_struct_definition(ofstream &out, indent_down(); indent(out) << "}" << endl << endl; + + // Full constructor for all fields + if (!members.empty()) { + indent(out) << + "public " << tstruct->get_name() << "(" << endl; + indent_up(); + for (m_iter = members.begin(); m_iter != members.end(); ) { + indent(out) << type_name((*m_iter)->get_type()) << " " << + (*m_iter)->get_name(); + ++m_iter; + if (m_iter != members.end()) { + out << "," << endl; + } + } + out << ")" << endl; + indent_down(); + indent(out) << "{" << endl; + indent_up(); + indent(out) << "this();" << endl; + for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) { + indent(out) << "this." << (*m_iter)->get_name() << " = " << + (*m_iter)->get_name() << ";" << endl; + } + indent_down(); + indent(out) << "}" << endl << endl; + } + + generate_java_struct_reader(out, tstruct); if (is_result) { generate_java_struct_result_writer(out, tstruct); @@ -1137,7 +1165,7 @@ void t_java_generator::generate_process_function(t_service* tservice, indent_down(); f_service_ << indent() << "}"; for (x_iter = xceptions.begin(); x_iter != xceptions.end(); ++x_iter) { - f_service_ << " catch (" << (*x_iter)->get_type()->get_name() << " " << (*x_iter)->get_name() << ") {" << endl; + f_service_ << " catch (" << type_name((*x_iter)->get_type(), false, false) << " " << (*x_iter)->get_name() << ") {" << endl; if (!tfunction->is_async()) { indent_up(); f_service_ << @@ -1739,7 +1767,7 @@ string t_java_generator::function_signature(t_function* tfunction, const std::vector& xceptions = xs->get_members(); vector::const_iterator x_iter; for (x_iter = xceptions.begin(); x_iter != xceptions.end(); ++x_iter) { - result += (*x_iter)->get_type()->get_name() + ", "; + result += type_name((*x_iter)->get_type(), false, false) + ", "; } result += "TException"; return result; -- 2.17.1