aboutsummaryrefslogtreecommitdiffstats
path: root/actionwebservice/lib/action_web_service/dispatcher/abstract.rb
diff options
context:
space:
mode:
authorLeon Breedt <bitserf@gmail.com>2005-04-28 17:55:34 +0000
committerLeon Breedt <bitserf@gmail.com>2005-04-28 17:55:34 +0000
commit8694a79bb2d543a46867454b743c38ce85380e4e (patch)
treeb6bd7b711773f0305b9368521ebb20821d696143 /actionwebservice/lib/action_web_service/dispatcher/abstract.rb
parent896fea505b67f6dd842a58c72bcd919c593d925a (diff)
downloadrails-8694a79bb2d543a46867454b743c38ce85380e4e.tar.gz
rails-8694a79bb2d543a46867454b743c38ce85380e4e.tar.bz2
rails-8694a79bb2d543a46867454b743c38ce85380e4e.zip
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
Diffstat (limited to 'actionwebservice/lib/action_web_service/dispatcher/abstract.rb')
-rw-r--r--actionwebservice/lib/action_web_service/dispatcher/abstract.rb10
1 files changed, 6 insertions, 4 deletions
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