From 3e5e9d09016dfbbda7a7a46828faf9cab4235fb8 Mon Sep 17 00:00:00 2001 From: Roger Meier Date: Fri, 16 Nov 2012 00:51:59 +0000 Subject: [PATCH] THRIFT-1494 Python generated "Service-remote" script doesn't honor service inheritance Patch: Nathaniel Cook git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1410130 13f79535-47bb-0310-9956-ffa450edef68 --- compiler/cpp/src/generate/t_py_generator.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/compiler/cpp/src/generate/t_py_generator.cc b/compiler/cpp/src/generate/t_py_generator.cc index 4cdcd9f0..26d2b8e1 100644 --- a/compiler/cpp/src/generate/t_py_generator.cc +++ b/compiler/cpp/src/generate/t_py_generator.cc @@ -284,6 +284,7 @@ class t_py_generator : public t_generator { std::ofstream f_service_; std::string package_dir_; + std::string module_; }; @@ -298,6 +299,7 @@ void t_py_generator::init_generator() { // Make output directory string module = get_real_py_module(program_, gen_twisted_); package_dir_ = get_out_dir(); + module_ = module; while (true) { // TODO: Do better error checking here. MKDIR(package_dir_.c_str()); @@ -1404,6 +1406,13 @@ void t_py_generator::generate_service_client(t_service* tservice) { */ void t_py_generator::generate_service_remote(t_service* tservice) { vector functions = tservice->get_functions(); + //Get all function from parents + t_service* parent = tservice->get_extends(); + while(parent != NULL) { + vector p_functions = parent->get_functions(); + functions.insert(functions.end(), p_functions.begin(), p_functions.end()); + parent = parent->get_extends(); + } vector::iterator f_iter; string f_remote_name = package_dir_+"/"+service_name_+"-remote"; @@ -1423,8 +1432,8 @@ void t_py_generator::generate_service_remote(t_service* tservice) { endl; f_remote << - "import " << service_name_ << endl << - "from ttypes import *" << endl << + "from " << module_ << " import " << service_name_ << endl << + "from " << module_ << ".ttypes import *" << endl << endl; f_remote << -- 2.17.1