From 447d7d236590db3dad60dc10eed72274a5b66edf Mon Sep 17 00:00:00 2001 From: eletuchy Date: Wed, 13 Jun 2007 04:24:11 +0000 Subject: [PATCH] [thrift] small fixes to java generator Summary: - size generated collections correctly - StringBuilder vs StringBuffer Reviewed By: mcslee Test Plan: built TestThrift.thrift; it compiled, yay Revert Plan: sure Notes: EImportant: git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665134 13f79535-47bb-0310-9956-ffa450edef68 --- compiler/cpp/src/generate/t_java_generator.cc | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc index b988ab32..fdd7202c 100644 --- a/compiler/cpp/src/generate/t_java_generator.cc +++ b/compiler/cpp/src/generate/t_java_generator.cc @@ -650,7 +650,7 @@ void t_java_generator::generate_java_struct_tostring(ofstream& out, indent_up(); out << - indent() << "StringBuffer sb = new StringBuffer(\"" << tstruct->get_name() << "(\");" << endl; + indent() << "StringBuilder sb = new StringBuilder(\"" << tstruct->get_name() << "(\");" << endl; const vector& fields = tstruct->get_members(); vector::const_iterator f_iter; @@ -1293,20 +1293,23 @@ void t_java_generator::generate_deserialize_container(ofstream& out, obj = tmp("_list"); } - indent(out) << prefix << " = new " << type_name(ttype, false, true) << "(); // from me" << endl; - // Declare variables, read header if (ttype->is_map()) { - out << - indent() << "TMap " << obj << " = iprot.readMapBegin();" << endl; + indent(out) << "TMap " << obj << " = iprot.readMapBegin();" << endl; } else if (ttype->is_set()) { - out << - indent() << "TSet " << obj << " = iprot.readSetBegin();" << endl; + indent(out) << "TSet " << obj << " = iprot.readSetBegin();" << endl; } else if (ttype->is_list()) { - out << - indent() << "TList " << obj << " = iprot.readListBegin();" << endl; + indent(out) << "TList " << obj << " = iprot.readListBegin();" << endl; } + indent(out) + << prefix << " = new " << type_name(ttype, false, true) + // size the collection correctly + << "(" + << (ttype->is_list() ? "" : "2*" ) + << obj << ".size" + << ");" << endl; + // For loop iterates over elements string i = tmp("_i"); indent(out) << -- 2.17.1