java: Add nocamel option to not CamelCase field accessors [THRIFT-42]
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@676699 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 0c0f287..37af482 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -35,6 +35,9 @@
iter = parsed_options.find("beans");
bean_style_ = (iter != parsed_options.end());
+ iter = parsed_options.find("nocamel");
+ nocamel_style_ = (iter != parsed_options.end());
+
iter = parsed_options.find("hashcode");
gen_hash_code_ = (iter != parsed_options.end());
@@ -179,6 +182,7 @@
std::string package_dir_;
bool bean_style_;
+ bool nocamel_style_;
bool gen_hash_code_;
};
@@ -391,7 +395,11 @@
indent(out) << name << ".";
if (bean_style_) {
std::string cap_name = v_iter->first->get_string();
- cap_name[0] = toupper(cap_name[0]);
+ if (nocamel_style_) {
+ cap_name = "_" + cap_name;
+ } else {
+ cap_name[0] = toupper(cap_name[0]);
+ }
out << "set" << cap_name << "(" << val << ")";
} else {
out << v_iter->first->get_string() << " = " << val;
@@ -1033,7 +1041,11 @@
t_type* type = get_true_type(field->get_type());
std::string field_name = field->get_name();
std::string cap_name = field_name;
- cap_name[0] = toupper(cap_name[0]);
+ if (nocamel_style_) {
+ cap_name = "_" + cap_name;
+ } else {
+ cap_name[0] = toupper(cap_name[0]);
+ }
if (type->is_container()) {
// Method to return the size of the collection
@@ -2352,5 +2364,6 @@
THRIFT_REGISTER_GENERATOR(java, "Java",
" beans: Generate bean-style output files.\n"
+" nocamel: Do not use CamelCase field accessors with beans.\n"
" hashcode: Generate quality hashCode methods.\n"
);