THRIFT-479. java: Add javadocs for enum types
Fields now reference their enum class name in javadoc. Also, generated enum classes's members are now javadoc'd.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@799128 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 e8d2a42..37c66fc 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -168,11 +168,17 @@
std::string iter);
void generate_java_doc (std::ofstream& out,
- t_doc* tdoc);
+ t_field* field);
+
+ void generate_java_doc (std::ofstream& out,
+ t_doc* tdoc);
void generate_java_doc (std::ofstream& out,
t_function* tdoc);
+ void generate_java_docstring_comment (std::ofstream &out,
+ string contents);
+
void generate_deep_copy_container(std::ofstream& out, std::string source_name_p1, std::string source_name_p2, std::string result_name, t_type* type);
void generate_deep_copy_non_container(std::ofstream& out, std::string source_name, std::string dest_name, t_type* type);
@@ -349,6 +355,7 @@
++value;
}
+ generate_java_doc(f_enum, *c_iter);
indent(f_enum) <<
"public static final int " << (*c_iter)->get_name() <<
" = " << value << ";" << endl;
@@ -2774,16 +2781,30 @@
return constant_name;
}
+void t_java_generator::generate_java_docstring_comment(ofstream &out, string contents) {
+ generate_docstring_comment(out,
+ "/**\n",
+ " * ", contents,
+ " */\n");
+}
+
+void t_java_generator::generate_java_doc(ofstream &out,
+ t_field* field) {
+ if (field->get_type()->is_enum()) {
+ string combined_message = field->get_doc() + "\n@see " + get_enum_class_name(field->get_type());
+ generate_java_docstring_comment(out, combined_message);
+ } else {
+ generate_java_doc(out, (t_doc*)field);
+ }
+}
+
/**
* 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()) {
- generate_docstring_comment(out,
- "/**\n",
- " * ", tdoc->get_doc(),
- " */\n");
+ generate_java_docstring_comment(out, tdoc->get_doc());
}
}
diff --git a/test/ConstantsDemo.thrift b/test/ConstantsDemo.thrift
index 7e97f02..bf414ec 100644
--- a/test/ConstantsDemo.thrift
+++ b/test/ConstantsDemo.thrift
@@ -30,6 +30,7 @@
}
struct thing2 {
+ /** standard docstring */
1: enumconstants val = TWO
}