From 3d5db203d5a1a43c39dd51aa8a6e7dc283d1fad8 Mon Sep 17 00:00:00 2001 From: Bryan Duxbury Date: Wed, 29 Jul 2009 23:44:44 +0000 Subject: [PATCH] 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 --- compiler/cpp/src/generate/t_java_generator.cc | 31 ++++++++++++++++--- test/ConstantsDemo.thrift | 1 + 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc index e8d2a423..37c66fc2 100644 --- a/compiler/cpp/src/generate/t_java_generator.cc +++ b/compiler/cpp/src/generate/t_java_generator.cc @@ -168,11 +168,17 @@ class t_java_generator : public t_oop_generator { 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 @@ void t_java_generator::generate_enum(t_enum* tenum) { ++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 @@ string t_java_generator::constant_name(string name) { 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 7e97f02c..bf414ec0 100644 --- a/test/ConstantsDemo.thrift +++ b/test/ConstantsDemo.thrift @@ -30,6 +30,7 @@ enum enumconstants { } struct thing2 { + /** standard docstring */ 1: enumconstants val = TWO } -- 2.17.1