[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
diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc
index b988ab3..fdd7202 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -650,7 +650,7 @@
indent_up();
out <<
- indent() << "StringBuffer sb = new StringBuffer(\"" << tstruct->get_name() << "(\");" << endl;
+ indent() << "StringBuilder sb = new StringBuilder(\"" << tstruct->get_name() << "(\");" << endl;
const vector<t_field*>& fields = tstruct->get_members();
vector<t_field*>::const_iterator f_iter;
@@ -1293,20 +1293,23 @@
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) <<