From: Mark Slee Date: Mon, 10 Sep 2007 22:33:05 +0000 (+0000) Subject: Add JavaDoc comments to generated Thrift Java code X-Git-Tag: 0.2.0~1216 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=8775c73db2729f85fd66e2c8443a3628fd55a972;p=common%2Fthrift.git Add JavaDoc comments to generated Thrift Java code Reviewed By: dreiss Test Plan: Generate Java code from .thrift file w/ javadoc comments Revert: OK Notes: My first backend diffcamp review git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665256 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 f43db445..eef82af7 100644 --- a/compiler/cpp/src/generate/t_java_generator.cc +++ b/compiler/cpp/src/generate/t_java_generator.cc @@ -354,6 +354,8 @@ void t_java_generator::generate_java_struct_definition(ofstream &out, bool is_exception, bool in_class, bool is_result) { + generate_java_doc(out, tstruct); + indent(out) << "public " << (in_class ? "static " : "") << "class " << tstruct->get_name() << " "; @@ -881,14 +883,16 @@ void t_java_generator::generate_service_interface(t_service* tservice) { extends_iface = " extends " + extends + ".Iface"; } - f_service_ << - indent() << "public interface Iface" << extends_iface << " {" << endl; + generate_java_doc(f_service_, tservice); + f_service_ << indent() << "public interface Iface" << extends_iface << + " {" << endl << endl; indent_up(); vector functions = tservice->get_functions(); vector::iterator f_iter; for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) { - indent(f_service_) << - "public " << function_signature(*f_iter) << ";" << endl; + generate_java_doc(f_service_, *f_iter); + indent(f_service_) << "public " << function_signature(*f_iter) << ";" << + endl << endl; } indent_down(); f_service_ << @@ -1961,3 +1965,22 @@ string t_java_generator::type_to_enum(t_type* type) { throw "INVALID TYPE IN type_to_enum: " + type->get_name(); } + +/** + * Emits a JavaDoc comment if the provided object has a doc in Thrift + */ +void t_java_generator::generate_java_doc(ofstream &out, + t_doc* tdoc) { + if (tdoc->has_doc()) { + indent(out) << "/**" << endl; + stringstream docs(tdoc->get_doc(), ios_base::in); + while (!docs.eof()) { + char line[1024]; + docs.getline(line, 1024); + if (strlen(line) > 0 || !docs.eof()) { // skip the empty last line + indent(out) << " * " << line << endl; + } + } + indent(out) << " */" << endl; + } +} diff --git a/compiler/cpp/src/generate/t_java_generator.h b/compiler/cpp/src/generate/t_java_generator.h index db085156..913b0f9f 100644 --- a/compiler/cpp/src/generate/t_java_generator.h +++ b/compiler/cpp/src/generate/t_java_generator.h @@ -125,6 +125,10 @@ class t_java_generator : public t_oop_generator { t_list* tlist, std::string iter); + void generate_java_doc (std::ofstream& out, + t_doc* tdoc); + + /** * Helper rendering functions */