You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by br...@apache.org on 2009/11/09 16:55:38 UTC

svn commit: r834119 - in /incubator/thrift/trunk: compiler/cpp/src/generate/t_java_generator.cc lib/java/build.xml test/DebugProtoTest.thrift

Author: bryanduxbury
Date: Mon Nov  9 15:55:22 2009
New Revision: 834119

URL: http://svn.apache.org/viewvc?rev=834119&view=rev
Log:
THRIFT-565. java: Structs containing typedefs for incomparable objects will be considered comparable
This patch causes the compiler to fully unwrap typedefs when determining comparability.

Modified:
    incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc
    incubator/thrift/trunk/lib/java/build.xml
    incubator/thrift/trunk/test/DebugProtoTest.thrift

Modified: incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc?rev=834119&r1=834118&r2=834119&view=diff
==============================================================================
--- incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc (original)
+++ incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc Mon Nov  9 15:55:22 2009
@@ -3523,7 +3523,7 @@
   vector<t_field*>::const_iterator m_iter;
 
   for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
-    if (!is_comparable((*m_iter)->get_type())) {
+    if (!is_comparable(get_true_type((*m_iter)->get_type()))) {
       return false;
     }
   }
@@ -3533,7 +3533,7 @@
 bool t_java_generator::is_comparable(t_type* type) {
   if (type->is_container()) {
     if (type->is_list()) {
-      return is_comparable(((t_list*)type)->get_elem_type());
+      return is_comparable(get_true_type(((t_list*)type)->get_elem_type()));
     } else {
       return false;
     }
@@ -3549,11 +3549,11 @@
   vector<t_field*>::const_iterator m_iter;
 
   for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
-    if (!type_can_be_null((*m_iter)->get_type())) {
+    if (!type_can_be_null(get_true_type((*m_iter)->get_type()))) {
       return true;
     }
   }
-  return false;  
+  return false;
 }
 
 THRIFT_REGISTER_GENERATOR(java, "Java",

Modified: incubator/thrift/trunk/lib/java/build.xml
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/build.xml?rev=834119&r1=834118&r2=834119&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/build.xml (original)
+++ incubator/thrift/trunk/lib/java/build.xml Mon Nov  9 15:55:22 2009
@@ -187,16 +187,16 @@
   </target>
 
   <target name="generate">
-    <exec executable="../../compiler/cpp/thrift">
+    <exec executable="../../compiler/cpp/thrift" failonerror="true">
       <arg line="--gen java:hashcode ${test.thrift.home}/ThriftTest.thrift" />
     </exec>
-    <exec executable="../../compiler/cpp/thrift">
+    <exec executable="../../compiler/cpp/thrift" failonerror="true">
       <arg line="--gen java:hashcode ${test.thrift.home}/DebugProtoTest.thrift" />
     </exec>
-    <exec executable="../../compiler/cpp/thrift">
+    <exec executable="../../compiler/cpp/thrift" failonerror="true">
       <arg line="--gen java:hashcode ${test.thrift.home}/OptionalRequiredTest.thrift" />
     </exec>
-    <exec executable="../../compiler/cpp/thrift">
+    <exec executable="../../compiler/cpp/thrift" failonerror="true">
       <arg line="--gen java:beans,nocamel ${test.thrift.home}/JavaBeansTest.thrift" />
     </exec>
   </target>

Modified: incubator/thrift/trunk/test/DebugProtoTest.thrift
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/test/DebugProtoTest.thrift?rev=834119&r1=834118&r2=834119&view=diff
==============================================================================
--- incubator/thrift/trunk/test/DebugProtoTest.thrift (original)
+++ incubator/thrift/trunk/test/DebugProtoTest.thrift Mon Nov  9 15:55:22 2009
@@ -271,4 +271,10 @@
   1: i32 blah;
   2: i32 blah2;
   3: Backwards bw;
+}
+
+typedef map<i32,i32> SomeMap
+
+struct StructWithASomemap {
+  1: required SomeMap somemap_field;
 }
\ No newline at end of file