THRIFT-3719: Dart generator should use lowerCamelCase for service names
Client: Dart
Patch: Mark Erickson

This closes #932
diff --git a/compiler/cpp/src/generate/t_dart_generator.cc b/compiler/cpp/src/generate/t_dart_generator.cc
index 1bd2ce6..2931447 100644
--- a/compiler/cpp/src/generate/t_dart_generator.cc
+++ b/compiler/cpp/src/generate/t_dart_generator.cc
@@ -176,11 +176,11 @@
 
   void generate_function_helpers(t_function* tfunction);
   std::string get_cap_name(std::string name);
-  std::string get_field_name(std::string name);
+  std::string get_member_name(std::string name);
   std::string get_args_class_name(std::string name);
   std::string get_result_class_name(std::string name);
   std::string get_file_name(std::string name);
-  std::string get_class_name(std::string name);
+  std::string get_constants_class_name(std::string name);
   std::string generate_isset_check(t_field* field);
   std::string generate_isset_check(std::string field);
   void generate_isset_set(ofstream& out, t_field* field);
@@ -535,7 +535,7 @@
     return;
   }
 
-  string class_name = get_class_name(program_name_) + "Constants";
+  string class_name = get_constants_class_name(program_name_);
   string file_name = get_file_name(class_name);
 
   string f_consts_name = src_dir_ + "/" + file_name + ".dart";
@@ -799,7 +799,7 @@
   for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
     generate_dart_doc(out, *m_iter);
     indent(out) << type_name((*m_iter)->get_type()) + " _"
-                << get_field_name((*m_iter)->get_name()) << ";" << endl;
+                << get_member_name((*m_iter)->get_name()) << ";" << endl;
 
     indent(out) << "static const int " << upcase_string((*m_iter)->get_name())
                 << " = " << (*m_iter)->get_key() << ";" << endl;
@@ -811,7 +811,7 @@
   if (members.size() > 0) {
     for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
       if (!type_can_be_null((*m_iter)->get_type())) {
-        string field_name = get_field_name((*m_iter)->get_name());
+        string field_name = get_member_name((*m_iter)->get_name());
         indent(out) << "bool __isset_" << field_name << " = false;" << endl;
       }
     }
