THRIFT-2227 Thrift compiler generates spurious warnings with Xlint
authorJens Geyer <jensg@apache.org>
Mon, 11 Nov 2013 21:43:45 +0000 (22:43 +0100)
committerJens Geyer <jensg@apache.org>
Mon, 11 Nov 2013 21:43:45 +0000 (22:43 +0100)
Patch: Andrew Gaul

compiler/cpp/src/generate/t_java_generator.cc

index 9b48df0..e77202e 100644 (file)
@@ -266,6 +266,7 @@ public:
 
   std::string java_package();
   std::string java_type_imports();
+  std::string java_suppressions();
   std::string type_name(t_type* ttype, bool in_container=false, bool in_init=false, bool skip_generic=false);
   std::string base_type_name(t_base_type* tbase, bool in_container=false);
   std::string declare_field(t_field* tfield, bool init=false, bool comment=false);
@@ -403,6 +404,10 @@ string t_java_generator::java_type_imports() {
     "import org.slf4j.LoggerFactory;\n\n";
 }
 
+string t_java_generator::java_suppressions() {
+  return "@SuppressWarnings({\"cast\", \"rawtypes\", \"serial\", \"unchecked\"})\n";
+}
+
 /**
  * Nothing in Java
  */
@@ -526,7 +531,8 @@ void t_java_generator::generate_consts(std::vector<t_const*> consts) {
   f_consts <<
     autogen_comment() <<
     java_package() <<
-    java_type_imports();
+    java_type_imports() <<
+    java_suppressions();
 
   f_consts <<
     "public class " << make_valid_java_identifier(program_name_) << "Constants {" << endl <<
@@ -729,7 +735,8 @@ void t_java_generator::generate_java_struct(t_struct* tstruct,
   f_struct <<
     autogen_comment() <<
     java_package() <<
-    java_type_imports();
+    java_type_imports() <<
+    java_suppressions();
 
   generate_java_struct_definition(f_struct,
                                   tstruct,
@@ -751,7 +758,8 @@ void t_java_generator::generate_java_union(t_struct* tstruct) {
   f_struct <<
     autogen_comment() <<
     java_package() <<
-    java_type_imports();
+    java_type_imports() <<
+    java_suppressions();
 
   generate_java_doc(f_struct, tstruct);
 
@@ -2246,7 +2254,8 @@ void t_java_generator::generate_service(t_service* tservice) {
   f_service_ <<
     autogen_comment() <<
     java_package() <<
-    java_type_imports();
+    java_type_imports() <<
+    java_suppressions();
 
   generate_javax_generated_annotation(f_service_);
   f_service_ << "public class " << service_name_ << " {" << endl << endl;