THRIFT-668. java: Using a map in an exception type will generate a class that does...
authorBryan Duxbury <bryanduxbury@apache.org>
Thu, 31 Dec 2009 18:18:00 +0000 (18:18 +0000)
committerBryan Duxbury <bryanduxbury@apache.org>
Thu, 31 Dec 2009 18:18:00 +0000 (18:18 +0000)
The compiler was incorrectly assuming that exceptions were comparable. Now, exceptions are treated just like structs.

git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@894919 13f79535-47bb-0310-9956-ffa450edef68

compiler/cpp/src/generate/t_java_generator.cc
test/DebugProtoTest.thrift

index 09d2fd1..da1e1c6 100644 (file)
@@ -3570,7 +3570,7 @@ bool t_java_generator::is_comparable(t_type* type) {
     } else {
       return false;
     }
-  } else if (type->is_struct()) {
+  } else if (type->is_struct() || type->is_xception()) {
     return is_comparable((t_struct*)type);
   } else {
     return true;
index 6a9c785..6731e5e 100644 (file)
@@ -216,6 +216,16 @@ const CompactProtoTestStruct COMPACT_TEST = {
 
 const i32 MYCONST = 2
 
+
+exception ExceptionWithAMap {
+  1: string blah;
+  2: map<string, string> map_field;
+}
+
+service ServiceForExceptionWithAMap {
+  void methodThatThrowsAnException() throws (1: ExceptionWithAMap xwamap);
+}
+
 service Srv {
   i32 Janky(1: i32 arg);
   
@@ -308,4 +318,4 @@ typedef map<i32,i32> SomeMap
 
 struct StructWithASomemap {
   1: required SomeMap somemap_field;
-}
\ No newline at end of file
+}