THRIFT-542: Perl compiler uses invalid method 'method_exists' and subsequent test
authorT Jake Luciani <jake@apache.org>
Fri, 17 Jul 2009 01:34:50 +0000 (01:34 +0000)
committerT Jake Luciani <jake@apache.org>
Fri, 17 Jul 2009 01:34:50 +0000 (01:34 +0000)
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@794938 13f79535-47bb-0310-9956-ffa450edef68

compiler/cpp/src/generate/t_perl_generator.cc
lib/perl/lib/Thrift/BinaryProtocol.pm
lib/perl/test/Makefile.am

index ae204fd..17934ce 100644 (file)
@@ -781,7 +781,7 @@ void t_perl_generator::generate_service_processor(t_service* tservice) {
   // HOT: check for method implementation
   f_service_ <<
     indent() << "my $methodname = 'process_'.$fname;" << endl <<
-    indent() << "if (!method_exists($self, $methodname)) {" << endl;
+    indent() << "if (!$self->can($methodname)) {" << endl;
 
   f_service_ <<
     indent() << "  $input->skip(TType::STRUCT);" << endl <<
@@ -824,7 +824,7 @@ void t_perl_generator::generate_process_function(t_service* tservice,
 
   f_service_ <<
     indent() << "my $self = shift;"<<endl<<
-    indent() << "my ($seqid, $input, $output)" << endl;
+    indent() << "my ($seqid, $input, $output) = @_;" << endl;
 
   string argsname = perl_namespace(tservice->get_program()) + service_name_ + "_" + tfunction->get_name() + "_args";
   string resultname = perl_namespace(tservice->get_program()) + service_name_ + "_" + tfunction->get_name() + "_result";
index 0e5d61d..64d7958 100644 (file)
@@ -477,7 +477,7 @@ sub readStringBody
 #
 # Binary Protocol Factory
 #
-package TBinaryProtocolFactory;
+package Thrift::BinaryProtocolFactory;
 use base('TProtocolFactory');
 
 sub new
@@ -492,7 +492,7 @@ sub getProtocol{
     my $self  = shift;
     my $trans = shift;
 
-    return new TBinaryProtocol($trans);
+    return new Thrift::BinaryProtocol($trans);
 }
 
 1;
index ce87c48..795aaed 100644 (file)
@@ -28,4 +28,4 @@ gen-perl/ThriftTest/Types.pm: $(THRIFT_IF)
 clean-local:
        rm -rf gen-perl
 
-EXTRA_DIST = memory_buffer.t
+EXTRA_DIST = memory_buffer.t processor.t