aboutsummaryrefslogtreecommitdiffstats
path: root/lib/soap/rpc
diff options
context:
space:
mode:
authornahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-11-25 07:31:33 +0000
committernahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-11-25 07:31:33 +0000
commit6a09e1d9664f86b7deb576fb0dfe57e10503bb85 (patch)
tree49dc2abcb7640c805848e543d4e5d110cbde5ad6 /lib/soap/rpc
parentec373c3e1c332f814225c3d49ded8217545470e2 (diff)
downloadruby-6a09e1d9664f86b7deb576fb0dfe57e10503bb85.tar.gz
* lib/soap/**/*.rb, lib/wsdl/**/*.rb, lib/xsd/**/*.rb: changed license; GPL2 -> Ruby's.
* lib/soap/rpc/driver.rb, lib/soap/wsdlDriver.rb, lib/soap/streamHandler.rb: add interface to streamhandler. * lib/soap/marshal.rb: raise error if parse fails. * lib/soap/netHttpClient.rb: add https support. Patched by Oliver M. Bolzer. * lib/soap/netHttpClient.rb: dump HTTP response message body by itself. * lib/soap/rpc/driver.rb, lib/soap/rpc/proxy.rb, lib/soap/wsdlDriver.rb: add driver#mandatorycharset interface to foce using charset for parsing response from buggy server. * lib/soap/encodingstyle/soapHandler.rb: support Apache Axis's half typed multi-ref array. * lib/soap/mapping/factory.rb, lib/soap/mapping/registry.rb: map SOAPStruct which has multi-accessors which name are the same, to an array. * lib/soap/rpc/element.rb: fixed illegal parameter order. * lib/soap/rpc/element.rb: element name of response message could have the name other than 'return'. * lib/wsdl/operation.rb, lib/wsdl/operationBinding.rb, lib/wsdl/soap/classDefCreator.rb, lib/wsdl/soap/methodDefCreator.rb, lib/wsdl/soap/methodDefCreatorSupport.rb: WSDL/1.1 allows plural fault definition in a operation. [ruby-talk:84948] * test/wsdl/multiplefault.wsdl, test/wsdl/test_multiplefault.rb: add test for above fix. * lib/wsdl/soap/complexType.rb: support WSDL array definition with maxOccures="unbound". * lib/xsd/charset.rb: use cp932 under emx. Patched by Siena. / SHINAGAWA, Norihide in [ruby-dev:21972] * lib/xsd/xmlparser/parser.rb: set @charset nil by default. Nil means 'follow encoding declaration in XML'. * sample/soap/digraph.rb, sample/wsdl/amazon/wsdlDriver.rb, sample/wsdl/googleSearch/sampleClient.rb, sample/wsdl/googleSearch/wsdlDriver.rb, test/wsdl/test_emptycomplextype.rb, test/wsdl/marshal/test_wsdlmarshal.rb, test/xsd/test_xmlschemaparser.rb: use File.open(...) { |f| f.read } instead of File.open(...).read. [ruby-dev:21964] * test/wsdl/emptycomplextype.wsdl, test/wsdl/test_emptycomplextype.rb: simplify the test case. * test/wsdl/axisArray/*: add tests for axis's array encoding. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/soap/rpc')
-rw-r--r--lib/soap/rpc/cgistub.rb23
-rw-r--r--lib/soap/rpc/driver.rb77
-rw-r--r--lib/soap/rpc/element.rb27
-rw-r--r--lib/soap/rpc/proxy.rb36
-rw-r--r--lib/soap/rpc/router.rb23
-rw-r--r--lib/soap/rpc/rpc.rb23
-rw-r--r--lib/soap/rpc/soaplet.rb23
-rw-r--r--lib/soap/rpc/standaloneServer.rb23
8 files changed, 91 insertions, 164 deletions
diff --git a/lib/soap/rpc/cgistub.rb b/lib/soap/rpc/cgistub.rb
index e89314d132..2377f343b5 100644
--- a/lib/soap/rpc/cgistub.rb
+++ b/lib/soap/rpc/cgistub.rb
@@ -1,20 +1,9 @@
-=begin
-SOAP4R - CGI stub library
-Copyright (C) 2001, 2003 NAKAMURA, Hiroshi.
-
-This program is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation; either version 2 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-PRATICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program; if not, write to the Free Software Foundation, Inc., 675 Mass
-Ave, Cambridge, MA 02139, USA.
-=end
+# SOAP4R - CGI stub library
+# Copyright (C) 2001, 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
+
+# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
+# redistribute it and/or modify it under the same terms of Ruby's license;
+# either the dual license version in 2003, or any later version.
require 'soap/streamHandler'
diff --git a/lib/soap/rpc/driver.rb b/lib/soap/rpc/driver.rb
index 76fd14e34b..739c8774d4 100644
--- a/lib/soap/rpc/driver.rb
+++ b/lib/soap/rpc/driver.rb
@@ -1,20 +1,9 @@
-=begin
-SOAP4R - SOAP RPC driver
-Copyright (C) 2000, 2001, 2003 NAKAMURA, Hiroshi.
+# SOAP4R - SOAP RPC driver
+# Copyright (C) 2000, 2001, 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
-This program is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation; either version 2 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-PRATICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program; if not, write to the Free Software Foundation, Inc., 675 Mass
-Ave, Cambridge, MA 02139, USA.
-=end
+# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
+# redistribute it and/or modify it under the same terms of Ruby's license;
+# either the dual license version in 2003, or any later version.
require 'soap/soap'
@@ -35,51 +24,63 @@ public
attr_accessor :mapping_registry
attr_accessor :soapaction
- attr_reader :endpoint_url
attr_reader :wiredump_dev
attr_reader :wiredump_file_base
- attr_reader :httpproxy
+ attr_reader :streamhandler
def initialize(endpoint_url, namespace, soapaction = nil)
- @endpoint_url = endpoint_url
@namespace = namespace
@mapping_registry = nil # for unmarshal
@soapaction = soapaction
@wiredump_dev = nil
@wiredump_file_base = nil
- @httpproxy = ENV['httpproxy'] || ENV['HTTP_PROXY']
- @handler = HTTPPostStreamHandler.new(@endpoint_url, @httpproxy,
+ name = 'http_proxy'
+ @httpproxy = ENV[name] || ENV[name.upcase]
+ @streamhandler = HTTPPostStreamHandler.new(endpoint_url, @httpproxy,
XSD::Charset.encoding_label)
- @proxy = Proxy.new(@handler, @soapaction)
+ @proxy = Proxy.new(@streamhandler, @soapaction)
@proxy.allow_unqualified_element = true
end
+ def inspect
+ "#<#{self.class}:#{@streamhandler.inspect}>"
+ end
+
+ def endpoint_url
+ @streamhandler.endpoint_url
+ end
+
def endpoint_url=(endpoint_url)
- @endpoint_url = endpoint_url
- if @handler
- @handler.endpoint_url = @endpoint_url
- @handler.reset
- end
+ @streamhandler.endpoint_url = endpoint_url
+ @streamhandler.reset
end
def wiredump_dev=(dev)
@wiredump_dev = dev
- if @handler
- @handler.wiredump_dev = @wiredump_dev
- @handler.reset
- end
+ @streamhandler.wiredump_dev = @wiredump_dev
+ @streamhandler.reset
end
def wiredump_file_base=(base)
@wiredump_file_base = base
end
+ def httpproxy
+ @httpproxy
+ end
+
def httpproxy=(httpproxy)
@httpproxy = httpproxy
- if @handler
- @handler.proxy = @httpproxy
- @handler.reset
- end
+ @streamhandler.proxy = @httpproxy
+ @streamhandler.reset
+ end
+
+ def mandatorycharset
+ @proxy.mandatorycharset
+ end
+
+ def mandatorycharset=(mandatorycharset)
+ @proxy.mandatorycharset = mandatorycharset
end
def default_encodingstyle
@@ -126,7 +127,7 @@ public
#
def invoke(headers, body)
if @wiredump_file_base
- @handler.wiredump_file_base =
+ @streamhandler.wiredump_file_base =
@wiredump_file_base + '_' << body.elename.name
end
@proxy.invoke(headers, body)
@@ -136,7 +137,7 @@ public
# Convert parameters: params array => SOAPArray => members array
params = Mapping.obj2soap(params, @mapping_registry).to_a
if @wiredump_file_base
- @handler.wiredump_file_base = @wiredump_file_base + '_' << name
+ @streamhandler.wiredump_file_base = @wiredump_file_base + '_' << name
end
# Then, call @proxy.call like the following.
@@ -161,7 +162,7 @@ public
end
def reset_stream
- @handler.reset
+ @streamhandler.reset
end
private
diff --git a/lib/soap/rpc/element.rb b/lib/soap/rpc/element.rb
index d1e1931fa3..395823ab00 100644
--- a/lib/soap/rpc/element.rb
+++ b/lib/soap/rpc/element.rb
@@ -1,20 +1,9 @@
-=begin
-SOAP4R - RPC element definition.
-Copyright (C) 2000, 2001, 2003 NAKAMURA, Hiroshi.
+# SOAP4R - RPC element definition.
+# Copyright (C) 2000, 2001, 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
-This program is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation; either version 2 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-PRATICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program; if not, write to the Free Software Foundation, Inc., 675 Mass
-Ave, Cambridge, MA 02139, USA.
-=end
+# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
+# redistribute it and/or modify it under the same terms of Ruby's license;
+# either the dual license version in 2003, or any later version.
require 'soap/baseData'
@@ -180,10 +169,10 @@ class SOAPMethodRequest < SOAPMethod
params.each do |param|
param_name = "p#{ i }"
i += 1
- param_def << [IN, nil, param_name]
+ param_def << [IN, param_name, nil]
param_value << [param_name, param]
end
- param_def << [RETVAL, nil, 'return']
+ param_def << [RETVAL, 'return', nil]
o = new(qname, param_def)
o.set_param(param_value)
o
@@ -236,7 +225,7 @@ class SOAPMethodResponse < SOAPMethod
def retval=(retval)
@retval = retval
- @retval.elename = @retval.elename.dup_name('return')
+ @retval.elename = @retval.elename.dup_name(@retval_name || 'return')
end
def each
diff --git a/lib/soap/rpc/proxy.rb b/lib/soap/rpc/proxy.rb
index 39a095838c..5825a27138 100644
--- a/lib/soap/rpc/proxy.rb
+++ b/lib/soap/rpc/proxy.rb
@@ -1,20 +1,9 @@
-=begin
-SOAP4R - RPC Proxy library.
-Copyright (C) 2000, 2003 NAKAMURA, Hiroshi.
+# SOAP4R - RPC Proxy library.
+# Copyright (C) 2000, 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
-This program is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation; either version 2 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-PRATICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program; if not, write to the Free Software Foundation, Inc., 675 Mass
-Ave, Cambridge, MA 02139, USA.
-=end
+# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
+# redistribute it and/or modify it under the same terms of Ruby's license;
+# either the dual license version in 2003, or any later version.
require 'soap/soap'
@@ -35,13 +24,16 @@ class Proxy
public
attr_accessor :soapaction
- attr_accessor :allow_unqualified_element, :default_encodingstyle
+ attr_accessor :mandatorycharset
+ attr_accessor :allow_unqualified_element
+ attr_accessor :default_encodingstyle
attr_reader :method
- def initialize(stream_handler, soapaction = nil)
- @handler = stream_handler
+ def initialize(streamhandler, soapaction = nil)
+ @streamhandler = streamhandler
@soapaction = soapaction
@method = {}
+ @mandatorycharset = nil
@allow_unqualified_element = false
@default_encodingstyle = nil
end
@@ -100,13 +92,13 @@ public
end
opt = create_options
send_string = Processor.marshal(req_header, req_body, opt)
- data = @handler.send(send_string, soapaction)
+ data = @streamhandler.send(send_string, soapaction)
if data.receive_string.empty?
return nil, nil
end
- res_charset = StreamHandler.parse_media_type(data.receive_contenttype)
opt = create_options
- opt[:charset] = res_charset
+ opt[:charset] = @mandatorycharset ||
+ StreamHandler.parse_media_type(data.receive_contenttype)
res_header, res_body = Processor.unmarshal(data.receive_string, opt)
return res_header, res_body
end
diff --git a/lib/soap/rpc/router.rb b/lib/soap/rpc/router.rb
index 20396a4a7d..527ec05768 100644
--- a/lib/soap/rpc/router.rb
+++ b/lib/soap/rpc/router.rb
@@ -1,20 +1,9 @@
-=begin
-SOAP4R - RPC Routing library
-Copyright (C) 2001, 2002 NAKAMURA, Hiroshi.
-
-This program is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation; either version 2 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-PRATICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program; if not, write to the Free Software Foundation, Inc., 675 Mass
-Ave, Cambridge, MA 02139, USA.
-=end
+# SOAP4R - RPC Routing library
+# Copyright (C) 2001, 2002 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
+
+# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
+# redistribute it and/or modify it under the same terms of Ruby's license;
+# either the dual license version in 2003, or any later version.
require 'soap/soap'
diff --git a/lib/soap/rpc/rpc.rb b/lib/soap/rpc/rpc.rb
index c3cb3228f5..5f77b4d2e9 100644
--- a/lib/soap/rpc/rpc.rb
+++ b/lib/soap/rpc/rpc.rb
@@ -1,20 +1,9 @@
-=begin
-SOAP4R - RPC utility.
-Copyright (C) 2003 NAKAMURA, Hiroshi.
-
-This program is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation; either version 2 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-PRATICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program; if not, write to the Free Software Foundation, Inc., 675 Mass
-Ave, Cambridge, MA 02139, USA.
-=end
+# SOAP4R - RPC utility.
+# Copyright (C) 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
+
+# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
+# redistribute it and/or modify it under the same terms of Ruby's license;
+# either the dual license version in 2003, or any later version.
module SOAP
diff --git a/lib/soap/rpc/soaplet.rb b/lib/soap/rpc/soaplet.rb
index 1a4ef99b76..4b25c68161 100644
--- a/lib/soap/rpc/soaplet.rb
+++ b/lib/soap/rpc/soaplet.rb
@@ -1,20 +1,9 @@
-=begin
-SOAP4R - SOAP handler servlet for WEBrick
-Copyright (C) 2001, 2002, 2003 NAKAMURA, Hiroshi.
-
-This program is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation; either version 2 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-PRATICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program; if not, write to the Free Software Foundation, Inc., 675 Mass
-Ave, Cambridge, MA 02139, USA.
-=end
+# SOAP4R - SOAP handler servlet for WEBrick
+# Copyright (C) 2001, 2002, 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
+
+# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
+# redistribute it and/or modify it under the same terms of Ruby's license;
+# either the dual license version in 2003, or any later version.
require 'webrick/httpservlet/abstract'
diff --git a/lib/soap/rpc/standaloneServer.rb b/lib/soap/rpc/standaloneServer.rb
index 8862f7606e..f3f225c7dc 100644
--- a/lib/soap/rpc/standaloneServer.rb
+++ b/lib/soap/rpc/standaloneServer.rb
@@ -1,20 +1,9 @@
-=begin
-SOAP4R - WEBrick Server
-Copyright (C) 2003 by NAKAMURA, Hiroshi
-
-This program is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation; either version 2 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-PRATICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program; if not, write to the Free Software Foundation, Inc., 675 Mass
-Ave, Cambridge, MA 02139, USA.
-=end
+# SOAP4R - WEBrick Server
+# Copyright (C) 2003 by NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
+
+# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
+# redistribute it and/or modify it under the same terms of Ruby's license;
+# either the dual license version in 2003, or any later version.
require 'logger'