Author: bryanduxbury
Date: Wed Jul 29 23:44:44 2009
New Revision: 799128

URL: http://svn.apache.org/viewvc?rev=799128&view=rev
Log:
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.


Modified:
    incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc
    incubator/thrift/trunk/test/ConstantsDemo.thrift

Modified: incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc
URL: 
http://svn.apache.org/viewvc/incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc?rev=799128&r1=799127&r2=799128&view=diff
==============================================================================
--- incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc 
(original)
+++ incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc Wed 
Jul 29 23:44:44 2009
@@ -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() + "\...@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());
   }
 }
 

Modified: incubator/thrift/trunk/test/ConstantsDemo.thrift
URL: 
http://svn.apache.org/viewvc/incubator/thrift/trunk/test/ConstantsDemo.thrift?rev=799128&r1=799127&r2=799128&view=diff
==============================================================================
--- incubator/thrift/trunk/test/ConstantsDemo.thrift (original)
+++ incubator/thrift/trunk/test/ConstantsDemo.thrift Wed Jul 29 23:44:44 2009
@@ -30,6 +30,7 @@
 }
 
 struct thing2 {
+  /** standard docstring */
   1: enumconstants val = TWO
 }
 


Reply via email to