Repository: thrift Updated Branches: refs/heads/master 74086f18a -> 6e4037656
THRIFT-3220 Option to suppress @Generated Annotation entirely Client: Java Patch: notona <[email protected]> & Jens Geyer This closes #540 This change contains: - the work of notona from GitHub PR 540 - additional changes I made to align THRIFT-3220 and THRIFT-3193 Project: http://git-wip-us.apache.org/repos/asf/thrift/repo Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/6e403765 Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/6e403765 Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/6e403765 Branch: refs/heads/master Commit: 6e4037656885132a44407fb7d66f6d034b379376 Parents: 74086f1 Author: Jens Geyer <[email protected]> Authored: Sun Jul 5 18:40:17 2015 +0200 Committer: Jens Geyer <[email protected]> Committed: Sun Jul 5 19:24:11 2015 +0200 ---------------------------------------------------------------------- compiler/cpp/src/generate/t_java_generator.cc | 32 +++++++++++++++++----- 1 file changed, 25 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/thrift/blob/6e403765/compiler/cpp/src/generate/t_java_generator.cc ---------------------------------------------------------------------- diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc index d5b46f9..c4cbc45 100644 --- a/compiler/cpp/src/generate/t_java_generator.cc +++ b/compiler/cpp/src/generate/t_java_generator.cc @@ -91,8 +91,14 @@ public: iter = parsed_options.find("option_type"); use_option_type_ = (iter != parsed_options.end()); - iter = parsed_options.find("undated_generated_annotations"); - undated_generated_annotations_ = (iter != parsed_options.end()); + iter = parsed_options.find("generated_annotations"); + if (iter != parsed_options.end()) { + undated_generated_annotations_ = (iter->second.compare("undated") == 0); + suppress_generated_annotations_ = (iter->second.compare("suppress") == 0); + } else { + undated_generated_annotations_ = false; + suppress_generated_annotations_ = false; + } out_dir_base_ = (bean_style_ ? "gen-javabean" : "gen-java"); } @@ -347,6 +353,8 @@ private: bool reuse_objects_; bool use_option_type_; bool undated_generated_annotations_; + bool suppress_generated_annotations_; + }; /** @@ -396,6 +404,8 @@ string t_java_generator::java_package() { string t_java_generator::java_type_imports() { string hash_builder; string tree_set_and_map; + string annotation_generated; + string option; if (sorted_containers_) { tree_set_and_map = string() + "import java.util.TreeSet;\n" + "import java.util.TreeMap;\n"; @@ -405,6 +415,11 @@ string t_java_generator::java_type_imports() { option = string() + "import org.apache.thrift.Option;\n"; } + // android does not support @Generated Annotation + if (!suppress_generated_annotations_) { + annotation_generated = string() + "import javax.annotation.Generated;\n"; + } + return string() + hash_builder + "import org.apache.thrift.scheme.IScheme;\n" + "import org.apache.thrift.scheme.SchemeFactory;\n" + "import org.apache.thrift.scheme.StandardScheme;\n\n" @@ -421,7 +436,7 @@ string t_java_generator::java_type_imports() { + "import java.util.HashSet;\n" + "import java.util.EnumSet;\n" + tree_set_and_map + "import java.util.Collections;\n" + "import java.util.BitSet;\n" + "import java.nio.ByteBuffer;\n" - "import java.util.Arrays;\n" + "import javax.annotation.Generated;\n" + + "import java.util.Arrays;\n" + annotation_generated + "import org.slf4j.Logger;\n" + "import org.slf4j.LoggerFactory;\n\n"; } @@ -1333,7 +1348,7 @@ void t_java_generator::generate_java_struct_definition(ofstream& out, bool is_final = (tstruct->annotations_.find("final") != tstruct->annotations_.end()); - if (!in_class) { + if (!in_class && !suppress_generated_annotations_) { generate_javax_generated_annotation(out); } @@ -2635,7 +2650,9 @@ void t_java_generator::generate_service(t_service* tservice) { f_service_ << autogen_comment() << java_package() << java_type_imports() << java_suppressions(); - generate_javax_generated_annotation(f_service_); + if (!suppress_generated_annotations_) { + generate_javax_generated_annotation(f_service_); + } f_service_ << "public class " << service_name_ << " {" << endl << endl; indent_up(); @@ -5124,5 +5141,6 @@ THRIFT_REGISTER_GENERATOR( " sorted_containers:\n" " Use TreeSet/TreeMap instead of HashSet/HashMap as a implementation of " "set/map.\n" - " undated_generated_annotations:\n" - " Do not generate the date for the @Generated annotation") + " generated_annotations=[undated|suppress]:\n" + " undated: suppress the date at @Generated annotations\n" + " suppress: suppress @Generated annotations entirely\n")
