From 8694a79bb2d543a46867454b743c38ce85380e4e Mon Sep 17 00:00:00 2001 From: Leon Breedt Date: Thu, 28 Apr 2005 17:55:34 +0000 Subject: default to using UTF-8 as response encoding for SOAP if none is supplied, but if an encoding is supplied by caller, use that for the response instead (NAKAMURA Hiroshi) git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1245 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionwebservice/lib/action_web_service/dispatcher/abstract.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'actionwebservice/lib/action_web_service/dispatcher/abstract.rb') diff --git a/actionwebservice/lib/action_web_service/dispatcher/abstract.rb b/actionwebservice/lib/action_web_service/dispatcher/abstract.rb index bec38d8c1c..e60f30a05b 100644 --- a/actionwebservice/lib/action_web_service/dispatcher/abstract.rb +++ b/actionwebservice/lib/action_web_service/dispatcher/abstract.rb @@ -32,7 +32,7 @@ module ActionWebService # :nodoc: else return_value = self.__send__(invocation.api_method.name) end - web_service_create_response(invocation.protocol, invocation.api, invocation.api_method, return_value) + web_service_create_response(invocation.protocol, invocation.protocol_options, invocation.api, invocation.api_method, return_value) end def web_service_delegated_invoke(invocation) @@ -43,13 +43,14 @@ module ActionWebService # :nodoc: if cancellation_reason raise(DispatcherError, "request canceled: #{cancellation_reason}") end - web_service_create_response(invocation.protocol, invocation.api, invocation.api_method, return_value) + web_service_create_response(invocation.protocol, invocation.protocol_options, invocation.api, invocation.api_method, return_value) end def web_service_invocation(request) public_method_name = request.method_name invocation = Invocation.new invocation.protocol = request.protocol + invocation.protocol_options = request.protocol_options invocation.service_name = request.service_name if web_service_dispatching_mode == :layered case invocation.protocol @@ -109,18 +110,19 @@ module ActionWebService # :nodoc: invocation end - def web_service_create_response(protocol, api, api_method, return_value) + def web_service_create_response(protocol, protocol_options, api, api_method, return_value) if api.has_api_method?(api_method.name) return_type = api_method.returns ? api_method.returns[0] : nil return_value = api_method.cast_returns(return_value) else return_type = ActionWebService::SignatureTypes.canonical_signature_entry(return_value.class, 0) end - protocol.encode_response(api_method.public_name + 'Response', return_value, return_type) + protocol.encode_response(api_method.public_name + 'Response', return_value, return_type, protocol_options) end class Invocation # :nodoc: attr_accessor :protocol + attr_accessor :protocol_options attr_accessor :service_name attr_accessor :api attr_accessor :api_method -- cgit v1.2.3