reidiculous-actionwebservice-client 3.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +320 -0
- data/MIT-LICENSE +21 -0
- data/README +381 -0
- data/Rakefile +180 -0
- data/TODO +32 -0
- data/lib/action_web_service.rb +71 -0
- data/lib/action_web_service/api.rb +297 -0
- data/lib/action_web_service/base.rb +38 -0
- data/lib/action_web_service/casting.rb +149 -0
- data/lib/action_web_service/client.rb +3 -0
- data/lib/action_web_service/client/base.rb +28 -0
- data/lib/action_web_service/client/soap_client.rb +113 -0
- data/lib/action_web_service/client/xmlrpc_client.rb +58 -0
- data/lib/action_web_service/container.rb +3 -0
- data/lib/action_web_service/container/action_controller_container.rb +93 -0
- data/lib/action_web_service/container/delegated_container.rb +86 -0
- data/lib/action_web_service/container/direct_container.rb +69 -0
- data/lib/action_web_service/dispatcher.rb +2 -0
- data/lib/action_web_service/dispatcher/abstract.rb +207 -0
- data/lib/action_web_service/dispatcher/action_controller_dispatcher.rb +379 -0
- data/lib/action_web_service/invocation.rb +202 -0
- data/lib/action_web_service/protocol.rb +4 -0
- data/lib/action_web_service/protocol/abstract.rb +115 -0
- data/lib/action_web_service/protocol/discovery.rb +37 -0
- data/lib/action_web_service/protocol/soap_protocol.rb +176 -0
- data/lib/action_web_service/protocol/soap_protocol/marshaler.rb +242 -0
- data/lib/action_web_service/protocol/xmlrpc_protocol.rb +122 -0
- data/lib/action_web_service/scaffolding.rb +281 -0
- data/lib/action_web_service/soap/attachment.rb +107 -0
- data/lib/action_web_service/soap/baseData.rb +942 -0
- data/lib/action_web_service/soap/element.rb +258 -0
- data/lib/action_web_service/soap/encodingstyle/aspDotNetHandler.rb +213 -0
- data/lib/action_web_service/soap/encodingstyle/handler.rb +100 -0
- data/lib/action_web_service/soap/encodingstyle/literalHandler.rb +226 -0
- data/lib/action_web_service/soap/encodingstyle/soapHandler.rb +582 -0
- data/lib/action_web_service/soap/generator.rb +268 -0
- data/lib/action_web_service/soap/header/handler.rb +57 -0
- data/lib/action_web_service/soap/header/handlerset.rb +70 -0
- data/lib/action_web_service/soap/header/simplehandler.rb +44 -0
- data/lib/action_web_service/soap/httpconfigloader.rb +119 -0
- data/lib/action_web_service/soap/mapping.rb +10 -0
- data/lib/action_web_service/soap/mapping/factory.rb +355 -0
- data/lib/action_web_service/soap/mapping/mapping.rb +381 -0
- data/lib/action_web_service/soap/mapping/registry.rb +541 -0
- data/lib/action_web_service/soap/mapping/rubytypeFactory.rb +475 -0
- data/lib/action_web_service/soap/mapping/typeMap.rb +50 -0
- data/lib/action_web_service/soap/mapping/wsdlencodedregistry.rb +280 -0
- data/lib/action_web_service/soap/mapping/wsdlliteralregistry.rb +418 -0
- data/lib/action_web_service/soap/marshal.rb +59 -0
- data/lib/action_web_service/soap/mimemessage.rb +240 -0
- data/lib/action_web_service/soap/netHttpClient.rb +190 -0
- data/lib/action_web_service/soap/parser.rb +251 -0
- data/lib/action_web_service/soap/processor.rb +66 -0
- data/lib/action_web_service/soap/property.rb +333 -0
- data/lib/action_web_service/soap/rpc/cgistub.rb +206 -0
- data/lib/action_web_service/soap/rpc/driver.rb +254 -0
- data/lib/action_web_service/soap/rpc/element.rb +325 -0
- data/lib/action_web_service/soap/rpc/httpserver.rb +129 -0
- data/lib/action_web_service/soap/rpc/proxy.rb +497 -0
- data/lib/action_web_service/soap/rpc/router.rb +594 -0
- data/lib/action_web_service/soap/rpc/rpc.rb +25 -0
- data/lib/action_web_service/soap/rpc/soaplet.rb +162 -0
- data/lib/action_web_service/soap/rpc/standaloneServer.rb +43 -0
- data/lib/action_web_service/soap/soap.rb +140 -0
- data/lib/action_web_service/soap/streamHandler.rb +229 -0
- data/lib/action_web_service/soap/wsdlDriver.rb +575 -0
- data/lib/action_web_service/struct.rb +64 -0
- data/lib/action_web_service/support/class_inheritable_options.rb +28 -0
- data/lib/action_web_service/support/signature_types.rb +227 -0
- data/lib/action_web_service/test_invoke.rb +110 -0
- data/lib/action_web_service/version.rb +9 -0
- data/lib/action_web_service/wsdl/binding.rb +65 -0
- data/lib/action_web_service/wsdl/data.rb +64 -0
- data/lib/action_web_service/wsdl/definitions.rb +250 -0
- data/lib/action_web_service/wsdl/documentation.rb +32 -0
- data/lib/action_web_service/wsdl/import.rb +80 -0
- data/lib/action_web_service/wsdl/importer.rb +38 -0
- data/lib/action_web_service/wsdl/info.rb +39 -0
- data/lib/action_web_service/wsdl/message.rb +54 -0
- data/lib/action_web_service/wsdl/operation.rb +130 -0
- data/lib/action_web_service/wsdl/operationBinding.rb +108 -0
- data/lib/action_web_service/wsdl/param.rb +85 -0
- data/lib/action_web_service/wsdl/parser.rb +163 -0
- data/lib/action_web_service/wsdl/part.rb +52 -0
- data/lib/action_web_service/wsdl/port.rb +84 -0
- data/lib/action_web_service/wsdl/portType.rb +73 -0
- data/lib/action_web_service/wsdl/service.rb +61 -0
- data/lib/action_web_service/wsdl/soap/address.rb +40 -0
- data/lib/action_web_service/wsdl/soap/binding.rb +49 -0
- data/lib/action_web_service/wsdl/soap/body.rb +56 -0
- data/lib/action_web_service/wsdl/soap/cgiStubCreator.rb +76 -0
- data/lib/action_web_service/wsdl/soap/classDefCreator.rb +314 -0
- data/lib/action_web_service/wsdl/soap/classDefCreatorSupport.rb +126 -0
- data/lib/action_web_service/wsdl/soap/clientSkeltonCreator.rb +78 -0
- data/lib/action_web_service/wsdl/soap/complexType.rb +161 -0
- data/lib/action_web_service/wsdl/soap/data.rb +42 -0
- data/lib/action_web_service/wsdl/soap/definitions.rb +149 -0
- data/lib/action_web_service/wsdl/soap/driverCreator.rb +95 -0
- data/lib/action_web_service/wsdl/soap/element.rb +28 -0
- data/lib/action_web_service/wsdl/soap/fault.rb +56 -0
- data/lib/action_web_service/wsdl/soap/header.rb +86 -0
- data/lib/action_web_service/wsdl/soap/headerfault.rb +56 -0
- data/lib/action_web_service/wsdl/soap/mappingRegistryCreator.rb +92 -0
- data/lib/action_web_service/wsdl/soap/methodDefCreator.rb +228 -0
- data/lib/action_web_service/wsdl/soap/operation.rb +122 -0
- data/lib/action_web_service/wsdl/soap/servantSkeltonCreator.rb +67 -0
- data/lib/action_web_service/wsdl/soap/standaloneServerStubCreator.rb +85 -0
- data/lib/action_web_service/wsdl/soap/wsdl2ruby.rb +176 -0
- data/lib/action_web_service/wsdl/types.rb +43 -0
- data/lib/action_web_service/wsdl/wsdl.rb +23 -0
- data/lib/action_web_service/wsdl/xmlSchema/all.rb +69 -0
- data/lib/action_web_service/wsdl/xmlSchema/annotation.rb +34 -0
- data/lib/action_web_service/wsdl/xmlSchema/any.rb +56 -0
- data/lib/action_web_service/wsdl/xmlSchema/attribute.rb +127 -0
- data/lib/action_web_service/wsdl/xmlSchema/choice.rb +69 -0
- data/lib/action_web_service/wsdl/xmlSchema/complexContent.rb +92 -0
- data/lib/action_web_service/wsdl/xmlSchema/complexType.rb +139 -0
- data/lib/action_web_service/wsdl/xmlSchema/content.rb +96 -0
- data/lib/action_web_service/wsdl/xmlSchema/data.rb +80 -0
- data/lib/action_web_service/wsdl/xmlSchema/element.rb +154 -0
- data/lib/action_web_service/wsdl/xmlSchema/enumeration.rb +36 -0
- data/lib/action_web_service/wsdl/xmlSchema/import.rb +65 -0
- data/lib/action_web_service/wsdl/xmlSchema/importer.rb +87 -0
- data/lib/action_web_service/wsdl/xmlSchema/include.rb +54 -0
- data/lib/action_web_service/wsdl/xmlSchema/length.rb +35 -0
- data/lib/action_web_service/wsdl/xmlSchema/parser.rb +166 -0
- data/lib/action_web_service/wsdl/xmlSchema/pattern.rb +36 -0
- data/lib/action_web_service/wsdl/xmlSchema/schema.rb +143 -0
- data/lib/action_web_service/wsdl/xmlSchema/sequence.rb +69 -0
- data/lib/action_web_service/wsdl/xmlSchema/simpleContent.rb +65 -0
- data/lib/action_web_service/wsdl/xmlSchema/simpleExtension.rb +54 -0
- data/lib/action_web_service/wsdl/xmlSchema/simpleRestriction.rb +73 -0
- data/lib/action_web_service/wsdl/xmlSchema/simpleType.rb +73 -0
- data/lib/action_web_service/wsdl/xmlSchema/unique.rb +34 -0
- data/lib/action_web_service/wsdl/xmlSchema/xsd2ruby.rb +107 -0
- data/lib/action_web_service/xsd/charset.rb +187 -0
- data/lib/action_web_service/xsd/codegen.rb +12 -0
- data/lib/action_web_service/xsd/codegen/classdef.rb +203 -0
- data/lib/action_web_service/xsd/codegen/commentdef.rb +34 -0
- data/lib/action_web_service/xsd/codegen/gensupport.rb +166 -0
- data/lib/action_web_service/xsd/codegen/methoddef.rb +63 -0
- data/lib/action_web_service/xsd/codegen/moduledef.rb +191 -0
- data/lib/action_web_service/xsd/datatypes.rb +1269 -0
- data/lib/action_web_service/xsd/datatypes1999.rb +20 -0
- data/lib/action_web_service/xsd/iconvcharset.rb +33 -0
- data/lib/action_web_service/xsd/mapping.rb +42 -0
- data/lib/action_web_service/xsd/namedelements.rb +95 -0
- data/lib/action_web_service/xsd/ns.rb +140 -0
- data/lib/action_web_service/xsd/qname.rb +78 -0
- data/lib/action_web_service/xsd/xmlparser.rb +61 -0
- data/lib/action_web_service/xsd/xmlparser/parser.rb +96 -0
- data/lib/action_web_service/xsd/xmlparser/rexmlparser.rb +54 -0
- data/lib/action_web_service/xsd/xmlparser/xmlparser.rb +50 -0
- data/lib/action_web_service/xsd/xmlparser/xmlscanner.rb +147 -0
- data/lib/actionwebservice.rb +1 -0
- data/setup.rb +1379 -0
- data/test/abstract_client.rb +183 -0
- data/test/abstract_dispatcher.rb +548 -0
- data/test/abstract_unit.rb +45 -0
- data/test/api_test.rb +103 -0
- data/test/apis/auto_load_api.rb +3 -0
- data/test/apis/broken_auto_load_api.rb +2 -0
- data/test/base_test.rb +42 -0
- data/test/casting_test.rb +95 -0
- data/test/client_soap_test.rb +156 -0
- data/test/client_xmlrpc_test.rb +153 -0
- data/test/container_test.rb +73 -0
- data/test/dispatcher_action_controller_soap_test.rb +139 -0
- data/test/dispatcher_action_controller_xmlrpc_test.rb +59 -0
- data/test/fixtures/db_definitions/mysql.sql +8 -0
- data/test/fixtures/db_definitions/sqlite3.sql +8 -0
- data/test/fixtures/users.yml +12 -0
- data/test/gencov +3 -0
- data/test/invocation_test.rb +185 -0
- data/test/run +6 -0
- data/test/scaffolded_controller_test.rb +146 -0
- data/test/struct_test.rb +52 -0
- data/test/test_invoke_test.rb +112 -0
- metadata +265 -0
@@ -0,0 +1,325 @@
|
|
1
|
+
# SOAP4R - RPC element definition.
|
2
|
+
# Copyright (C) 2000, 2001, 2003, 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
|
+
|
4
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
6
|
+
# either the dual license version in 2003, or any later version.
|
7
|
+
|
8
|
+
|
9
|
+
require 'action_web_service/soap/baseData'
|
10
|
+
|
11
|
+
|
12
|
+
module SOAP
|
13
|
+
|
14
|
+
# Add method definitions for RPC to common definition in element.rb
|
15
|
+
class SOAPBody < SOAPStruct
|
16
|
+
public
|
17
|
+
|
18
|
+
def request
|
19
|
+
root_node
|
20
|
+
end
|
21
|
+
|
22
|
+
def response
|
23
|
+
root = root_node
|
24
|
+
if !@is_fault
|
25
|
+
if root.nil?
|
26
|
+
nil
|
27
|
+
elsif root.is_a?(SOAPBasetype)
|
28
|
+
root
|
29
|
+
else
|
30
|
+
# Initial element is [retval].
|
31
|
+
root[0]
|
32
|
+
end
|
33
|
+
else
|
34
|
+
root
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def outparams
|
39
|
+
root = root_node
|
40
|
+
if !@is_fault and !root.nil? and !root.is_a?(SOAPBasetype)
|
41
|
+
op = root[1..-1]
|
42
|
+
op = nil if op && op.empty?
|
43
|
+
op
|
44
|
+
else
|
45
|
+
nil
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def fault
|
50
|
+
if @is_fault
|
51
|
+
self['fault']
|
52
|
+
else
|
53
|
+
nil
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def fault=(fault)
|
58
|
+
@is_fault = true
|
59
|
+
add_member('fault', fault)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
module RPC
|
65
|
+
|
66
|
+
|
67
|
+
class RPCError < Error; end
|
68
|
+
class MethodDefinitionError < RPCError; end
|
69
|
+
class ParameterError < RPCError; end
|
70
|
+
|
71
|
+
class SOAPMethod < SOAPStruct
|
72
|
+
RETVAL = 'retval'
|
73
|
+
IN = 'in'
|
74
|
+
OUT = 'out'
|
75
|
+
INOUT = 'inout'
|
76
|
+
|
77
|
+
attr_reader :param_def
|
78
|
+
attr_reader :inparam
|
79
|
+
attr_reader :outparam
|
80
|
+
attr_reader :retval_name
|
81
|
+
attr_reader :retval_class_name
|
82
|
+
|
83
|
+
def initialize(qname, param_def = nil)
|
84
|
+
super(nil)
|
85
|
+
@elename = qname
|
86
|
+
@encodingstyle = nil
|
87
|
+
|
88
|
+
@param_def = param_def
|
89
|
+
|
90
|
+
@signature = []
|
91
|
+
@inparam_names = []
|
92
|
+
@inoutparam_names = []
|
93
|
+
@outparam_names = []
|
94
|
+
|
95
|
+
@inparam = {}
|
96
|
+
@outparam = {}
|
97
|
+
@retval_name = nil
|
98
|
+
@retval_class_name = nil
|
99
|
+
|
100
|
+
init_param(@param_def) if @param_def
|
101
|
+
end
|
102
|
+
|
103
|
+
def have_outparam?
|
104
|
+
@outparam_names.size > 0
|
105
|
+
end
|
106
|
+
|
107
|
+
def input_params
|
108
|
+
collect_params(IN, INOUT)
|
109
|
+
end
|
110
|
+
|
111
|
+
def output_params
|
112
|
+
collect_params(OUT, INOUT)
|
113
|
+
end
|
114
|
+
|
115
|
+
def set_param(params)
|
116
|
+
params.each do |param, data|
|
117
|
+
@inparam[param] = data
|
118
|
+
data.elename.name = param
|
119
|
+
data.parent = self
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def set_outparam(params)
|
124
|
+
params.each do |param, data|
|
125
|
+
@outparam[param] = data
|
126
|
+
data.elename.name = param
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
def SOAPMethod.param_count(param_def, *type)
|
131
|
+
count = 0
|
132
|
+
param_def.each do |io_type, name, param_type|
|
133
|
+
if type.include?(io_type)
|
134
|
+
count += 1
|
135
|
+
end
|
136
|
+
end
|
137
|
+
count
|
138
|
+
end
|
139
|
+
|
140
|
+
def SOAPMethod.derive_rpc_param_def(obj, name, *param)
|
141
|
+
if param.size == 1 and param[0].is_a?(Array)
|
142
|
+
return param[0]
|
143
|
+
end
|
144
|
+
if param.empty?
|
145
|
+
method = obj.method(name)
|
146
|
+
param_names = (1..method.arity.abs).collect { |i| "p#{i}" }
|
147
|
+
else
|
148
|
+
param_names = param
|
149
|
+
end
|
150
|
+
create_rpc_param_def(param_names)
|
151
|
+
end
|
152
|
+
|
153
|
+
def SOAPMethod.create_rpc_param_def(param_names)
|
154
|
+
param_def = []
|
155
|
+
param_names.each do |param_name|
|
156
|
+
param_def.push([IN, param_name, nil])
|
157
|
+
end
|
158
|
+
param_def.push([RETVAL, 'return', nil])
|
159
|
+
param_def
|
160
|
+
end
|
161
|
+
|
162
|
+
def SOAPMethod.create_doc_param_def(req_qnames, res_qnames)
|
163
|
+
req_qnames = [req_qnames] if req_qnames.is_a?(XSD::QName)
|
164
|
+
res_qnames = [res_qnames] if res_qnames.is_a?(XSD::QName)
|
165
|
+
param_def = []
|
166
|
+
req_qnames.each do |qname|
|
167
|
+
param_def << [IN, qname.name, [nil, qname.namespace, qname.name]]
|
168
|
+
end
|
169
|
+
res_qnames.each do |qname|
|
170
|
+
param_def << [OUT, qname.name, [nil, qname.namespace, qname.name]]
|
171
|
+
end
|
172
|
+
param_def
|
173
|
+
end
|
174
|
+
|
175
|
+
private
|
176
|
+
|
177
|
+
def collect_params(*type)
|
178
|
+
names = []
|
179
|
+
@signature.each do |io_type, name, param_type|
|
180
|
+
names << name if type.include?(io_type)
|
181
|
+
end
|
182
|
+
names
|
183
|
+
end
|
184
|
+
|
185
|
+
def init_param(param_def)
|
186
|
+
param_def.each do |io_type, name, param_type|
|
187
|
+
case io_type
|
188
|
+
when IN
|
189
|
+
@signature.push([IN, name, param_type])
|
190
|
+
@inparam_names.push(name)
|
191
|
+
when OUT
|
192
|
+
@signature.push([OUT, name, param_type])
|
193
|
+
@outparam_names.push(name)
|
194
|
+
when INOUT
|
195
|
+
@signature.push([INOUT, name, param_type])
|
196
|
+
@inoutparam_names.push(name)
|
197
|
+
when RETVAL
|
198
|
+
if @retval_name
|
199
|
+
raise MethodDefinitionError.new('duplicated retval')
|
200
|
+
end
|
201
|
+
@retval_name = name
|
202
|
+
@retval_class_name = nil
|
203
|
+
if param_type
|
204
|
+
if param_type[0].is_a?(String)
|
205
|
+
@retval_class_name = Mapping.class_from_name(param_type[0])
|
206
|
+
else
|
207
|
+
@retval_class_name = param_type[0]
|
208
|
+
end
|
209
|
+
end
|
210
|
+
else
|
211
|
+
raise MethodDefinitionError.new("unknown type: #{io_type}")
|
212
|
+
end
|
213
|
+
end
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
|
218
|
+
class SOAPMethodRequest < SOAPMethod
|
219
|
+
attr_accessor :soapaction
|
220
|
+
|
221
|
+
def SOAPMethodRequest.create_request(qname, *params)
|
222
|
+
param_def = []
|
223
|
+
param_value = []
|
224
|
+
i = 0
|
225
|
+
params.each do |param|
|
226
|
+
param_name = "p#{i}"
|
227
|
+
i += 1
|
228
|
+
param_def << [IN, param_name, nil]
|
229
|
+
param_value << [param_name, param]
|
230
|
+
end
|
231
|
+
param_def << [RETVAL, 'return', nil]
|
232
|
+
o = new(qname, param_def)
|
233
|
+
o.set_param(param_value)
|
234
|
+
o
|
235
|
+
end
|
236
|
+
|
237
|
+
def initialize(qname, param_def = nil, soapaction = nil)
|
238
|
+
check_elename(qname)
|
239
|
+
super(qname, param_def)
|
240
|
+
@soapaction = soapaction
|
241
|
+
end
|
242
|
+
|
243
|
+
def each
|
244
|
+
input_params.each do |name|
|
245
|
+
unless @inparam[name]
|
246
|
+
raise ParameterError.new("parameter: #{name} was not given")
|
247
|
+
end
|
248
|
+
yield(name, @inparam[name])
|
249
|
+
end
|
250
|
+
end
|
251
|
+
|
252
|
+
def dup
|
253
|
+
req = self.class.new(@elename.dup, @param_def, @soapaction)
|
254
|
+
req.encodingstyle = @encodingstyle
|
255
|
+
req
|
256
|
+
end
|
257
|
+
|
258
|
+
def create_method_response(response_name = nil)
|
259
|
+
response_name ||=
|
260
|
+
XSD::QName.new(@elename.namespace, @elename.name + 'Response')
|
261
|
+
SOAPMethodResponse.new(response_name, @param_def)
|
262
|
+
end
|
263
|
+
|
264
|
+
private
|
265
|
+
|
266
|
+
def check_elename(qname)
|
267
|
+
# NCName & ruby's method name
|
268
|
+
unless /\A[\w_][\w\d_\-]*\z/ =~ qname.name
|
269
|
+
raise MethodDefinitionError.new("element name '#{qname.name}' not allowed")
|
270
|
+
end
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
274
|
+
|
275
|
+
class SOAPMethodResponse < SOAPMethod
|
276
|
+
|
277
|
+
def initialize(qname, param_def = nil)
|
278
|
+
super(qname, param_def)
|
279
|
+
@retval = nil
|
280
|
+
end
|
281
|
+
|
282
|
+
def retval=(retval)
|
283
|
+
@retval = retval
|
284
|
+
@retval.elename = @retval.elename.dup_name(@retval_name || 'return')
|
285
|
+
retval.parent = self
|
286
|
+
retval
|
287
|
+
end
|
288
|
+
|
289
|
+
def each
|
290
|
+
if @retval_name and !@retval.is_a?(SOAPVoid)
|
291
|
+
yield(@retval_name, @retval)
|
292
|
+
end
|
293
|
+
|
294
|
+
output_params.each do |name|
|
295
|
+
unless @outparam[name]
|
296
|
+
raise ParameterError.new("parameter: #{name} was not given")
|
297
|
+
end
|
298
|
+
yield(name, @outparam[name])
|
299
|
+
end
|
300
|
+
end
|
301
|
+
end
|
302
|
+
|
303
|
+
|
304
|
+
# To return(?) void explicitly.
|
305
|
+
# def foo(input_var)
|
306
|
+
# ...
|
307
|
+
# return SOAP::RPC::SOAPVoid.new
|
308
|
+
# end
|
309
|
+
class SOAPVoid < XSD::XSDAnySimpleType
|
310
|
+
include SOAPBasetype
|
311
|
+
extend SOAPModuleUtils
|
312
|
+
Name = XSD::QName.new(Mapping::RubyCustomTypeNamespace, nil)
|
313
|
+
|
314
|
+
public
|
315
|
+
def initialize()
|
316
|
+
@elename = Name
|
317
|
+
@id = nil
|
318
|
+
@precedents = []
|
319
|
+
@parent = nil
|
320
|
+
end
|
321
|
+
end
|
322
|
+
|
323
|
+
|
324
|
+
end
|
325
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
# SOAP4R - WEBrick HTTP Server
|
2
|
+
# Copyright (C) 2003, 2004 by NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
|
+
|
4
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
6
|
+
# either the dual license version in 2003, or any later version.
|
7
|
+
|
8
|
+
|
9
|
+
require 'logger'
|
10
|
+
require 'action_web_service/soap/rpc/soaplet'
|
11
|
+
require 'action_web_service/soap/streamHandler'
|
12
|
+
require 'webrick'
|
13
|
+
|
14
|
+
|
15
|
+
module SOAP
|
16
|
+
module RPC
|
17
|
+
|
18
|
+
|
19
|
+
class HTTPServer < Logger::Application
|
20
|
+
attr_reader :server
|
21
|
+
attr_accessor :default_namespace
|
22
|
+
|
23
|
+
def initialize(config)
|
24
|
+
super(config[:SOAPHTTPServerApplicationName] || self.class.name)
|
25
|
+
@default_namespace = config[:SOAPDefaultNamespace]
|
26
|
+
@webrick_config = config.dup
|
27
|
+
self.level = Logger::Severity::ERROR # keep silent by default
|
28
|
+
@webrick_config[:Logger] ||= @log
|
29
|
+
@log = @webrick_config[:Logger] # sync logger of App and HTTPServer
|
30
|
+
@router = ::SOAP::RPC::Router.new(self.class.name)
|
31
|
+
@soaplet = ::SOAP::RPC::SOAPlet.new(@router)
|
32
|
+
on_init
|
33
|
+
@server = WEBrick::HTTPServer.new(@webrick_config)
|
34
|
+
@server.mount('/', @soaplet)
|
35
|
+
end
|
36
|
+
|
37
|
+
def on_init
|
38
|
+
# do extra initialization in a derived class if needed.
|
39
|
+
end
|
40
|
+
|
41
|
+
def status
|
42
|
+
@server.status if @server
|
43
|
+
end
|
44
|
+
|
45
|
+
def shutdown
|
46
|
+
@server.shutdown if @server
|
47
|
+
end
|
48
|
+
|
49
|
+
def mapping_registry
|
50
|
+
@router.mapping_registry
|
51
|
+
end
|
52
|
+
|
53
|
+
def mapping_registry=(mapping_registry)
|
54
|
+
@router.mapping_registry = mapping_registry
|
55
|
+
end
|
56
|
+
|
57
|
+
def generate_explicit_type
|
58
|
+
@router.generate_explicit_type
|
59
|
+
end
|
60
|
+
|
61
|
+
def generate_explicit_type=(generate_explicit_type)
|
62
|
+
@router.generate_explicit_type = generate_explicit_type
|
63
|
+
end
|
64
|
+
|
65
|
+
# servant entry interface
|
66
|
+
|
67
|
+
def add_rpc_request_servant(factory, namespace = @default_namespace)
|
68
|
+
@router.add_rpc_request_servant(factory, namespace)
|
69
|
+
end
|
70
|
+
|
71
|
+
def add_rpc_servant(obj, namespace = @default_namespace)
|
72
|
+
@router.add_rpc_servant(obj, namespace)
|
73
|
+
end
|
74
|
+
|
75
|
+
def add_request_headerhandler(factory)
|
76
|
+
@router.add_request_headerhandler(factory)
|
77
|
+
end
|
78
|
+
|
79
|
+
def add_headerhandler(obj)
|
80
|
+
@router.add_headerhandler(obj)
|
81
|
+
end
|
82
|
+
alias add_rpc_headerhandler add_headerhandler
|
83
|
+
|
84
|
+
# method entry interface
|
85
|
+
|
86
|
+
def add_rpc_method(obj, name, *param)
|
87
|
+
add_rpc_method_as(obj, name, name, *param)
|
88
|
+
end
|
89
|
+
alias add_method add_rpc_method
|
90
|
+
|
91
|
+
def add_rpc_method_as(obj, name, name_as, *param)
|
92
|
+
qname = XSD::QName.new(@default_namespace, name_as)
|
93
|
+
soapaction = nil
|
94
|
+
param_def = SOAPMethod.derive_rpc_param_def(obj, name, *param)
|
95
|
+
@router.add_rpc_operation(obj, qname, soapaction, name, param_def)
|
96
|
+
end
|
97
|
+
alias add_method_as add_rpc_method_as
|
98
|
+
|
99
|
+
def add_document_method(obj, soapaction, name, req_qnames, res_qnames)
|
100
|
+
param_def = SOAPMethod.create_doc_param_def(req_qnames, res_qnames)
|
101
|
+
@router.add_document_operation(obj, soapaction, name, param_def)
|
102
|
+
end
|
103
|
+
|
104
|
+
def add_rpc_operation(receiver, qname, soapaction, name, param_def, opt = {})
|
105
|
+
@router.add_rpc_operation(receiver, qname, soapaction, name, param_def, opt)
|
106
|
+
end
|
107
|
+
|
108
|
+
def add_rpc_request_operation(factory, qname, soapaction, name, param_def, opt = {})
|
109
|
+
@router.add_rpc_request_operation(factory, qname, soapaction, name, param_def, opt)
|
110
|
+
end
|
111
|
+
|
112
|
+
def add_document_operation(receiver, soapaction, name, param_def, opt = {})
|
113
|
+
@router.add_document_operation(receiver, soapaction, name, param_def, opt)
|
114
|
+
end
|
115
|
+
|
116
|
+
def add_document_request_operation(factory, soapaction, name, param_def, opt = {})
|
117
|
+
@router.add_document_request_operation(factory, soapaction, name, param_def, opt)
|
118
|
+
end
|
119
|
+
|
120
|
+
private
|
121
|
+
|
122
|
+
def run
|
123
|
+
@server.start
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
|
128
|
+
end
|
129
|
+
end
|