THRIFT-1284. cpp: fix processor inheritance 

Don't make processors that have a proper parent class also inherit from TProcessor.

Patch: Adam Simpkins

git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1160933 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/compiler/cpp/src/generate/t_cpp_generator.cc b/compiler/cpp/src/generate/t_cpp_generator.cc
index 5da2786..49699eb 100755
--- a/compiler/cpp/src/generate/t_cpp_generator.cc
+++ b/compiler/cpp/src/generate/t_cpp_generator.cc
@@ -2498,7 +2498,9 @@
       // parent services were also generated with templates enabled.
       extends += "T<Protocol_>";
     }
-    extends_processor = ", public " + extends;
+    extends_processor = extends;
+  } else {
+    extends_processor = "::apache::thrift::T" + pstyle + "Processor";
   }
 
   string template_header, template_suffix, typename_str;
@@ -2514,8 +2516,7 @@
   f_header_ <<
     template_header <<
     "class " << service_name_ << pstyle << class_suffix <<
-    " : virtual public ::apache::thrift::T" << pstyle << "Processor" <<
-    extends_processor << " {" << endl;
+    " : public " << extends_processor << " {" << endl;
 
   // Protected data members
   f_header_ <<
@@ -2852,15 +2853,15 @@
 
     out <<
       indent() << "void* ctx = NULL;" << endl <<
-      indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-      indent() << "  ctx = eventHandler_->getContext(\"" <<
+      indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+      indent() << "  ctx = this->eventHandler_->getContext(\"" <<
         service_func_name << "\", callContext);" << endl <<
       indent() << "}" << endl <<
       indent() << "apache::thrift::TProcessorContextFreer freer(" <<
-        "eventHandler_.get(), ctx, \"" << service_func_name << "\");" <<
+        "this->eventHandler_.get(), ctx, \"" << service_func_name << "\");" <<
         endl << endl <<
-      indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-      indent() << "  eventHandler_->preRead(ctx, \"" <<
+      indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+      indent() << "  this->eventHandler_->preRead(ctx, \"" <<
         service_func_name << "\");" << endl <<
       indent() << "}" << endl << endl <<
       indent() << argsname << " args;" << endl <<
@@ -2868,8 +2869,8 @@
       indent() << "iprot->readMessageEnd();" << endl <<
       indent() << "uint32_t bytes = iprot->getTransport()->readEnd();" <<
         endl << endl <<
-      indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-      indent() << "  eventHandler_->postRead(ctx, \"" <<
+      indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+      indent() << "  this->eventHandler_->postRead(ctx, \"" <<
         service_func_name << "\", bytes);" << endl <<
       indent() << "}" << endl <<
       endl;
@@ -2941,8 +2942,8 @@
 
     indent_up();
     out <<
-      indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-      indent() << "  eventHandler_->handlerError(ctx, \"" <<
+      indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+      indent() << "  this->eventHandler_->handlerError(ctx, \"" <<
         service_func_name << "\");" << endl <<
       indent() << "}" << endl;
 
