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 f43db44..eef82af 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -354,6 +354,8 @@
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 @@
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<t_function*> functions = tservice->get_functions();
vector<t_function*>::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 @@
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 db08515..913b0f9 100644
--- a/compiler/cpp/src/generate/t_java_generator.h
+++ b/compiler/cpp/src/generate/t_java_generator.h
@@ -125,6 +125,10 @@
t_list* tlist,
std::string iter);
+ void generate_java_doc (std::ofstream& out,
+ t_doc* tdoc);
+
+
/**
* Helper rendering functions
*/