Protocol wraps transport code gen for Thrift Java


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@664847 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc
index 1c43fdb..26b2092 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -218,7 +218,7 @@
 void t_java_generator::generate_java_struct_reader(ofstream& out,
                                                    t_struct* tstruct) {
   out <<
-    indent() << "public void read(TProtocol _iprot, TTransport _itrans) throws TException {" << endl;
+    indent() << "public void read(TProtocol iprot) throws TException {" << endl;
   indent_up();
 
   const vector<t_field*>& fields = tstruct->get_members();
@@ -226,8 +226,8 @@
 
   // Declare stack tmp variables
   out <<
-    indent() << "TField _field;" << endl <<
-    indent() << "TStruct _struct = _iprot.readStructBegin(_itrans);" << endl;
+    indent() << "TField field;" << endl <<
+    indent() << "TStruct struct = iprot.readStructBegin();" << endl;
   
   // Loop over reading in fields
   indent(out) <<
@@ -236,11 +236,11 @@
     
     // Read beginning field marker
     indent(out) <<
-      "_field = _iprot.readFieldBegin(_itrans);" << endl;
+      "field = iprot.readFieldBegin();" << endl;
     
     // Check for field STOP marker and break
     indent(out) <<
-      "if (_field.type == TType.STOP) { " << endl;
+      "if (field.type == TType.STOP) { " << endl;
     indent_up();
     indent(out) <<
       "break;" << endl;
@@ -250,7 +250,7 @@
     
     // Switch statement on the field we are reading
     indent(out) <<
-      "switch (_field.id)" << endl;
+      "switch (field.id)" << endl;
 
       scope_up(out);
     
@@ -270,19 +270,19 @@
       // In the default case we skip the field
       out <<
         indent() << "default:" << endl <<
-        indent() << "  TProtocolUtil.skip(_iprot, _itrans, _field.type);" << endl <<
+        indent() << "  TProtocolUtil.skip(iprot, field.type);" << endl <<
         indent() << "  break;" << endl;
       
       scope_down(out);
 
     // Read field end marker
     indent(out) <<
-      "_iprot.readFieldEnd(_itrans);" << endl;
+      "iprot.readFieldEnd();" << endl;
     
     scope_down(out);
       
     out <<
-      indent() << "_iprot.readStructEnd(_itrans);" << endl;
+      indent() << "iprot.readStructEnd();" << endl;
 
   indent_down();
   out <<
@@ -298,7 +298,7 @@
 void t_java_generator::generate_java_struct_writer(ofstream& out,
                                                    t_struct* tstruct) {
   out <<
-    indent() << "public void write(TProtocol _oprot, TTransport _otrans) throws TException {" << endl;
+    indent() << "public void write(TProtocol oprot) throws TException {" << endl;
   indent_up();
 
   string name = tstruct->get_name();
@@ -306,28 +306,28 @@
   vector<t_field*>::const_iterator f_iter;
 
   out <<
-    indent() << "TStruct _struct = new TStruct(\"" << name << "\");" << endl <<
-    indent() << "TField _field = new TField();" << endl <<
-    indent() << "_oprot.writeStructBegin(_otrans, _struct);" << endl;
+    indent() << "TStruct struct = new TStruct(\"" << name << "\");" << endl <<
+    indent() << "TField field = new TField();" << endl <<
+    indent() << "oprot.writeStructBegin(struct);" << endl;
 
   for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
     out <<
-      indent() << "_field.name = \"" << (*f_iter)->get_name() << "\";" << endl <<
-      indent() << "_field.type = " << type_to_enum((*f_iter)->get_type()) << ";" << endl <<
-      indent() << "_field.id = " << (*f_iter)->get_key() << ";" << endl <<
-      indent() << "_oprot.writeFieldBegin(_otrans, _field);" << endl;
+      indent() << "field.name = \"" << (*f_iter)->get_name() << "\";" << endl <<
+      indent() << "field.type = " << type_to_enum((*f_iter)->get_type()) << ";" << endl <<
+      indent() << "field.id = " << (*f_iter)->get_key() << ";" << endl <<
+      indent() << "oprot.writeFieldBegin(field);" << endl;
 
     // Write field contents
     generate_serialize_field(out, *f_iter, "this.");
 
     // Write field closer
     indent(out) <<
-      "_oprot.writeFieldEnd(_otrans);" << endl;
+      "oprot.writeFieldEnd();" << endl;
   }
   // Write the struct map
   out <<
-    indent() << "_oprot.writeFieldStop(_otrans);" << endl <<
-    indent() << "_oprot.writeStructEnd(_otrans);" << endl;
+    indent() << "oprot.writeFieldStop();" << endl <<
+    indent() << "oprot.writeStructEnd();" << endl;
 
   indent_down();
   out <<
@@ -345,7 +345,7 @@
 void t_java_generator::generate_java_struct_result_writer(ofstream& out,
                                                           t_struct* tstruct) {
   out <<
-    indent() << "public void write(TProtocol _oprot, TTransport _otrans) throws TException {" << endl;
+    indent() << "public void write(TProtocol oprot) throws TException {" << endl;
   indent_up();
 
   string name = tstruct->get_name();
@@ -353,9 +353,9 @@
   vector<t_field*>::const_iterator f_iter;
 
   out <<
-    indent() << "TStruct _struct = new TStruct(\"" << name << "\");" << endl <<
-    indent() << "TField _field = new TField();" << endl <<
-    indent() << "_oprot.writeStructBegin(_otrans, _struct);" << endl;
+    indent() << "TStruct struct = new TStruct(\"" << name << "\");" << endl <<
+    indent() << "TField field = new TField();" << endl <<
+    indent() << "oprot.writeStructBegin(struct);" << endl;
 
   bool first = true;
   for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
@@ -374,17 +374,17 @@
     indent_up();
 
     out <<
-      indent() << "_field.name = \"" << (*f_iter)->get_name() << "\";" << endl <<
-      indent() << "_field.type = " << type_to_enum((*f_iter)->get_type()) << ";" << endl <<
-      indent() << "_field.id = " << (*f_iter)->get_key() << ";" << endl <<
-      indent() << "_oprot.writeFieldBegin(_otrans, _field);" << endl;
+      indent() << "field.name = \"" << (*f_iter)->get_name() << "\";" << endl <<
+      indent() << "field.type = " << type_to_enum((*f_iter)->get_type()) << ";" << endl <<
+      indent() << "field.id = " << (*f_iter)->get_key() << ";" << endl <<
+      indent() << "oprot.writeFieldBegin(field);" << endl;
 
     // Write field contents
     generate_serialize_field(out, *f_iter, "this.");
 
     // Write field closer
     indent(out) <<
-      "_oprot.writeFieldEnd(_otrans);" << endl;
+      "oprot.writeFieldEnd();" << endl;
 
     indent_down();
     indent(out) << "}";
@@ -392,8 +392,8 @@
   // Write the struct map
   out <<
     endl <<
-    indent() << "_oprot.writeFieldStop(_otrans);" << endl <<
-    indent() << "_oprot.writeStructEnd(_otrans);" << endl;
+    indent() << "oprot.writeFieldStop();" << endl <<
+    indent() << "oprot.writeStructEnd();" << endl;
 
   indent_down();
   out <<
@@ -499,38 +499,33 @@
   indent_up();
 
   indent(f_service_) <<
-    "public Client(TTransport trans, TProtocol prot)" << endl;
+    "public Client(TProtocol prot)" << endl;
   scope_up(f_service_);
   indent(f_service_) << 
-    "this(trans, trans, prot, prot);" << endl;
+    "this(prot, prot);" << endl;
   scope_down(f_service_);
   f_service_ << endl;
 
   indent(f_service_) <<
-    "public Client(TTransport itrans, TTransport otrans," <<
-    " TProtocol iprot, TProtocol oprot)" << endl;
+    "public Client(TProtocol iprot, TProtocol oprot)" << endl;
   scope_up(f_service_);
   if (extends.empty()) {
     f_service_ <<
-      indent() << "_itrans = itrans;" << endl <<
-      indent() << "_otrans = otrans;" << endl <<
-      indent() << "_iprot = iprot;" << endl <<
-      indent() << "_oprot = oprot;" << endl;
+      indent() << "iprot_ = iprot;" << endl <<
+      indent() << "oprot_ = oprot;" << endl;
   } else {
     f_service_ <<
-      indent() << "super(itrans, otrans, iprot, oprot);" << endl;
+      indent() << "super(iprot, oprot);" << endl;
   }
   scope_down(f_service_);
   f_service_ << endl;
  
   if (extends.empty()) {
     f_service_ <<
-      indent() << "protected TTransport _itrans;" << endl <<
-      indent() << "protected TTransport _otrans;" << endl <<
-      indent() << "protected TProtocol  _iprot;"  << endl <<
-      indent() << "protected TProtocol  _oprot;"  << endl <<
+      indent() << "protected TProtocol iprot_;"  << endl <<
+      indent() << "protected TProtocol oprot_;"  << endl <<
       endl <<
-      indent() << "protected int _seqid;" << endl <<
+      indent() << "protected int seqid_;" << endl <<
       endl;
   }
 
@@ -588,18 +583,18 @@
 
     // Serialize the request
     f_service_ <<
-      indent() << "_oprot.writeMessageBegin(_otrans, new TMessage(\"" << funname << "\", TMessageType.CALL, _seqid));" << endl <<
-      indent() << argsname << " __args = new " << argsname << "();" << endl;
+      indent() << "oprot_.writeMessageBegin(new TMessage(\"" << funname << "\", TMessageType.CALL, seqid_));" << endl <<
+      indent() << argsname << " args = new " << argsname << "();" << endl;
 
     for (fld_iter = fields.begin(); fld_iter != fields.end(); ++fld_iter) {
       f_service_ <<
-        indent() << "__args." << (*fld_iter)->get_name() << " = " << (*fld_iter)->get_name() << ";" << endl;
+        indent() << "args." << (*fld_iter)->get_name() << " = " << (*fld_iter)->get_name() << ";" << endl;
     }
 
     f_service_ <<
-      indent() << "__args.write(_oprot, _otrans);" << endl <<
-      indent() << "_oprot.writeMessageEnd(_otrans);" << endl <<
-      indent() << "_otrans.flush();" << endl;
+      indent() << "args.write(oprot_);" << endl <<
+      indent() << "oprot_.writeMessageEnd();" << endl <<
+      indent() << "oprot_.getOutputTransport().flush();" << endl;
 
     scope_down(f_service_);
     f_service_ << endl;
@@ -618,18 +613,18 @@
       scope_up(f_service_);
            
       f_service_ <<
-        indent() << "TMessage _msg = _iprot.readMessageBegin(_itrans);" << endl <<
-        indent() << resultname << " __result = new " << resultname << "();" << endl <<
-        indent() << "__result.read(_iprot, _itrans);" << endl <<
-        indent() << "_iprot.readMessageEnd(_itrans);" << endl;
+        indent() << "TMessage msg = iprot_.readMessageBegin();" << endl <<
+        indent() << resultname << " result = new " << resultname << "();" << endl <<
+        indent() << "result.read(iprot_);" << endl <<
+        indent() << "iprot_.readMessageEnd();" << endl;
 
       // TODO(mcslee): Message validation here, was the seqid etc ok?
 
       // Careful, only return _result if not a void function
       if (!(*f_iter)->get_returntype()->is_void()) {
         f_service_ <<
-          indent() << "if (__result.__isset.success) {" << endl <<
-          indent() << "  return __result.success;" << endl <<
+          indent() << "if (result.__isset.success) {" << endl <<
+          indent() << "  return result.success;" << endl <<
           indent() << "}" << endl;
       }
 
@@ -638,8 +633,8 @@
       vector<t_field*>::const_iterator x_iter;
       for (x_iter = xceptions.begin(); x_iter != xceptions.end(); ++x_iter) {
         f_service_ <<
-          indent() << "if (__result.__isset." << (*x_iter)->get_name() << ") {" << endl <<
-          indent() << "  throw __result." << (*x_iter)->get_name() << ";" << endl <<
+          indent() << "if (result.__isset." << (*x_iter)->get_name() << ") {" << endl <<
+          indent() << "  throw result." << (*x_iter)->get_name() << ";" << endl <<
           indent() << "}" << endl;
       }
 
@@ -687,30 +682,18 @@
   indent_up();
 
   indent(f_service_) <<
-    "public Processor(Iface iface, TProtocol prot)" << endl;
+    "public Processor(Iface iface)" << endl;
   scope_up(f_service_);
-  indent(f_service_) << 
-    "this(iface, prot, prot);" << endl;
-  scope_down(f_service_);
-  f_service_ << endl;
-
-  indent(f_service_) <<
-    "public Processor(Iface iface, TProtocol iprot, TProtocol oprot)" << endl;
-  scope_up(f_service_);
-  if (extends.empty()) {
+  if (!extends.empty()) {
     f_service_ <<
-      indent() << "_iprot = iprot;" << endl <<
-      indent() << "_oprot = oprot;" << endl;
-  } else {
-    f_service_ <<
-      indent() << "super(iface, iprot, oprot);" << endl;
+      indent() << "super(iface);" << endl;
   }
   f_service_ <<
-    indent() << "_iface = iface;" << endl;
+    indent() << "iface_ = iface;" << endl;
 
   for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
     f_service_ <<
-      indent() << "_processMap.put(\"" << (*f_iter)->get_name() << "\", new " << (*f_iter)->get_name() << "());" << endl;
+      indent() << "processMap_.put(\"" << (*f_iter)->get_name() << "\", new " << (*f_iter)->get_name() << "());" << endl;
   }
   
   scope_down(f_service_);
@@ -719,43 +702,37 @@
   if (extends.empty()) {
     f_service_ <<
       indent() << "private static interface ProcessFunction {" << endl <<
-      indent() << "  public void process(int seqid, TTransport _itrans, TTransport _otrans) throws TException;" << endl <<
+      indent() << "  public void process(int seqid, TProtocol iprot, TProtocol oprot) throws TException;" << endl <<
       indent() << "}" << endl <<
       endl;
   }
 
   f_service_ <<
-    indent() << "private Iface _iface;" << endl;
+    indent() << "private Iface iface_;" << endl;
 
   if (extends.empty()) {
     f_service_ <<
-      indent() << "protected final HashMap<String,ProcessFunction> _processMap = new HashMap<String,ProcessFunction>();" << endl;
-  }
-
-  if (extends.empty()) {
-    f_service_ <<
-      indent() << "protected TProtocol _iprot;" << endl <<
-      indent() << "protected TProtocol _oprot;" << endl;
+      indent() << "protected final HashMap<String,ProcessFunction> processMap_ = new HashMap<String,ProcessFunction>();" << endl;
   }
   
   f_service_ << endl;
   
   // Generate the server implementation
   indent(f_service_) <<
-    "public boolean process(TTransport _itrans, TTransport _otrans) throws TException" << endl;
+    "public boolean process(TProtocol iprot, TProtocol oprot) throws TException" << endl;
   scope_up(f_service_);
 
   f_service_ <<
-    indent() << "TMessage msg = _iprot.readMessageBegin(_itrans);" << endl;
+    indent() << "TMessage msg = iprot.readMessageBegin();" << endl;
 
   // TODO(mcslee): validate message, was the seqid etc. legit?
 
   f_service_ <<
-    indent() << "ProcessFunction fn = _processMap.get(msg.name);" << endl <<
+    indent() << "ProcessFunction fn = processMap_.get(msg.name);" << endl <<
     indent() << "if (fn == null) {" << endl <<
     indent() << "  System.err.println(\"Unknown function: '\" + msg.name + \"'\");" << endl <<
     indent() << "} else {" << endl <<
-    indent() << "  fn.process(msg.seqid, _itrans, _otrans);" << endl <<
+    indent() << "  fn.process(msg.seqid, iprot, oprot);" << endl <<
     indent() << "}" << endl;
   
   // Read end of args field, the T_STOP, and the struct close
@@ -816,16 +793,16 @@
 
   // Open function
   indent(f_service_) <<
-    "public void process(int seqid, TTransport _itrans, TTransport _otrans) throws TException" << endl;
+    "public void process(int seqid, TProtocol iprot, TProtocol oprot) throws TException" << endl;
   scope_up(f_service_);
 
   string argsname = tfunction->get_name() + "_args";
   string resultname = tfunction->get_name() + "_result";
 
   f_service_ <<
-    indent() << argsname << " __args = new " << argsname << "();" << endl <<
-    indent() << "__args.read(_iprot, _itrans);" << endl <<
-    indent() << "_iprot.readMessageEnd(_itrans);" << endl;
+    indent() << argsname << " args = new " << argsname << "();" << endl <<
+    indent() << "args.read(iprot);" << endl <<
+    indent() << "iprot.readMessageEnd();" << endl;
 
   t_struct* xs = tfunction->get_xceptions();
   const std::vector<t_field*>& xceptions = xs->get_members();
@@ -834,7 +811,7 @@
   // Declare result for non async function
   if (!tfunction->is_async()) {
     f_service_ <<
-      indent() << resultname << " __result = new " << resultname << "();" << endl;
+      indent() << resultname << " result = new " << resultname << "();" << endl;
   }
 
   // Try block for a function with exceptions
@@ -851,10 +828,10 @@
 
   f_service_ << indent();
   if (!tfunction->is_async() && !tfunction->get_returntype()->is_void()) {
-    f_service_ << "__result.success = ";
+    f_service_ << "result.success = ";
   }
   f_service_ <<
-    "_iface." << tfunction->get_name() << "(";
+    "iface_." << tfunction->get_name() << "(";
   bool first = true;
   for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
     if (first) {
@@ -862,14 +839,14 @@
     } else {
       f_service_ << ", ";
     }
-    f_service_ << "__args." << (*f_iter)->get_name();
+    f_service_ << "args." << (*f_iter)->get_name();
   }
   f_service_ << ");" << endl;
 
   // Set isset on success field
   if (!tfunction->is_async() && !tfunction->get_returntype()->is_void()) {
     f_service_ <<
-      indent() << "__result.__isset.success = true;" << endl;
+      indent() << "result.__isset.success = true;" << endl;
   }
 
   if (!tfunction->is_async() && xceptions.size() > 0) {
@@ -880,8 +857,8 @@
       if (!tfunction->is_async()) {
         indent_up();
         f_service_ <<
-          indent() << "__result." << (*x_iter)->get_name() << " = " << (*x_iter)->get_name() << ";" << endl <<
-          indent() << "__result.__isset." << (*x_iter)->get_name() << " = true;" << endl;
+          indent() << "result." << (*x_iter)->get_name() << " = " << (*x_iter)->get_name() << ";" << endl <<
+          indent() << "result.__isset." << (*x_iter)->get_name() << " = true;" << endl;
         indent_down();
         f_service_ << indent() << "}";
       } else {
@@ -902,10 +879,10 @@
   }
 
   f_service_ <<
-    indent() << "_oprot.writeMessageBegin(_otrans, new TMessage(\"" << tfunction->get_name() << "\", TMessageType.REPLY, seqid));" << endl <<
-    indent() << "__result.write(_oprot, _otrans);" << endl <<
-    indent() << "_oprot.writeMessageEnd(_otrans);" << endl <<
-    indent() << "_otrans.flush();" << endl;
+    indent() << "oprot.writeMessageBegin(new TMessage(\"" << tfunction->get_name() << "\", TMessageType.REPLY, seqid));" << endl <<
+    indent() << "result.write(oprot);" << endl <<
+    indent() << "oprot.writeMessageEnd();" << endl <<
+    indent() << "oprot.getOutputTransport().flush();" << endl;
 
   // Close function
   scope_down(f_service_);
@@ -948,7 +925,7 @@
   } else if (type->is_base_type() || type->is_enum()) {
 
     indent(out) <<
-      name << " = _iprot.";
+      name << " = iprot.";
     
     if (type->is_base_type()) {
       t_base_type::t_base tbase = ((t_base_type*)type)->get_base();
@@ -958,31 +935,31 @@
           name;
         break;
       case t_base_type::TYPE_STRING:        
-        out << "readString(_itrans);";
+        out << "readString();";
         break;
       case t_base_type::TYPE_BOOL:
-        out << "readBool(_itrans);";
+        out << "readBool();";
         break;
       case t_base_type::TYPE_BYTE:
-        out << "readByte(_itrans);";
+        out << "readByte();";
         break;
       case t_base_type::TYPE_I16:
-        out << "readI16(_itrans);";
+        out << "readI16();";
         break;
       case t_base_type::TYPE_I32:
-        out << "readI32(_itrans);";
+        out << "readI32();";
         break;
       case t_base_type::TYPE_I64:
-        out << "readI64(_itrans);";
+        out << "readI64();";
         break;
       case t_base_type::TYPE_DOUBLE:
-        out << "readDouble(_itrans);";
+        out << "readDouble();";
         break;
       default:
         throw "compiler error: no Java name for base type " + tbase;
       }
     } else if (type->is_enum()) {
-      out << "readI32(_itrans);";
+      out << "readI32();";
     }
     out <<
       endl;
@@ -1000,7 +977,7 @@
                                                    string prefix) {
   out <<
     indent() << prefix << " = new " << type_name(tstruct) << "();" << endl <<
-    indent() << prefix << ".read(_iprot, _itrans);" << endl;
+    indent() << prefix << ".read(iprot);" << endl;
 }
 
 /**
@@ -1024,13 +1001,13 @@
   // Declare variables, read header
   if (ttype->is_map()) {
     out <<
-      indent() << "TMap " << obj << " = _iprot.readMapBegin(_itrans);" << endl;
+      indent() << "TMap " << obj << " = iprot.readMapBegin();" << endl;
   } else if (ttype->is_set()) {
     out <<
-      indent() << "TSet " << obj << " = _iprot.readSetBegin(_itrans);" << endl;
+      indent() << "TSet " << obj << " = iprot.readSetBegin();" << endl;
   } else if (ttype->is_list()) {
     out <<
-      indent() << "TList " << obj << " = _iprot.readListBegin(_itrans);" << endl;
+      indent() << "TList " << obj << " = iprot.readListBegin();" << endl;
   }
 
 
@@ -1055,11 +1032,11 @@
 
   // Read container end
   if (ttype->is_map()) {
-    indent(out) << "_iprot.readMapEnd(_itrans);" << endl;
+    indent(out) << "iprot.readMapEnd();" << endl;
   } else if (ttype->is_set()) {
-    indent(out) << "_iprot.readSetEnd(_itrans);" << endl;
+    indent(out) << "iprot.readSetEnd();" << endl;
   } else if (ttype->is_list()) {
-    indent(out) << "_iprot.readListEnd(_itrans);" << endl;
+    indent(out) << "iprot.readListEnd();" << endl;
   }
 
   scope_down(out);
@@ -1158,7 +1135,7 @@
 
     string name = prefix + tfield->get_name();
     indent(out) <<
-      "_oprot.";
+      "oprot.";
     
     if (type->is_base_type()) {
       t_base_type::t_base tbase = ((t_base_type*)type)->get_base();
@@ -1168,31 +1145,31 @@
           "compiler error: cannot serialize void field in a struct: " + name;
         break;
       case t_base_type::TYPE_STRING:
-        out << "writeString(_otrans, " << name << ");";
+        out << "writeString(" << name << ");";
         break;
       case t_base_type::TYPE_BOOL:
-        out << "writeBool(_otrans, " << name << ");";
+        out << "writeBool(" << name << ");";
         break;
       case t_base_type::TYPE_BYTE:
-        out << "writeByte(_otrans, " << name << ");";
+        out << "writeByte(" << name << ");";
         break;
       case t_base_type::TYPE_I16:
-        out << "writeI16(_otrans, " << name << ");";
+        out << "writeI16(" << name << ");";
         break;
       case t_base_type::TYPE_I32:
-        out << "writeI32(_otrans, " << name << ");";
+        out << "writeI32(" << name << ");";
         break;
       case t_base_type::TYPE_I64:
-        out << "writeI64(_otrans, " << name << ");";
+        out << "writeI64(" << name << ");";
         break;
       case t_base_type::TYPE_DOUBLE:
-        out << "writeDouble(_otrans, " << name << ");";
+        out << "writeDouble(" << name << ");";
         break;
       default:
         throw "compiler error: no Java name for base type " + tbase;
       }
     } else if (type->is_enum()) {
-      out << "writeI32(_otrans, " << name << ");";
+      out << "writeI32(" << name << ");";
     }
     out << endl;
   } else {
@@ -1213,7 +1190,7 @@
                                                  t_struct* tstruct,
                                                  string prefix) {
   out <<
-    indent() << prefix << ".write(_oprot, _otrans);" << endl;
+    indent() << prefix << ".write(oprot);" << endl;
 }
 
 /**
@@ -1229,18 +1206,18 @@
   
   if (ttype->is_map()) {
     indent(out) <<
-      "_oprot.writeMapBegin(_otrans, new TMap(" <<
+      "oprot.writeMapBegin(new TMap(" <<
       type_to_enum(((t_map*)ttype)->get_key_type()) << ", " <<
       type_to_enum(((t_map*)ttype)->get_val_type()) << ", " <<
       prefix << ".size()));" << endl;
   } else if (ttype->is_set()) {
     indent(out) <<
-      "_oprot.writeSetBegin(_otrans, new TSet(" <<
+      "oprot.writeSetBegin(new TSet(" <<
       type_to_enum(((t_set*)ttype)->get_elem_type()) << ", " <<
       prefix << ".size()));" << endl;
   } else if (ttype->is_list()) {
     indent(out) <<
-      "_oprot.writeListBegin(_otrans, new TList(" <<
+      "oprot.writeListBegin(new TList(" <<
       type_to_enum(((t_list*)ttype)->get_elem_type()) << ", " <<
       prefix << ".size()));" << endl;
   }
@@ -1278,13 +1255,13 @@
     
     if (ttype->is_map()) {
       indent(out) <<
-        "_oprot.writeMapEnd(_otrans);" << endl;
+        "oprot.writeMapEnd();" << endl;
     } else if (ttype->is_set()) {
       indent(out) <<
-        "_oprot.writeSetEnd(_otrans);" << endl;
+        "oprot.writeSetEnd();" << endl;
     } else if (ttype->is_list()) {
       indent(out) <<
-        "_oprot.writeListEnd(_otrans);" << endl;
+        "oprot.writeListEnd();" << endl;
     }
     
     scope_down(out);