THRIFT-3377 Deep copy is actually shallow when using typedef members
Client: Java
Patch: Roshan George <roshan@arjie.com>

This closes #823
diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc
index f711f2d..7c610fb 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -1532,7 +1532,7 @@
   for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
     t_field* field = (*m_iter);
     std::string field_name = field->get_name();
-    t_type* type = field->get_type();
+    t_type* type = field->get_type()->get_true_type();
     bool can_be_null = type_can_be_null(type);
 
     if (can_be_null) {