@@ -2965,8 +2966,8 @@
     // Shortcut out here for oneway functions
     if (tfunction->is_oneway()) {
       out <<
-        indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-        indent() << "  eventHandler_->asyncComplete(ctx, \"" <<
+        indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+        indent() << "  this->eventHandler_->asyncComplete(ctx, \"" <<
           service_func_name << "\");" << endl <<
         indent() << "}" << endl << endl <<
         indent() << "return;" << endl;
@@ -2978,8 +2979,8 @@
 
     // Serialize the result into a struct
     out <<
-      indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-      indent() << "  eventHandler_->preWrite(ctx, \"" <<
+      indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+      indent() << "  this->eventHandler_->preWrite(ctx, \"" <<
         service_func_name << "\");" << endl <<
       indent() << "}" << endl << endl <<
       indent() << "oprot->writeMessageBegin(\"" << tfunction->get_name() <<
@@ -2988,8 +2989,8 @@
       indent() << "oprot->writeMessageEnd();" << endl <<
       indent() << "bytes = oprot->getTransport()->writeEnd();" << endl <<
       indent() << "oprot->getTransport()->flush();" << endl << endl <<
-      indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-      indent() << "  eventHandler_->postWrite(ctx, \"" <<
+      indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+      indent() << "  this->eventHandler_->postWrite(ctx, \"" <<
         service_func_name << "\", bytes);" << endl <<
       indent() << "}" << endl;
 
@@ -3041,26 +3042,26 @@
       indent() << tservice->get_name() + "_" + tfunction->get_name() <<
         "_args args;" << endl <<
       indent() << "void* ctx = NULL;" << endl <<
-      indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-      indent() << "  ctx = eventHandler_->getContext(\"" <<
+      indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+      indent() << "  ctx = this->eventHandler_->getContext(\"" <<
         service_func_name << "\", NULL);" << endl <<
       indent() << "}" << endl <<
       indent() << "apache::thrift::TProcessorContextFreer freer(" <<
-        "eventHandler_.get(), ctx, \"" << service_func_name << "\");" <<
+        "this->eventHandler_.get(), ctx, \"" << service_func_name << "\");" <<
         endl << endl <<
       indent() << "try {" << endl;
     indent_up();
     out <<
-      indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-      indent() << "  eventHandler_->preRead(ctx, \"" <<
+      indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+      indent() << "  this->eventHandler_->preRead(ctx, \"" <<
         service_func_name << "\");" << endl <<
       indent() << "}" << endl <<
       indent() << "args.read(iprot);" << endl <<
       indent() << "iprot->readMessageEnd();" << endl <<
       indent() << "uint32_t bytes = iprot->getTransport()->readEnd();" <<
         endl <<
-      indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-      indent() << "  eventHandler_->postRead(ctx, \"" <<
+      indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+      indent() << "  this->eventHandler_->postRead(ctx, \"" <<
         service_func_name << "\", bytes);" << endl <<
       indent() << "}" << endl;
     scope_down(out);
@@ -3068,8 +3069,8 @@
     // TODO(dreiss): Handle TExceptions?  Expose to server?
     out <<
       indent() << "catch (const std::exception& exn) {" << endl <<
-      indent() << "  if (eventHandler_.get() != NULL) {" << endl <<
-      indent() << "    eventHandler_->handlerError(ctx, \"" <<
+      indent() << "  if (this->eventHandler_.get() != NULL) {" << endl <<
+      indent() << "    this->eventHandler_->handlerError(ctx, \"" <<
         service_func_name << "\");" << endl <<
       indent() << "  }" << endl <<
       indent() << "  return cob(false);" << endl <<
@@ -3077,8 +3078,8 @@
 
     if (tfunction->is_oneway()) {
       out <<
-        indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-        indent() << "  eventHandler_->asyncComplete(ctx, \"" <<
+        indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+        indent() << "  this->eventHandler_->asyncComplete(ctx, \"" <<
           service_func_name << "\");" << endl <<
         indent() << "}" << endl;
     }
@@ -3195,15 +3196,15 @@
       // Serialize the result into a struct
       out <<
         endl <<
-        indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-        indent() << "  ctx = eventHandler_->getContext(\"" <<
+        indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+        indent() << "  ctx = this->eventHandler_->getContext(\"" <<
           service_func_name << "\", NULL);" << endl <<
         indent() << "}" << endl <<
         indent() << "apache::thrift::TProcessorContextFreer freer(" <<
-          "eventHandler_.get(), ctx, \"" << service_func_name <<
+          "this->eventHandler_.get(), ctx, \"" << service_func_name <<
           "\");" << endl << endl <<
-        indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-        indent() << "  eventHandler_->preWrite(ctx, \"" <<
+        indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+        indent() << "  this->eventHandler_->preWrite(ctx, \"" <<
           service_func_name << "\");" << endl <<
         indent() << "}" << endl << endl <<
         indent() << "oprot->writeMessageBegin(\"" << tfunction->get_name() <<
@@ -3213,8 +3214,8 @@
         indent() << "uint32_t bytes = oprot->getTransport()->writeEnd();" <<
           endl <<
         indent() << "oprot->getTransport()->flush();" << endl <<
-        indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-        indent() << "  eventHandler_->postWrite(ctx, \"" <<
+        indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+        indent() << "  this->eventHandler_->postWrite(ctx, \"" <<
           service_func_name << "\", bytes);" << endl <<
         indent() << "}" << endl <<
         indent() << "return cob(true);" << endl;
@@ -3253,12 +3254,12 @@
       // Get the event handler context
       out <<
         endl <<
-        indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-        indent() << "  ctx = eventHandler_->getContext(\"" <<
+        indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+        indent() << "  ctx = this->eventHandler_->getContext(\"" <<
           service_func_name << "\", NULL);" << endl <<
         indent() << "}" << endl <<
         indent() << "apache::thrift::TProcessorContextFreer freer(" <<
-          "eventHandler_.get(), ctx, \"" << service_func_name << "\");" <<
+          "this->eventHandler_.get(), ctx, \"" << service_func_name << "\");" <<
           endl << endl;
 
       // Throw the TDelayedException, and catch the result
@@ -3289,8 +3290,8 @@
       out << " catch (std::exception& e) {" << endl;
       indent_up();
       out <<
-        indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-        indent() << "  eventHandler_->handlerError(ctx, \"" <<
+        indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+        indent() << "  this->eventHandler_->handlerError(ctx, \"" <<
           service_func_name << "\");" << endl <<
         indent() << "}" << endl <<
         endl <<
@@ -3310,8 +3311,8 @@
 
       // Serialize the result into a struct
       out <<
-        indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-        indent() << "  eventHandler_->preWrite(ctx, \"" <<
+        indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+        indent() << "  this->eventHandler_->preWrite(ctx, \"" <<
           service_func_name << "\");" << endl <<
         indent() << "}" << endl << endl <<
         indent() << "oprot->writeMessageBegin(\"" << tfunction->get_name() <<
@@ -3321,8 +3322,8 @@
         indent() << "uint32_t bytes = oprot->getTransport()->writeEnd();" <<
           endl <<
         indent() << "oprot->getTransport()->flush();" << endl <<
-        indent() << "if (eventHandler_.get() != NULL) {" << endl <<
-        indent() << "  eventHandler_->postWrite(ctx, \"" <<
+        indent() << "if (this->eventHandler_.get() != NULL) {" << endl <<
+        indent() << "  this->eventHandler_->postWrite(ctx, \"" <<
           service_func_name << "\", bytes);" << endl <<
         indent() << "}" << endl <<
         indent() << "return cob(true);" << endl;