From 36f5c9ec987ce338c4175083b7d9d1244c8865c4 Mon Sep 17 00:00:00 2001 From: Nikhil B Date: Fri, 4 Nov 2016 18:58:56 +0530 Subject: [PATCH] Fixing bug in schema generation code map in a struct in a map case was not handled properly. Change-Id: I60d9acdec7ab8d263d5f1aa4e942dd814315cfda Closes-Bug: #1639238 (cherry picked from commit 5d68f8cb9814005f6c92a729f2909d4f67c04f2f) --- compiler/generate/t_doc_generator.cc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/compiler/generate/t_doc_generator.cc b/compiler/generate/t_doc_generator.cc index cfa47898..6ba08a51 100644 --- a/compiler/generate/t_doc_generator.cc +++ b/compiler/generate/t_doc_generator.cc @@ -1187,7 +1187,7 @@ void t_doc_generator::generate_stat_schema_map(string prefix, t_type* keytype, t if (jt == tfield->annotations_.end()) is_empty_tag = true; if (!is_top_level && !is_empty_tag) { - return; + return; } if(!prefix.empty()) { tname = prefix + "." + tname; @@ -1201,7 +1201,11 @@ void t_doc_generator::generate_stat_schema_map(string prefix, t_type* keytype, t bool is_suffixed_field = false; is_indexed_or_suffixed_field(string("__key"), member_tags, suffixes, index, is_suffixed_field); if (!is_suffixed_field) { - f_stats_tables_ << "\t{\"name\":\"" << name << "\",\"datatype\":\"" << datatype << "\",\"index\":" << index << "},\n"; + if (first_member_) { + f_stats_tables_ << "\t{\"name\":\"" << name << "\",\"datatype\":\"" << datatype << "\",\"index\":" << index << "},\n"; + } else { + f_stats_tables_ << ",\n\t{\"name\":\"" << name << "\",\"datatype\":\"" << datatype << "\",\"index\":" << index << "},\n"; + } } if(valtype->is_base_type()) { name = tname + string(".__value"); @@ -1220,9 +1224,9 @@ void t_doc_generator::generate_stat_schema_map(string prefix, t_type* keytype, t string sname = valtype->get_name(); t_struct *cstruct = find_struct_with_name(sname); if (cstruct) { - if(!is_empty_tag) { + if(!is_empty_tag) { generate_stat_schema_struct_members(empty_prefix, tfield, cstruct, member_tags, suffixes); - } + } generate_stat_schema_toplevel_tags(tstruct, top_level_tags); generate_stat_schema_suffixes(empty_prefix, tfield, cstruct, tstruct, suffixes); } @@ -1319,7 +1323,7 @@ void t_doc_generator::generate_stat_schema_list(string name, t_type* ttype, t_fi if (jt == tfield->annotations_.end()) is_empty_tag = true; if (!is_top_level && !is_empty_tag) { - return; + return; } if(!name.empty()) { tname = name + "." + tname;