diff options
| author | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-12-20 13:50:15 +0000 |
|---|---|---|
| committer | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-12-20 13:50:15 +0000 |
| commit | 7d163a29ec5458eb8e02ef3de8d7aece2be1f59e (patch) | |
| tree | b56a6e784df74331c28e4a94901b96837f214e35 /lib/soap/rpc/httpserver.rb | |
| parent | 1d25ffca9e45da9bcd4eeef08a4594d6ad47d69b (diff) | |
| download | ruby-7d163a29ec5458eb8e02ef3de8d7aece2be1f59e.tar.gz ruby-7d163a29ec5458eb8e02ef3de8d7aece2be1f59e.tar.xz ruby-7d163a29ec5458eb8e02ef3de8d7aece2be1f59e.zip | |
* added files:
* lib/soap/mapping/wsdl*.rb
* lib/wsdl/soap/element.rb
* lib/wsdl/xmlSchema/simpleContent.rb
* modified files:
* lib/soap/*
* lib/wsdl/*
* lib/xsd/*
* test/soap/*
* test/wsdl/*
* test/xsd/*
* summary
* imported from the soap4r repository. Version: 1.5.3-ruby1.8.2
* added several XSD basetype support: nonPositiveInteger,
negativeInteger, nonNegativeInteger, unsignedLong, unsignedInt,
unsignedShort, unsignedByte, positiveInteger
* HTTP client connection/send/receive timeout support.
* HTTP client/server gzipped content encoding support.
* improved WSDL schema definition support; still is far from
complete, but is making step by step improovement.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@7612 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/soap/rpc/httpserver.rb')
| -rw-r--r-- | lib/soap/rpc/httpserver.rb | 57 |
1 files changed, 44 insertions, 13 deletions
diff --git a/lib/soap/rpc/httpserver.rb b/lib/soap/rpc/httpserver.rb index 7b1f961d9..dccf95048 100644 --- a/lib/soap/rpc/httpserver.rb +++ b/lib/soap/rpc/httpserver.rb @@ -55,6 +55,8 @@ class HTTPServer < Logger::Application @soaplet.app_scope_router.mapping_registry = mapping_registry end + # servant entry interface + def add_rpc_request_servant(factory, namespace = @default_namespace, mapping_registry = nil) @soaplet.add_rpc_request_servant(factory, namespace, mapping_registry) @@ -72,23 +74,52 @@ class HTTPServer < Logger::Application @soaplet.add_rpc_headerhandler(obj) end - def add_method(obj, name, *param) - add_method_as(obj, name, name, *param) + # method entry interface + + def add_rpc_method(obj, name, *param) + add_rpc_method_as(obj, name, name, *param) + end + alias add_method add_rpc_method + + def add_document_method(obj, name, req_qname, res_qname) + opt = {} + opt[:request_style] = opt[:response_style] = :document + opt[:request_use] = opt[:response_use] = :literal + param_def = [ + ['input', req_qname.name, [nil, req_qname.namespace, req_qname.name]], + ['output', req_qname.name, [nil, res_qname.namespace, res_qname.name]] + ] + @soaplet.app_scope_router.add_operation(req_qname, nil, obj, name, + param_def, opt) end - def add_method_as(obj, name, name_as, *param) + def add_rpc_method_as(obj, name, name_as, *param) qname = XSD::QName.new(@default_namespace, name_as) soapaction = nil - method = obj.method(name) - param_def = if param.size == 1 and param[0].is_a?(Array) - param[0] - elsif param.empty? - ::SOAP::RPC::SOAPMethod.create_param_def( - (1..method.arity.abs).collect { |i| "p#{ i }" }) - else - SOAP::RPC::SOAPMethod.create_param_def(param) - end - @soaplet.app_scope_router.add_method(obj, qname, soapaction, name, param_def) + param_def = create_param_def(obj, name, param) + add_operation(qname, soapaction, obj, name, param_def) + end + alias add_method_as add_rpc_method_as + + def add_operation(qname, soapaction, obj, name, param_def, opt = {}) + opt[:request_style] ||= :rpc + opt[:response_style] ||= :rpc + opt[:request_use] ||= :encoded + opt[:response_use] ||= :encoded + @soaplet.app_scope_router.add_operation(qname, soapaction, obj, name, + param_def, opt) + end + + def create_param_def(obj, name, param = nil) + if param.nil? or param.empty? + method = obj.method(name) + ::SOAP::RPC::SOAPMethod.create_param_def( + (1..method.arity.abs).collect { |i| "p#{i}" }) + elsif param.size == 1 and param[0].is_a?(Array) + param[0] + else + ::SOAP::RPC::SOAPMethod.create_param_def(param) + end end private |
