mirror of
https://github.com/valitydev/thrift.git
synced 2024-11-07 02:45:22 +00:00
THRIFT-2961: Service inheritance does not work with namespaced Ruby code
Client: rb Patch: Jan Brauer This closes #364 commit 111c4e77a78c1a82f526923f13534bb0027ef33f Author: Jan Brauer <jan@jimdo.com> Date: 2015-01-29T22:01:26Z Make 'extends' work with 'rb:namespaced'. commit 34cab3d7c77bd5e8325ac4f30f1091429c35905e Author: Jan Brauer <jan@jimdo.com> Date: 2015-01-29T22:25:03Z Add test for namespaced service extension
This commit is contained in:
parent
4e16718e99
commit
8f2596ad54
@ -753,8 +753,13 @@ void t_rb_generator::generate_service(t_service* tservice) {
|
||||
f_service_ << rb_autogen_comment() << endl << render_require_thrift();
|
||||
|
||||
if (tservice->get_extends() != NULL) {
|
||||
f_service_ << "require '" << require_prefix_ << underscore(tservice->get_extends()->get_name())
|
||||
<< "'" << endl;
|
||||
if (namespaced_) {
|
||||
f_service_ << "require '" << rb_namespace_to_path_prefix(tservice->get_extends()->get_program()->get_namespace("rb")) << underscore(tservice->get_extends()->get_name())
|
||||
<< "'" << endl;
|
||||
} else {
|
||||
f_service_ << "require '" << require_prefix_ << underscore(tservice->get_extends()->get_name())
|
||||
<< "'" << endl;
|
||||
}
|
||||
}
|
||||
|
||||
f_service_ << "require '" << require_prefix_ << underscore(program_name_) << "_types'" << endl
|
||||
|
@ -48,6 +48,8 @@ namespace :'gen-rb' do
|
||||
task :'namespaced_spec' do
|
||||
dir = File.dirname(__FILE__) + '/spec'
|
||||
sh THRIFT, '--gen', 'rb:namespaced', '-recurse', '-o', dir, "#{dir}/ThriftNamespacedSpec.thrift"
|
||||
sh THRIFT, '--gen', 'rb:namespaced', '-recurse', '-o', dir, "#{dir}/BaseService.thrift"
|
||||
sh THRIFT, '--gen', 'rb:namespaced', '-recurse', '-o', dir, "#{dir}/ExtendedService.thrift"
|
||||
end
|
||||
|
||||
task :'flat_spec' do
|
||||
|
27
lib/rb/spec/BaseService.thrift
Normal file
27
lib/rb/spec/BaseService.thrift
Normal file
@ -0,0 +1,27 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
|
||||
namespace rb Base
|
||||
|
||||
struct Hello {
|
||||
1: string greeting = "hello world"
|
||||
}
|
||||
|
||||
service BaseService {
|
||||
Hello greeting(1:bool english)
|
||||
}
|
25
lib/rb/spec/ExtendedService.thrift
Normal file
25
lib/rb/spec/ExtendedService.thrift
Normal file
@ -0,0 +1,25 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
|
||||
namespace rb Extended
|
||||
|
||||
include "BaseService.thrift"
|
||||
|
||||
service ExtendedService extends BaseService.BaseService {
|
||||
void ping()
|
||||
}
|
@ -59,4 +59,9 @@ describe 'namespaced generation' do
|
||||
it "required an included file" do
|
||||
defined?(OtherNamespace::SomeEnum).should be_true
|
||||
end
|
||||
|
||||
it "extended a service" do
|
||||
require "extended/extended_service"
|
||||
end
|
||||
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user