@@ -826,7 +826,7 @@
     t_type* t = get_true_type((*m_iter)->get_type());
     if ((*m_iter)->get_value() != NULL) {
       print_const_value(out,
-                        "this." + get_field_name((*m_iter)->get_name()),
+                        "this." + get_member_name((*m_iter)->get_name()),
                         t,
                         (*m_iter)->get_value(),
                         true,
@@ -928,7 +928,7 @@
                  "checked in the validate method" << endl;
   for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
     if ((*f_iter)->get_req() == t_field::T_REQUIRED && !type_can_be_null((*f_iter)->get_type())) {
-      string field_name = get_field_name((*f_iter)->get_name());
+      string field_name = get_member_name((*f_iter)->get_name());
       indent(out) << "if (!__isset_" << field_name << ")";
       scope_up(out);
       indent(out) << "  throw new TProtocolError(TProtocolErrorType.UNKNOWN, \"Required field '"
@@ -956,7 +956,7 @@
   indent(out) << "// check for required fields" << endl;
   for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
     if ((*f_iter)->get_req() == t_field::T_REQUIRED) {
-      string field_name = get_field_name((*f_iter)->get_name());
+      string field_name = get_member_name((*f_iter)->get_name());
       if (type_can_be_null((*f_iter)->get_type())) {
         indent(out) << "if (" << field_name << " == null)";
         scope_up(out);
@@ -978,7 +978,7 @@
     t_type* type = field->get_type();
     // if field is an enum, check that its value is valid
     if (type->is_enum()) {
-      string field_name = get_field_name(field->get_name());
+      string field_name = get_member_name(field->get_name());
       indent(out) << "if (" << generate_isset_check(field) << " && !" << get_ttype_class_name(type)
                   << ".VALID_VALUES.contains(" << field_name << "))";
       scope_up(out);
@@ -1001,7 +1001,6 @@
   out << indent() << "write(TProtocol oprot)";
   scope_up(out);
 
-  string name = tstruct->get_name();
   const vector<t_field*>& fields = tstruct->get_sorted_members();
   vector<t_field*>::const_iterator f_iter;
 
@@ -1011,7 +1010,7 @@
   indent(out) << "oprot.writeStructBegin(_STRUCT_DESC);" << endl;
 
   for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
-    string field_name = get_field_name((*f_iter)->get_name());
+    string field_name = get_member_name((*f_iter)->get_name());
     bool could_be_unset = (*f_iter)->get_req() == t_field::T_OPTIONAL;
     if (could_be_unset) {
       indent(out) << "if (" << generate_isset_check(*f_iter) << ")";
@@ -1058,7 +1057,6 @@
   indent(out) << "write(TProtocol oprot)";
   scope_up(out);
 
-  string name = tstruct->get_name();
   const vector<t_field*>& fields = tstruct->get_sorted_members();
   vector<t_field*>::const_iterator f_iter;
 
@@ -1109,7 +1107,7 @@
   vector<t_field*>::const_iterator f_iter;
   for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
     t_field* field = *f_iter;
-    std::string field_name = get_field_name(field->get_name());
+    std::string field_name = get_member_name(field->get_name());
 
     indent(out) << "case " << upcase_string(field_name) << ":" << endl;
     indent_up();
@@ -1141,7 +1139,7 @@
   vector<t_field*>::const_iterator f_iter;
   for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
     t_field* field = *f_iter;
-    std::string field_name = get_field_name(field->get_name());
+    std::string field_name = get_member_name(field->get_name());
 
     indent(out) << "case " << upcase_string(field_name) << ":" << endl;
     indent_up();
@@ -1214,7 +1212,7 @@
   for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
     t_field* field = *f_iter;
     t_type* type = get_true_type(field->get_type());
-    std::string field_name = get_field_name(field->get_name());
+    std::string field_name = get_member_name(field->get_name());
     std::string cap_name = get_cap_name(field_name);
 
     indent(out) << "// " << field_name << endl;
@@ -1276,7 +1274,7 @@
     }
 
     t_field* field = (*f_iter);
-    std::string field_name = get_field_name(field->get_name());
+    std::string field_name = get_member_name(field->get_name());
 
     if (!first) {
       indent(out) << "ret.write(\", \");" << endl;
@@ -1494,8 +1492,6 @@
   vector<t_function*> functions = tservice->get_functions();
   vector<t_function*>::const_iterator f_iter;
   for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
-    string funname = (*f_iter)->get_name();
-
     // Open function
     indent(f_service_) << function_signature(*f_iter) << " async";
     scope_up(f_service_);
@@ -1508,13 +1504,13 @@
     const vector<t_field*>& fields = arg_struct->get_members();
 
     // Serialize the request
-    indent(f_service_) << "oprot.writeMessageBegin(new TMessage(\"" << funname << "\", "
+    indent(f_service_) << "oprot.writeMessageBegin(new TMessage(\"" << (*f_iter)->get_name() << "\", "
                << ((*f_iter)->is_oneway() ? "TMessageType.ONEWAY" : "TMessageType.CALL")
                << ", nextSeqid()));" << endl;
     indent(f_service_) << argsname << " args = new " << argsname << "();" << endl;
 
     for (fld_iter = fields.begin(); fld_iter != fields.end(); ++fld_iter) {
-      string arg_field_name = get_field_name((*fld_iter)->get_name());
+      string arg_field_name = get_member_name((*fld_iter)->get_name());
       indent(f_service_) << "args." << arg_field_name << " = "
                  << arg_field_name << ";" << endl;
     }
@@ -1550,7 +1546,7 @@
       const std::vector<t_field*>& xceptions = xs->get_members();
       vector<t_field*>::const_iterator x_iter;
       for (x_iter = xceptions.begin(); x_iter != xceptions.end(); ++x_iter) {
-        string result_field_name = get_field_name((*x_iter)->get_name());
+        string result_field_name = get_member_name((*x_iter)->get_name());
         indent(f_service_) << "if (result." << result_field_name << " != null)";
         scope_up(f_service_);
         indent(f_service_) << "throw result." << result_field_name << ";" << endl;
@@ -1614,7 +1610,7 @@
 
   for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
     indent(f_service_) << "PROCESS_MAP[\"" << (*f_iter)->get_name()
-               << "\"] = " << (*f_iter)->get_name() << ";" << endl;
+               << "\"] = " << get_member_name((*f_iter)->get_name()) << ";" << endl;
   }
   scope_down(f_service_, endl2);
 
@@ -1691,7 +1687,7 @@
 
   bool await_result = (!tfunction->is_oneway() && !tfunction->get_returntype()->is_void());
 
-  indent(f_service_) << tfunction->get_name() << "(int seqid, TProtocol iprot, TProtocol oprot)";
+  indent(f_service_) << get_member_name(tfunction->get_name()) << "(int seqid, TProtocol iprot, TProtocol oprot)";
   if (await_result) {
     f_service_ << " async";
   }
@@ -1726,7 +1722,7 @@
   if (await_result) {
     f_service_ << "result.success = await ";
   }
-  f_service_ << "iface_." << tfunction->get_name() << "(";
+  f_service_ << "iface_." << get_member_name(tfunction->get_name()) << "(";
   bool first = true;
   for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
     if (first) {
@@ -1734,13 +1730,13 @@
     } else {
       f_service_ << ", ";
     }
-    f_service_ << "args." << get_field_name((*f_iter)->get_name());
+    f_service_ << "args." << get_member_name((*f_iter)->get_name());
   }
   f_service_ << ");" << endl;
 
   if (!tfunction->is_oneway() && xceptions.size() > 0) {
     for (x_iter = xceptions.begin(); x_iter != xceptions.end(); ++x_iter) {
-      string result_field_name = get_field_name((*x_iter)->get_name());
+      string result_field_name = get_member_name((*x_iter)->get_name());
       scope_down(f_service_, "");
       f_service_ << " on " << type_name((*x_iter)->get_type())
               << " catch(" << result_field_name << ")";
@@ -1787,7 +1783,7 @@
  */
 void t_dart_generator::generate_deserialize_field(ofstream& out, t_field* tfield, string prefix) {
   t_type* type = get_true_type(tfield->get_type());
-  string field_name = get_field_name(tfield->get_name());
+  string field_name = get_member_name(tfield->get_name());
 
   if (type->is_void()) {
     throw "CANNOT GENERATE DESERIALIZE CODE FOR void TYPE: " + prefix + field_name;
@@ -1969,7 +1965,7 @@
  */
 void t_dart_generator::generate_serialize_field(ofstream& out, t_field* tfield, string prefix) {
   t_type* type = get_true_type(tfield->get_type());
-  string field_name = get_field_name(tfield->get_name());
+  string field_name = get_member_name(tfield->get_name());
 
   // Do nothing for void types
   if (type->is_void()) {
@@ -2190,7 +2186,7 @@
  * @param ttype The type
  */
 string t_dart_generator::declare_field(t_field* tfield, bool init) {
-  string field_name = get_field_name(tfield->get_name());
+  string field_name = get_member_name(tfield->get_name());
   string result = type_name(tfield->get_type()) + " " + field_name;
   if (init) {
     t_type* ttype = get_true_type(tfield->get_type());
@@ -2247,7 +2243,8 @@
     returntype = "Future<" + type_name(tfunction->get_returntype()) + ">";
   }
 
-  std::string result = returntype + " "  + tfunction->get_name() + "(" + arguments + ")";
+  std::string result = returntype + " " + get_member_name(tfunction->get_name()) +
+                       "(" + arguments + ")";
   return result;
 }
 
@@ -2266,7 +2263,7 @@
     } else {
       result += ", ";
     }
-    string field_name = get_field_name((*f_iter)->get_name());
+    string field_name = get_member_name((*f_iter)->get_name());
     result += type_name((*f_iter)->get_type()) + " " + field_name;
   }
   return result;
@@ -2318,7 +2315,7 @@
   return name;
 }
 
-std::string t_dart_generator::get_field_name(std::string name) {
+std::string t_dart_generator::get_member_name(std::string name) {
   name[0] = tolower(name[0]);
   return name;
 }
@@ -2361,8 +2358,8 @@
   return ret;
 }
 
-std::string t_dart_generator::get_class_name(std::string name) {
-  // e.g. change my_great_model to MyGreatModel
+std::string t_dart_generator::get_constants_class_name(std::string name) {
+  // e.g. change my_great_model to MyGreatModelConstants
   string ret;
   const char* tmp = name.c_str();
   bool is_prev_underscore = true;
@@ -2381,7 +2378,7 @@
     }
   }
 
-  return ret;
+  return ret + "Constants";
 }
 
 string t_dart_generator::constant_name(string name) {
@@ -2426,7 +2423,7 @@
     vector<t_field*>::const_iterator p_iter;
     for (p_iter = fields.begin(); p_iter != fields.end(); ++p_iter) {
       t_field* p = *p_iter;
-      string field_name = get_field_name(p->get_name());
+      string field_name = get_member_name(p->get_name());
       ss << "\n@param " << field_name;
       if (p->has_doc()) {
         ss << " " << p->get_doc();
@@ -2437,7 +2434,7 @@
 }
 
 std::string t_dart_generator::generate_isset_check(t_field* field) {
-  string field_name = get_field_name(field->get_name());
+  string field_name = get_member_name(field->get_name());
   return generate_isset_check(field_name);
 }
 
@@ -2447,7 +2444,7 @@
 
 void t_dart_generator::generate_isset_set(ofstream& out, t_field* field) {
   if (!type_can_be_null(field->get_type())) {
-    string field_name = get_field_name(field->get_name());
+    string field_name = get_member_name(field->get_name());
     indent(out) << "this.__isset_" << field_name << " = true;" << endl;
   }
 }