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.
Files changed (179) hide show
  1. data/CHANGELOG +320 -0
  2. data/MIT-LICENSE +21 -0
  3. data/README +381 -0
  4. data/Rakefile +180 -0
  5. data/TODO +32 -0
  6. data/lib/action_web_service.rb +71 -0
  7. data/lib/action_web_service/api.rb +297 -0
  8. data/lib/action_web_service/base.rb +38 -0
  9. data/lib/action_web_service/casting.rb +149 -0
  10. data/lib/action_web_service/client.rb +3 -0
  11. data/lib/action_web_service/client/base.rb +28 -0
  12. data/lib/action_web_service/client/soap_client.rb +113 -0
  13. data/lib/action_web_service/client/xmlrpc_client.rb +58 -0
  14. data/lib/action_web_service/container.rb +3 -0
  15. data/lib/action_web_service/container/action_controller_container.rb +93 -0
  16. data/lib/action_web_service/container/delegated_container.rb +86 -0
  17. data/lib/action_web_service/container/direct_container.rb +69 -0
  18. data/lib/action_web_service/dispatcher.rb +2 -0
  19. data/lib/action_web_service/dispatcher/abstract.rb +207 -0
  20. data/lib/action_web_service/dispatcher/action_controller_dispatcher.rb +379 -0
  21. data/lib/action_web_service/invocation.rb +202 -0
  22. data/lib/action_web_service/protocol.rb +4 -0
  23. data/lib/action_web_service/protocol/abstract.rb +115 -0
  24. data/lib/action_web_service/protocol/discovery.rb +37 -0
  25. data/lib/action_web_service/protocol/soap_protocol.rb +176 -0
  26. data/lib/action_web_service/protocol/soap_protocol/marshaler.rb +242 -0
  27. data/lib/action_web_service/protocol/xmlrpc_protocol.rb +122 -0
  28. data/lib/action_web_service/scaffolding.rb +281 -0
  29. data/lib/action_web_service/soap/attachment.rb +107 -0
  30. data/lib/action_web_service/soap/baseData.rb +942 -0
  31. data/lib/action_web_service/soap/element.rb +258 -0
  32. data/lib/action_web_service/soap/encodingstyle/aspDotNetHandler.rb +213 -0
  33. data/lib/action_web_service/soap/encodingstyle/handler.rb +100 -0
  34. data/lib/action_web_service/soap/encodingstyle/literalHandler.rb +226 -0
  35. data/lib/action_web_service/soap/encodingstyle/soapHandler.rb +582 -0
  36. data/lib/action_web_service/soap/generator.rb +268 -0
  37. data/lib/action_web_service/soap/header/handler.rb +57 -0
  38. data/lib/action_web_service/soap/header/handlerset.rb +70 -0
  39. data/lib/action_web_service/soap/header/simplehandler.rb +44 -0
  40. data/lib/action_web_service/soap/httpconfigloader.rb +119 -0
  41. data/lib/action_web_service/soap/mapping.rb +10 -0
  42. data/lib/action_web_service/soap/mapping/factory.rb +355 -0
  43. data/lib/action_web_service/soap/mapping/mapping.rb +381 -0
  44. data/lib/action_web_service/soap/mapping/registry.rb +541 -0
  45. data/lib/action_web_service/soap/mapping/rubytypeFactory.rb +475 -0
  46. data/lib/action_web_service/soap/mapping/typeMap.rb +50 -0
  47. data/lib/action_web_service/soap/mapping/wsdlencodedregistry.rb +280 -0
  48. data/lib/action_web_service/soap/mapping/wsdlliteralregistry.rb +418 -0
  49. data/lib/action_web_service/soap/marshal.rb +59 -0
  50. data/lib/action_web_service/soap/mimemessage.rb +240 -0
  51. data/lib/action_web_service/soap/netHttpClient.rb +190 -0
  52. data/lib/action_web_service/soap/parser.rb +251 -0
  53. data/lib/action_web_service/soap/processor.rb +66 -0
  54. data/lib/action_web_service/soap/property.rb +333 -0
  55. data/lib/action_web_service/soap/rpc/cgistub.rb +206 -0
  56. data/lib/action_web_service/soap/rpc/driver.rb +254 -0
  57. data/lib/action_web_service/soap/rpc/element.rb +325 -0
  58. data/lib/action_web_service/soap/rpc/httpserver.rb +129 -0
  59. data/lib/action_web_service/soap/rpc/proxy.rb +497 -0
  60. data/lib/action_web_service/soap/rpc/router.rb +594 -0
  61. data/lib/action_web_service/soap/rpc/rpc.rb +25 -0
  62. data/lib/action_web_service/soap/rpc/soaplet.rb +162 -0
  63. data/lib/action_web_service/soap/rpc/standaloneServer.rb +43 -0
  64. data/lib/action_web_service/soap/soap.rb +140 -0
  65. data/lib/action_web_service/soap/streamHandler.rb +229 -0
  66. data/lib/action_web_service/soap/wsdlDriver.rb +575 -0
  67. data/lib/action_web_service/struct.rb +64 -0
  68. data/lib/action_web_service/support/class_inheritable_options.rb +28 -0
  69. data/lib/action_web_service/support/signature_types.rb +227 -0
  70. data/lib/action_web_service/test_invoke.rb +110 -0
  71. data/lib/action_web_service/version.rb +9 -0
  72. data/lib/action_web_service/wsdl/binding.rb +65 -0
  73. data/lib/action_web_service/wsdl/data.rb +64 -0
  74. data/lib/action_web_service/wsdl/definitions.rb +250 -0
  75. data/lib/action_web_service/wsdl/documentation.rb +32 -0
  76. data/lib/action_web_service/wsdl/import.rb +80 -0
  77. data/lib/action_web_service/wsdl/importer.rb +38 -0
  78. data/lib/action_web_service/wsdl/info.rb +39 -0
  79. data/lib/action_web_service/wsdl/message.rb +54 -0
  80. data/lib/action_web_service/wsdl/operation.rb +130 -0
  81. data/lib/action_web_service/wsdl/operationBinding.rb +108 -0
  82. data/lib/action_web_service/wsdl/param.rb +85 -0
  83. data/lib/action_web_service/wsdl/parser.rb +163 -0
  84. data/lib/action_web_service/wsdl/part.rb +52 -0
  85. data/lib/action_web_service/wsdl/port.rb +84 -0
  86. data/lib/action_web_service/wsdl/portType.rb +73 -0
  87. data/lib/action_web_service/wsdl/service.rb +61 -0
  88. data/lib/action_web_service/wsdl/soap/address.rb +40 -0
  89. data/lib/action_web_service/wsdl/soap/binding.rb +49 -0
  90. data/lib/action_web_service/wsdl/soap/body.rb +56 -0
  91. data/lib/action_web_service/wsdl/soap/cgiStubCreator.rb +76 -0
  92. data/lib/action_web_service/wsdl/soap/classDefCreator.rb +314 -0
  93. data/lib/action_web_service/wsdl/soap/classDefCreatorSupport.rb +126 -0
  94. data/lib/action_web_service/wsdl/soap/clientSkeltonCreator.rb +78 -0
  95. data/lib/action_web_service/wsdl/soap/complexType.rb +161 -0
  96. data/lib/action_web_service/wsdl/soap/data.rb +42 -0
  97. data/lib/action_web_service/wsdl/soap/definitions.rb +149 -0
  98. data/lib/action_web_service/wsdl/soap/driverCreator.rb +95 -0
  99. data/lib/action_web_service/wsdl/soap/element.rb +28 -0
  100. data/lib/action_web_service/wsdl/soap/fault.rb +56 -0
  101. data/lib/action_web_service/wsdl/soap/header.rb +86 -0
  102. data/lib/action_web_service/wsdl/soap/headerfault.rb +56 -0
  103. data/lib/action_web_service/wsdl/soap/mappingRegistryCreator.rb +92 -0
  104. data/lib/action_web_service/wsdl/soap/methodDefCreator.rb +228 -0
  105. data/lib/action_web_service/wsdl/soap/operation.rb +122 -0
  106. data/lib/action_web_service/wsdl/soap/servantSkeltonCreator.rb +67 -0
  107. data/lib/action_web_service/wsdl/soap/standaloneServerStubCreator.rb +85 -0
  108. data/lib/action_web_service/wsdl/soap/wsdl2ruby.rb +176 -0
  109. data/lib/action_web_service/wsdl/types.rb +43 -0
  110. data/lib/action_web_service/wsdl/wsdl.rb +23 -0
  111. data/lib/action_web_service/wsdl/xmlSchema/all.rb +69 -0
  112. data/lib/action_web_service/wsdl/xmlSchema/annotation.rb +34 -0
  113. data/lib/action_web_service/wsdl/xmlSchema/any.rb +56 -0
  114. data/lib/action_web_service/wsdl/xmlSchema/attribute.rb +127 -0
  115. data/lib/action_web_service/wsdl/xmlSchema/choice.rb +69 -0
  116. data/lib/action_web_service/wsdl/xmlSchema/complexContent.rb +92 -0
  117. data/lib/action_web_service/wsdl/xmlSchema/complexType.rb +139 -0
  118. data/lib/action_web_service/wsdl/xmlSchema/content.rb +96 -0
  119. data/lib/action_web_service/wsdl/xmlSchema/data.rb +80 -0
  120. data/lib/action_web_service/wsdl/xmlSchema/element.rb +154 -0
  121. data/lib/action_web_service/wsdl/xmlSchema/enumeration.rb +36 -0
  122. data/lib/action_web_service/wsdl/xmlSchema/import.rb +65 -0
  123. data/lib/action_web_service/wsdl/xmlSchema/importer.rb +87 -0
  124. data/lib/action_web_service/wsdl/xmlSchema/include.rb +54 -0
  125. data/lib/action_web_service/wsdl/xmlSchema/length.rb +35 -0
  126. data/lib/action_web_service/wsdl/xmlSchema/parser.rb +166 -0
  127. data/lib/action_web_service/wsdl/xmlSchema/pattern.rb +36 -0
  128. data/lib/action_web_service/wsdl/xmlSchema/schema.rb +143 -0
  129. data/lib/action_web_service/wsdl/xmlSchema/sequence.rb +69 -0
  130. data/lib/action_web_service/wsdl/xmlSchema/simpleContent.rb +65 -0
  131. data/lib/action_web_service/wsdl/xmlSchema/simpleExtension.rb +54 -0
  132. data/lib/action_web_service/wsdl/xmlSchema/simpleRestriction.rb +73 -0
  133. data/lib/action_web_service/wsdl/xmlSchema/simpleType.rb +73 -0
  134. data/lib/action_web_service/wsdl/xmlSchema/unique.rb +34 -0
  135. data/lib/action_web_service/wsdl/xmlSchema/xsd2ruby.rb +107 -0
  136. data/lib/action_web_service/xsd/charset.rb +187 -0
  137. data/lib/action_web_service/xsd/codegen.rb +12 -0
  138. data/lib/action_web_service/xsd/codegen/classdef.rb +203 -0
  139. data/lib/action_web_service/xsd/codegen/commentdef.rb +34 -0
  140. data/lib/action_web_service/xsd/codegen/gensupport.rb +166 -0
  141. data/lib/action_web_service/xsd/codegen/methoddef.rb +63 -0
  142. data/lib/action_web_service/xsd/codegen/moduledef.rb +191 -0
  143. data/lib/action_web_service/xsd/datatypes.rb +1269 -0
  144. data/lib/action_web_service/xsd/datatypes1999.rb +20 -0
  145. data/lib/action_web_service/xsd/iconvcharset.rb +33 -0
  146. data/lib/action_web_service/xsd/mapping.rb +42 -0
  147. data/lib/action_web_service/xsd/namedelements.rb +95 -0
  148. data/lib/action_web_service/xsd/ns.rb +140 -0
  149. data/lib/action_web_service/xsd/qname.rb +78 -0
  150. data/lib/action_web_service/xsd/xmlparser.rb +61 -0
  151. data/lib/action_web_service/xsd/xmlparser/parser.rb +96 -0
  152. data/lib/action_web_service/xsd/xmlparser/rexmlparser.rb +54 -0
  153. data/lib/action_web_service/xsd/xmlparser/xmlparser.rb +50 -0
  154. data/lib/action_web_service/xsd/xmlparser/xmlscanner.rb +147 -0
  155. data/lib/actionwebservice.rb +1 -0
  156. data/setup.rb +1379 -0
  157. data/test/abstract_client.rb +183 -0
  158. data/test/abstract_dispatcher.rb +548 -0
  159. data/test/abstract_unit.rb +45 -0
  160. data/test/api_test.rb +103 -0
  161. data/test/apis/auto_load_api.rb +3 -0
  162. data/test/apis/broken_auto_load_api.rb +2 -0
  163. data/test/base_test.rb +42 -0
  164. data/test/casting_test.rb +95 -0
  165. data/test/client_soap_test.rb +156 -0
  166. data/test/client_xmlrpc_test.rb +153 -0
  167. data/test/container_test.rb +73 -0
  168. data/test/dispatcher_action_controller_soap_test.rb +139 -0
  169. data/test/dispatcher_action_controller_xmlrpc_test.rb +59 -0
  170. data/test/fixtures/db_definitions/mysql.sql +8 -0
  171. data/test/fixtures/db_definitions/sqlite3.sql +8 -0
  172. data/test/fixtures/users.yml +12 -0
  173. data/test/gencov +3 -0
  174. data/test/invocation_test.rb +185 -0
  175. data/test/run +6 -0
  176. data/test/scaffolded_controller_test.rb +146 -0
  177. data/test/struct_test.rb +52 -0
  178. data/test/test_invoke_test.rb +112 -0
  179. 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