soap4r 1.5.5.20061022

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 (440) hide show
  1. data/bin/wsdl2ruby.rb +131 -0
  2. data/bin/xsd2ruby.rb +82 -0
  3. data/lib/soap/XMLSchemaDatatypes.rb +9 -0
  4. data/lib/soap/XMLSchemaDatatypes1999.rb +10 -0
  5. data/lib/soap/attachment.rb +108 -0
  6. data/lib/soap/baseData.rb +992 -0
  7. data/lib/soap/cgistub.rb +9 -0
  8. data/lib/soap/charset.rb +9 -0
  9. data/lib/soap/compat.rb +182 -0
  10. data/lib/soap/driver.rb +9 -0
  11. data/lib/soap/element.rb +266 -0
  12. data/lib/soap/encodingstyle/aspDotNetHandler.rb +207 -0
  13. data/lib/soap/encodingstyle/handler.rb +109 -0
  14. data/lib/soap/encodingstyle/literalHandler.rb +241 -0
  15. data/lib/soap/encodingstyle/soapHandler.rb +598 -0
  16. data/lib/soap/generator.rb +264 -0
  17. data/lib/soap/header/handler.rb +60 -0
  18. data/lib/soap/header/handlerset.rb +70 -0
  19. data/lib/soap/header/simplehandler.rb +44 -0
  20. data/lib/soap/httpconfigloader.rb +119 -0
  21. data/lib/soap/mapping.rb +12 -0
  22. data/lib/soap/mapping/encodedregistry.rb +531 -0
  23. data/lib/soap/mapping/factory.rb +372 -0
  24. data/lib/soap/mapping/literalregistry.rb +321 -0
  25. data/lib/soap/mapping/mapping.rb +561 -0
  26. data/lib/soap/mapping/registry.rb +258 -0
  27. data/lib/soap/mapping/rubytypeFactory.rb +475 -0
  28. data/lib/soap/mapping/typeMap.rb +82 -0
  29. data/lib/soap/mapping/wsdlencodedregistry.rb +253 -0
  30. data/lib/soap/mapping/wsdlliteralregistry.rb +246 -0
  31. data/lib/soap/mappingRegistry.rb +9 -0
  32. data/lib/soap/marshal.rb +59 -0
  33. data/lib/soap/mimemessage.rb +241 -0
  34. data/lib/soap/namespace.rb +9 -0
  35. data/lib/soap/netHttpClient.rb +204 -0
  36. data/lib/soap/parser.rb +251 -0
  37. data/lib/soap/processor.rb +66 -0
  38. data/lib/soap/property.rb +333 -0
  39. data/lib/soap/proxy.rb +14 -0
  40. data/lib/soap/qname.rb +9 -0
  41. data/lib/soap/rpc/cgistub.rb +214 -0
  42. data/lib/soap/rpc/driver.rb +245 -0
  43. data/lib/soap/rpc/element.rb +330 -0
  44. data/lib/soap/rpc/httpserver.rb +143 -0
  45. data/lib/soap/rpc/proxy.rb +563 -0
  46. data/lib/soap/rpc/router.rb +602 -0
  47. data/lib/soap/rpc/rpc.rb +25 -0
  48. data/lib/soap/rpc/soaplet.rb +162 -0
  49. data/lib/soap/rpc/standaloneServer.rb +43 -0
  50. data/lib/soap/rpcRouter.rb +9 -0
  51. data/lib/soap/rpcUtils.rb +9 -0
  52. data/lib/soap/server.rb +9 -0
  53. data/lib/soap/soap.rb +150 -0
  54. data/lib/soap/standaloneServer.rb +9 -0
  55. data/lib/soap/streamHandler.rb +258 -0
  56. data/lib/soap/wsdlDriver.rb +580 -0
  57. data/lib/wsdl/binding.rb +65 -0
  58. data/lib/wsdl/data.rb +64 -0
  59. data/lib/wsdl/definitions.rb +250 -0
  60. data/lib/wsdl/documentation.rb +32 -0
  61. data/lib/wsdl/import.rb +80 -0
  62. data/lib/wsdl/importer.rb +38 -0
  63. data/lib/wsdl/info.rb +39 -0
  64. data/lib/wsdl/message.rb +54 -0
  65. data/lib/wsdl/operation.rb +175 -0
  66. data/lib/wsdl/operationBinding.rb +116 -0
  67. data/lib/wsdl/param.rb +85 -0
  68. data/lib/wsdl/parser.rb +163 -0
  69. data/lib/wsdl/part.rb +52 -0
  70. data/lib/wsdl/port.rb +84 -0
  71. data/lib/wsdl/portType.rb +75 -0
  72. data/lib/wsdl/service.rb +61 -0
  73. data/lib/wsdl/soap/address.rb +40 -0
  74. data/lib/wsdl/soap/binding.rb +49 -0
  75. data/lib/wsdl/soap/body.rb +56 -0
  76. data/lib/wsdl/soap/cgiStubCreator.rb +88 -0
  77. data/lib/wsdl/soap/classDefCreator.rb +340 -0
  78. data/lib/wsdl/soap/classDefCreatorSupport.rb +131 -0
  79. data/lib/wsdl/soap/clientSkeltonCreator.rb +93 -0
  80. data/lib/wsdl/soap/complexType.rb +166 -0
  81. data/lib/wsdl/soap/data.rb +42 -0
  82. data/lib/wsdl/soap/definitions.rb +151 -0
  83. data/lib/wsdl/soap/driverCreator.rb +110 -0
  84. data/lib/wsdl/soap/element.rb +28 -0
  85. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +117 -0
  86. data/lib/wsdl/soap/fault.rb +56 -0
  87. data/lib/wsdl/soap/header.rb +86 -0
  88. data/lib/wsdl/soap/headerfault.rb +56 -0
  89. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +188 -0
  90. data/lib/wsdl/soap/mappingRegistryCreator.rb +53 -0
  91. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +233 -0
  92. data/lib/wsdl/soap/methodDefCreator.rb +253 -0
  93. data/lib/wsdl/soap/operation.rb +122 -0
  94. data/lib/wsdl/soap/servantSkeltonCreator.rb +78 -0
  95. data/lib/wsdl/soap/standaloneServerStubCreator.rb +98 -0
  96. data/lib/wsdl/soap/wsdl2ruby.rb +196 -0
  97. data/lib/wsdl/types.rb +44 -0
  98. data/lib/wsdl/wsdl.rb +23 -0
  99. data/lib/wsdl/xmlSchema/all.rb +24 -0
  100. data/lib/wsdl/xmlSchema/annotation.rb +34 -0
  101. data/lib/wsdl/xmlSchema/any.rb +56 -0
  102. data/lib/wsdl/xmlSchema/attribute.rb +123 -0
  103. data/lib/wsdl/xmlSchema/choice.rb +55 -0
  104. data/lib/wsdl/xmlSchema/complexContent.rb +88 -0
  105. data/lib/wsdl/xmlSchema/complexExtension.rb +104 -0
  106. data/lib/wsdl/xmlSchema/complexRestriction.rb +92 -0
  107. data/lib/wsdl/xmlSchema/complexType.rb +152 -0
  108. data/lib/wsdl/xmlSchema/content.rb +74 -0
  109. data/lib/wsdl/xmlSchema/data.rb +90 -0
  110. data/lib/wsdl/xmlSchema/element.rb +158 -0
  111. data/lib/wsdl/xmlSchema/enumeration.rb +36 -0
  112. data/lib/wsdl/xmlSchema/import.rb +65 -0
  113. data/lib/wsdl/xmlSchema/importer.rb +87 -0
  114. data/lib/wsdl/xmlSchema/include.rb +54 -0
  115. data/lib/wsdl/xmlSchema/length.rb +35 -0
  116. data/lib/wsdl/xmlSchema/list.rb +48 -0
  117. data/lib/wsdl/xmlSchema/maxlength.rb +35 -0
  118. data/lib/wsdl/xmlSchema/minlength.rb +35 -0
  119. data/lib/wsdl/xmlSchema/parser.rb +166 -0
  120. data/lib/wsdl/xmlSchema/pattern.rb +36 -0
  121. data/lib/wsdl/xmlSchema/schema.rb +144 -0
  122. data/lib/wsdl/xmlSchema/sequence.rb +51 -0
  123. data/lib/wsdl/xmlSchema/simpleContent.rb +69 -0
  124. data/lib/wsdl/xmlSchema/simpleExtension.rb +54 -0
  125. data/lib/wsdl/xmlSchema/simpleRestriction.rb +91 -0
  126. data/lib/wsdl/xmlSchema/simpleType.rb +80 -0
  127. data/lib/wsdl/xmlSchema/unique.rb +34 -0
  128. data/lib/wsdl/xmlSchema/xsd2ruby.rb +107 -0
  129. data/lib/xsd/charset.rb +187 -0
  130. data/lib/xsd/codegen.rb +12 -0
  131. data/lib/xsd/codegen/classdef.rb +203 -0
  132. data/lib/xsd/codegen/commentdef.rb +34 -0
  133. data/lib/xsd/codegen/gensupport.rb +168 -0
  134. data/lib/xsd/codegen/methoddef.rb +70 -0
  135. data/lib/xsd/codegen/moduledef.rb +191 -0
  136. data/lib/xsd/datatypes.rb +1282 -0
  137. data/lib/xsd/datatypes1999.rb +20 -0
  138. data/lib/xsd/iconvcharset.rb +33 -0
  139. data/lib/xsd/mapping.rb +42 -0
  140. data/lib/xsd/namedelements.rb +124 -0
  141. data/lib/xsd/ns.rb +146 -0
  142. data/lib/xsd/qname.rb +78 -0
  143. data/lib/xsd/xmlparser.rb +61 -0
  144. data/lib/xsd/xmlparser/parser.rb +96 -0
  145. data/lib/xsd/xmlparser/rexmlparser.rb +54 -0
  146. data/lib/xsd/xmlparser/xmlparser.rb +50 -0
  147. data/lib/xsd/xmlparser/xmlscanner.rb +147 -0
  148. data/test/16runner.rb +68 -0
  149. data/test/interopR2/README.txt +2 -0
  150. data/test/interopR2/SOAPBuildersInterop_R2.wsdl +461 -0
  151. data/test/interopR2/SOAPBuildersInterop_R2GrB.wsdl +19 -0
  152. data/test/interopR2/base.rb +288 -0
  153. data/test/interopR2/client.NetRemoting.rb +17 -0
  154. data/test/interopR2/client.NetRemoting.rb.result +3410 -0
  155. data/test/interopR2/client.NetRemoting_Base.log +6279 -0
  156. data/test/interopR2/client.NetRemoting_GroupB.log +1188 -0
  157. data/test/interopR2/client.rb +1228 -0
  158. data/test/interopR2/client4S4C.rb +15 -0
  159. data/test/interopR2/client4S4C2.rb +14 -0
  160. data/test/interopR2/client4S4C2_Base.log +4955 -0
  161. data/test/interopR2/client4S4C2_GroupB.log +1000 -0
  162. data/test/interopR2/client4S4C_Base.log +4635 -0
  163. data/test/interopR2/client4S4C_GroupB.log +900 -0
  164. data/test/interopR2/clientASP.NET.rb +17 -0
  165. data/test/interopR2/clientASP.NET_Base.log +5468 -0
  166. data/test/interopR2/clientASP.NET_GroupB.log +977 -0
  167. data/test/interopR2/clientApacheAxis.rb +16 -0
  168. data/test/interopR2/clientApacheAxis_Base.log +3171 -0
  169. data/test/interopR2/clientApacheAxis_GroupB.log +498 -0
  170. data/test/interopR2/clientApacheSOAP.rb +17 -0
  171. data/test/interopR2/clientApacheSOAP_Base.log +3171 -0
  172. data/test/interopR2/clientBEAWebLogic.rb +17 -0
  173. data/test/interopR2/clientBEAWebLogic_Base.log +3171 -0
  174. data/test/interopR2/clientBEAWebLogic_GroupB.log +498 -0
  175. data/test/interopR2/clientBase.rb +1970 -0
  176. data/test/interopR2/clientCapeConnect.rb +18 -0
  177. data/test/interopR2/clientCapeConnect_Base.log +2126 -0
  178. data/test/interopR2/clientDelphi.rb +19 -0
  179. data/test/interopR2/clientDelphi_Base.log +0 -0
  180. data/test/interopR2/clientEasySoap.rb +14 -0
  181. data/test/interopR2/clientEasySoap_Base.log +6187 -0
  182. data/test/interopR2/clientEasySoap_GroupB.log +1076 -0
  183. data/test/interopR2/clientFrontier.rb +25 -0
  184. data/test/interopR2/clientFrontier_Base.log +5188 -0
  185. data/test/interopR2/clientGLUE.rb +32 -0
  186. data/test/interopR2/clientHP.rb +13 -0
  187. data/test/interopR2/clientHP_Base.log +3171 -0
  188. data/test/interopR2/clientHP_GroupB.log +498 -0
  189. data/test/interopR2/clientJAX-RPC.rb +19 -0
  190. data/test/interopR2/clientJSOAP.rb +14 -0
  191. data/test/interopR2/clientJSOAP_Base.log +4465 -0
  192. data/test/interopR2/clientJSOAP_GroupB.log +824 -0
  193. data/test/interopR2/clientKafkaXSLT.rb +15 -0
  194. data/test/interopR2/clientKafkaXSLT_Base.log +10299 -0
  195. data/test/interopR2/clientKafkaXSLT_GroupB.log +1739 -0
  196. data/test/interopR2/clientMSSOAPToolkit2.0.rb +17 -0
  197. data/test/interopR2/clientMSSOAPToolkit2.0_Base.log +4805 -0
  198. data/test/interopR2/clientMSSOAPToolkit2.0_GroupB.log +871 -0
  199. data/test/interopR2/clientMSSOAPToolkit3.0.rb +17 -0
  200. data/test/interopR2/clientMSSOAPToolkit3.0_Base.log +5076 -0
  201. data/test/interopR2/clientMSSOAPToolkit3.0_GroupB.log +908 -0
  202. data/test/interopR2/clientNuSOAP.rb +19 -0
  203. data/test/interopR2/clientNuSOAP_Base.log +5076 -0
  204. data/test/interopR2/clientNuSOAP_GroupB.log +958 -0
  205. data/test/interopR2/clientNuWave.rb +15 -0
  206. data/test/interopR2/clientNuWave_Base.log +2019 -0
  207. data/test/interopR2/clientOpenLink.rb +15 -0
  208. data/test/interopR2/clientOpenLink_Base.log +6171 -0
  209. data/test/interopR2/clientOpenLink_GroupB.log +1094 -0
  210. data/test/interopR2/clientOracle.rb +15 -0
  211. data/test/interopR2/clientOracle_Base.log +5594 -0
  212. data/test/interopR2/clientPEAR.rb +18 -0
  213. data/test/interopR2/clientPEAR_Base.log +6261 -0
  214. data/test/interopR2/clientPEAR_GroupB.log +1106 -0
  215. data/test/interopR2/clientPhalanx.rb +18 -0
  216. data/test/interopR2/clientPhalanx_Base.log +41036 -0
  217. data/test/interopR2/clientPhalanx_GroupB.log +6519 -0
  218. data/test/interopR2/clientSIMACE.rb +18 -0
  219. data/test/interopR2/clientSIMACE_Base.log +6171 -0
  220. data/test/interopR2/clientSIMACE_GroupB.log +1093 -0
  221. data/test/interopR2/clientSOAP4R.rb +18 -0
  222. data/test/interopR2/clientSOAP4R.rb.result +3409 -0
  223. data/test/interopR2/clientSOAP4R_Base.log +6366 -0
  224. data/test/interopR2/clientSOAP4R_GroupB.log +1112 -0
  225. data/test/interopR2/clientSOAP__Lite.rb +14 -0
  226. data/test/interopR2/clientSQLData.rb +18 -0
  227. data/test/interopR2/clientSQLData_Base.log +4857 -0
  228. data/test/interopR2/clientSQLData_GroupB.log +770 -0
  229. data/test/interopR2/clientSilverStream.rb +17 -0
  230. data/test/interopR2/clientSilverStream_Base.log +3171 -0
  231. data/test/interopR2/clientSpray2001.rb +17 -0
  232. data/test/interopR2/clientSpray2001_Base.log +8187 -0
  233. data/test/interopR2/clientSpray2001_GroupB.log +1408 -0
  234. data/test/interopR2/clientSun.rb +19 -0
  235. data/test/interopR2/clientSun_Base.log +4641 -0
  236. data/test/interopR2/clientSun_GroupB.log +856 -0
  237. data/test/interopR2/clientVWOpentalkSoap.rb +19 -0
  238. data/test/interopR2/clientVWOpentalkSoap_Base.log +5402 -0
  239. data/test/interopR2/clientVWOpentalkSoap_GroupB.log +972 -0
  240. data/test/interopR2/clientWASP.rb +19 -0
  241. data/test/interopR2/clientWASPC.rb +18 -0
  242. data/test/interopR2/clientWASPC_Base.log +4187 -0
  243. data/test/interopR2/clientWASPC_GroupB.log +763 -0
  244. data/test/interopR2/clientWASP_Base.log +5414 -0
  245. data/test/interopR2/clientWASP_GroupB.log +970 -0
  246. data/test/interopR2/clientWebMethods.rb +15 -0
  247. data/test/interopR2/clientWebMethods_Base.log +3075 -0
  248. data/test/interopR2/clientWebMethods_GroupB.log +483 -0
  249. data/test/interopR2/clientWhiteMesa.rb +28 -0
  250. data/test/interopR2/clientWhiteMesa_Base.log +4359 -0
  251. data/test/interopR2/clientWhiteMesa_GroupB.log +808 -0
  252. data/test/interopR2/clientWingfoot.rb +15 -0
  253. data/test/interopR2/clientWingfoot_Base.log +4445 -0
  254. data/test/interopR2/clientWingfoot_GroupB.log +848 -0
  255. data/test/interopR2/clientXMLBus.rb +19 -0
  256. data/test/interopR2/clientXMLBus_Base.log +3075 -0
  257. data/test/interopR2/clientXMLBus_GroupB.log +483 -0
  258. data/test/interopR2/clientXMLRPC-EPI.rb +17 -0
  259. data/test/interopR2/clientXSOAP.rb +14 -0
  260. data/test/interopR2/clientXSOAP_Base.log +4445 -0
  261. data/test/interopR2/clientZSI.rb +19 -0
  262. data/test/interopR2/clienteSOAP.rb +18 -0
  263. data/test/interopR2/clienteSOAP_Base.log +8728 -0
  264. data/test/interopR2/clientgSOAP.rb +18 -0
  265. data/test/interopR2/clientgSOAP_Base.log +4689 -0
  266. data/test/interopR2/clientgSOAP_GroupB.log +1014 -0
  267. data/test/interopR2/clientkSOAP.rb +17 -0
  268. data/test/interopR2/clientkSOAP_Base.log +5625 -0
  269. data/test/interopR2/iSimonReg.rb +112 -0
  270. data/test/interopR2/interopResultBase.rb +114 -0
  271. data/test/interopR2/interopService.rb +247 -0
  272. data/test/interopR2/result_client.NetRemoting.txt +4593 -0
  273. data/test/interopR2/rwikiInteropService.rb +105 -0
  274. data/test/interopR2/server.cgi +270 -0
  275. data/test/interopR2/server.rb +274 -0
  276. data/test/interopR2/simonReg.rb +123 -0
  277. data/test/interopR2/test.sh +49 -0
  278. data/test/interopR4/client.rb +112 -0
  279. data/test/runner.rb +9 -0
  280. data/test/sm11/classDef.rb +156 -0
  281. data/test/sm11/client.rb +542 -0
  282. data/test/sm11/driver.rb +183 -0
  283. data/test/sm11/servant.rb +1067 -0
  284. data/test/sm11/server.rb +25 -0
  285. data/test/soap/asp.net/hello.wsdl +96 -0
  286. data/test/soap/asp.net/test_aspdotnet.rb +112 -0
  287. data/test/soap/calc/calc.rb +17 -0
  288. data/test/soap/calc/calc2.rb +29 -0
  289. data/test/soap/calc/server.cgi +13 -0
  290. data/test/soap/calc/server.rb +17 -0
  291. data/test/soap/calc/server2.rb +20 -0
  292. data/test/soap/calc/test_calc.rb +49 -0
  293. data/test/soap/calc/test_calc2.rb +53 -0
  294. data/test/soap/calc/test_calc_cgi.rb +69 -0
  295. data/test/soap/fault/test_customfault.rb +58 -0
  296. data/test/soap/header/server.cgi +119 -0
  297. data/test/soap/header/test_authheader.rb +240 -0
  298. data/test/soap/header/test_authheader_cgi.rb +121 -0
  299. data/test/soap/header/test_simplehandler.rb +116 -0
  300. data/test/soap/helloworld/hw_s.rb +16 -0
  301. data/test/soap/helloworld/test_helloworld.rb +41 -0
  302. data/test/soap/literalArrayMapping/amazonEc.rb +4778 -0
  303. data/test/soap/literalArrayMapping/amazonEcDriver.rb +172 -0
  304. data/test/soap/literalArrayMapping/amazonresponse.xml +100 -0
  305. data/test/soap/literalArrayMapping/test_definedarray.rb +36 -0
  306. data/test/soap/marshal/marshaltestlib.rb +494 -0
  307. data/test/soap/marshal/test_digraph.rb +56 -0
  308. data/test/soap/marshal/test_marshal.rb +26 -0
  309. data/test/soap/marshal/test_struct.rb +47 -0
  310. data/test/soap/ssl/README +1 -0
  311. data/test/soap/ssl/ca.cert +23 -0
  312. data/test/soap/ssl/client.cert +19 -0
  313. data/test/soap/ssl/client.key +15 -0
  314. data/test/soap/ssl/server.cert +19 -0
  315. data/test/soap/ssl/server.key +15 -0
  316. data/test/soap/ssl/sslsvr.rb +57 -0
  317. data/test/soap/ssl/subca.cert +21 -0
  318. data/test/soap/ssl/test_ssl.rb +245 -0
  319. data/test/soap/struct/test_struct.rb +77 -0
  320. data/test/soap/styleuse/client.rb +20 -0
  321. data/test/soap/styleuse/server.rb +86 -0
  322. data/test/soap/swa/test_file.rb +73 -0
  323. data/test/soap/test_basetype.rb +976 -0
  324. data/test/soap/test_custommap.rb +108 -0
  325. data/test/soap/test_empty.rb +79 -0
  326. data/test/soap/test_envelopenamespace.rb +92 -0
  327. data/test/soap/test_httpconfigloader.rb +39 -0
  328. data/test/soap/test_mapping.rb +59 -0
  329. data/test/soap/test_no_indent.rb +86 -0
  330. data/test/soap/test_property.rb +424 -0
  331. data/test/soap/test_response_as_xml.rb +95 -0
  332. data/test/soap/test_soapelement.rb +120 -0
  333. data/test/soap/test_streamhandler.rb +262 -0
  334. data/test/soap/test_styleuse.rb +333 -0
  335. data/test/soap/wsdlDriver/README.txt +2 -0
  336. data/test/soap/wsdlDriver/calc.wsdl +126 -0
  337. data/test/soap/wsdlDriver/document.wsdl +54 -0
  338. data/test/soap/wsdlDriver/echo_version.rb +29 -0
  339. data/test/soap/wsdlDriver/simpletype.wsdl +63 -0
  340. data/test/soap/wsdlDriver/test_calc.rb +100 -0
  341. data/test/soap/wsdlDriver/test_document.rb +78 -0
  342. data/test/soap/wsdlDriver/test_simpletype.rb +87 -0
  343. data/test/wsdl/abstract/abstract.wsdl +97 -0
  344. data/test/wsdl/abstract/test_abstract.rb +130 -0
  345. data/test/wsdl/any/any.wsdl +51 -0
  346. data/test/wsdl/any/expectedDriver.rb +46 -0
  347. data/test/wsdl/any/expectedEcho.rb +18 -0
  348. data/test/wsdl/any/expectedService.rb +42 -0
  349. data/test/wsdl/any/test_any.rb +193 -0
  350. data/test/wsdl/axisArray/axisArray.wsdl +60 -0
  351. data/test/wsdl/axisArray/itemList.rb +14 -0
  352. data/test/wsdl/axisArray/test_axisarray.rb +69 -0
  353. data/test/wsdl/choice/choice.wsdl +91 -0
  354. data/test/wsdl/choice/test_choice.rb +134 -0
  355. data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
  356. data/test/wsdl/complexcontent/test_echo.rb +101 -0
  357. data/test/wsdl/datetime/DatetimeService.rb +44 -0
  358. data/test/wsdl/datetime/datetime.rb +0 -0
  359. data/test/wsdl/datetime/datetime.wsdl +45 -0
  360. data/test/wsdl/datetime/datetimeServant.rb +21 -0
  361. data/test/wsdl/datetime/test_datetime.rb +82 -0
  362. data/test/wsdl/document/array/double.wsdl +72 -0
  363. data/test/wsdl/document/array/test_array.rb +117 -0
  364. data/test/wsdl/document/document.wsdl +74 -0
  365. data/test/wsdl/document/number.wsdl +54 -0
  366. data/test/wsdl/document/ping_nosoapaction.wsdl +66 -0
  367. data/test/wsdl/document/test_nosoapaction.rb +109 -0
  368. data/test/wsdl/document/test_number.rb +99 -0
  369. data/test/wsdl/document/test_rpc.rb +211 -0
  370. data/test/wsdl/emptycomplextype.wsdl +31 -0
  371. data/test/wsdl/list/list.wsdl +93 -0
  372. data/test/wsdl/list/test_list.rb +134 -0
  373. data/test/wsdl/map/map.wsdl +92 -0
  374. data/test/wsdl/map/map.xml +43 -0
  375. data/test/wsdl/map/test_map.rb +99 -0
  376. data/test/wsdl/marshal/person.wsdl +21 -0
  377. data/test/wsdl/marshal/person_org.rb +18 -0
  378. data/test/wsdl/marshal/test_wsdlmarshal.rb +79 -0
  379. data/test/wsdl/multiplefault.wsdl +68 -0
  380. data/test/wsdl/overload/overload.wsdl +80 -0
  381. data/test/wsdl/overload/test_overload.rb +118 -0
  382. data/test/wsdl/qualified/lp.wsdl +47 -0
  383. data/test/wsdl/qualified/lp.xsd +26 -0
  384. data/test/wsdl/qualified/np.wsdl +51 -0
  385. data/test/wsdl/qualified/test_qualified.rb +145 -0
  386. data/test/wsdl/qualified/test_unqualified.rb +159 -0
  387. data/test/wsdl/raa/RAA.rb +120 -0
  388. data/test/wsdl/raa/RAAServant.rb +107 -0
  389. data/test/wsdl/raa/RAAService.rb +120 -0
  390. data/test/wsdl/raa/README.txt +8 -0
  391. data/test/wsdl/raa/raa.wsdl +264 -0
  392. data/test/wsdl/raa/server.rb +103 -0
  393. data/test/wsdl/raa/test_raa.rb +91 -0
  394. data/test/wsdl/ref/expectedProduct.rb +158 -0
  395. data/test/wsdl/ref/product.wsdl +147 -0
  396. data/test/wsdl/ref/test_ref.rb +289 -0
  397. data/test/wsdl/rpc/rpc.wsdl +83 -0
  398. data/test/wsdl/rpc/test-rpc-lit.wsdl +364 -0
  399. data/test/wsdl/rpc/test_rpc.rb +173 -0
  400. data/test/wsdl/rpc/test_rpc_lit.rb +407 -0
  401. data/test/wsdl/simplecontent/simplecontent.wsdl +83 -0
  402. data/test/wsdl/simplecontent/test_simplecontent.rb +116 -0
  403. data/test/wsdl/simpletype/rpc/expectedClient.rb +34 -0
  404. data/test/wsdl/simpletype/rpc/expectedDriver.rb +55 -0
  405. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +19 -0
  406. data/test/wsdl/simpletype/rpc/expectedServant.rb +32 -0
  407. data/test/wsdl/simpletype/rpc/expectedService.rb +51 -0
  408. data/test/wsdl/simpletype/rpc/rpc.wsdl +80 -0
  409. data/test/wsdl/simpletype/rpc/test_rpc.rb +62 -0
  410. data/test/wsdl/simpletype/simpletype.wsdl +95 -0
  411. data/test/wsdl/simpletype/test_simpletype.rb +99 -0
  412. data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
  413. data/test/wsdl/soap/test_soapbodyparts.rb +79 -0
  414. data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +19 -0
  415. data/test/wsdl/soap/wsdl2ruby/expectedClient.rb +34 -0
  416. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +55 -0
  417. data/test/wsdl/soap/wsdl2ruby/expectedServant.rb +32 -0
  418. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +44 -0
  419. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +51 -0
  420. data/test/wsdl/soap/wsdl2ruby/rpc.wsdl +80 -0
  421. data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +31 -0
  422. data/test/wsdl/soap/wsdl2ruby/section/section.xsd +31 -0
  423. data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +54 -0
  424. data/test/wsdl/soap/wsdl2ruby/soapenc/soapenc.wsdl +64 -0
  425. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +96 -0
  426. data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +79 -0
  427. data/test/wsdl/soaptype/soaptype.wsdl +61 -0
  428. data/test/wsdl/soaptype/test_soaptype.rb +160 -0
  429. data/test/wsdl/test_emptycomplextype.rb +21 -0
  430. data/test/wsdl/test_fault.rb +50 -0
  431. data/test/wsdl/test_multiplefault.rb +39 -0
  432. data/test/xsd/codegen/test_classdef.rb +214 -0
  433. data/test/xsd/noencoding.xml +4 -0
  434. data/test/xsd/test_noencoding.rb +32 -0
  435. data/test/xsd/test_ns.rb +20 -0
  436. data/test/xsd/test_xmlschemaparser.rb +22 -0
  437. data/test/xsd/test_xsd.rb +1523 -0
  438. data/test/xsd/xmllang.xml +43 -0
  439. data/test/xsd/xmlschema.xml +12 -0
  440. metadata +539 -0
@@ -0,0 +1,602 @@
1
+ # SOAP4R - RPC Routing library
2
+ # Copyright (C) 2001, 2002, 2004-2006 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 'soap/soap'
10
+ require 'soap/processor'
11
+ require 'soap/mapping'
12
+ require 'soap/mapping/literalregistry'
13
+ require 'soap/rpc/rpc'
14
+ require 'soap/rpc/element'
15
+ require 'soap/streamHandler'
16
+ require 'soap/mimemessage'
17
+ require 'soap/header/handlerset'
18
+
19
+
20
+ module SOAP
21
+ module RPC
22
+
23
+
24
+ class Router
25
+ include SOAP
26
+
27
+ attr_reader :actor
28
+ attr_accessor :mapping_registry
29
+ attr_accessor :literal_mapping_registry
30
+ attr_accessor :generate_explicit_type
31
+ attr_accessor :external_ces
32
+
33
+ def initialize(actor)
34
+ @actor = actor
35
+ @mapping_registry = nil
36
+ @headerhandler = Header::HandlerSet.new
37
+ @literal_mapping_registry = ::SOAP::Mapping::LiteralRegistry.new
38
+ @generate_explicit_type = true
39
+ @external_ces = nil
40
+ @operation_by_soapaction = {}
41
+ @operation_by_qname = {}
42
+ @headerhandlerfactory = []
43
+ end
44
+
45
+ ###
46
+ ## header handler interface
47
+ #
48
+ def add_request_headerhandler(factory)
49
+ unless factory.respond_to?(:create)
50
+ raise TypeError.new("factory must respond to 'create'")
51
+ end
52
+ @headerhandlerfactory << factory
53
+ end
54
+
55
+ def add_headerhandler(handler)
56
+ @headerhandler.add(handler)
57
+ end
58
+
59
+ ###
60
+ ## servant definition interface
61
+ #
62
+ def add_rpc_request_servant(factory, namespace)
63
+ unless factory.respond_to?(:create)
64
+ raise TypeError.new("factory must respond to 'create'")
65
+ end
66
+ obj = factory.create # a dummy instance for introspection
67
+ ::SOAP::RPC.defined_methods(obj).each do |name|
68
+ begin
69
+ qname = XSD::QName.new(namespace, name)
70
+ param_def = ::SOAP::RPC::SOAPMethod.derive_rpc_param_def(obj, name)
71
+ opt = create_styleuse_option(:rpc, :encoded)
72
+ add_rpc_request_operation(factory, qname, nil, name, param_def, opt)
73
+ rescue SOAP::RPC::MethodDefinitionError => e
74
+ p e if $DEBUG
75
+ end
76
+ end
77
+ end
78
+
79
+ def add_rpc_servant(obj, namespace)
80
+ ::SOAP::RPC.defined_methods(obj).each do |name|
81
+ begin
82
+ qname = XSD::QName.new(namespace, name)
83
+ param_def = ::SOAP::RPC::SOAPMethod.derive_rpc_param_def(obj, name)
84
+ opt = create_styleuse_option(:rpc, :encoded)
85
+ add_rpc_operation(obj, qname, nil, name, param_def, opt)
86
+ rescue SOAP::RPC::MethodDefinitionError => e
87
+ p e if $DEBUG
88
+ end
89
+ end
90
+ end
91
+ alias add_servant add_rpc_servant
92
+
93
+ ###
94
+ ## operation definition interface
95
+ #
96
+ def add_rpc_operation(receiver, qname, soapaction, name, param_def, opt = {})
97
+ ensure_styleuse_option(opt, :rpc, :encoded)
98
+ opt[:request_qname] = qname
99
+ op = ApplicationScopeOperation.new(soapaction, receiver, name, param_def,
100
+ opt)
101
+ if opt[:request_style] != :rpc
102
+ raise RPCRoutingError.new("illegal request_style given")
103
+ end
104
+ assign_operation(soapaction, qname, op)
105
+ end
106
+ alias add_method add_rpc_operation
107
+ alias add_rpc_method add_rpc_operation
108
+
109
+ def add_rpc_request_operation(factory, qname, soapaction, name, param_def, opt = {})
110
+ ensure_styleuse_option(opt, :rpc, :encoded)
111
+ opt[:request_qname] = qname
112
+ op = RequestScopeOperation.new(soapaction, factory, name, param_def, opt)
113
+ if opt[:request_style] != :rpc
114
+ raise RPCRoutingError.new("illegal request_style given")
115
+ end
116
+ assign_operation(soapaction, qname, op)
117
+ end
118
+
119
+ def add_document_operation(receiver, soapaction, name, param_def, opt = {})
120
+ #
121
+ # adopt workaround for doc/lit wrapper method
122
+ # (you should consider to simply use rpc/lit service)
123
+ #
124
+ #unless soapaction
125
+ # raise RPCRoutingError.new("soapaction is a must for document method")
126
+ #end
127
+ ensure_styleuse_option(opt, :document, :literal)
128
+ op = ApplicationScopeOperation.new(soapaction, receiver, name, param_def,
129
+ opt)
130
+ if opt[:request_style] != :document
131
+ raise RPCRoutingError.new("illegal request_style given")
132
+ end
133
+ assign_operation(soapaction, first_input_part_qname(param_def), op)
134
+ end
135
+ alias add_document_method add_document_operation
136
+
137
+ def add_document_request_operation(factory, soapaction, name, param_def, opt = {})
138
+ #
139
+ # adopt workaround for doc/lit wrapper method
140
+ # (you should consider to simply use rpc/lit service)
141
+ #
142
+ #unless soapaction
143
+ # raise RPCRoutingError.new("soapaction is a must for document method")
144
+ #end
145
+ ensure_styleuse_option(opt, :document, :literal)
146
+ op = RequestScopeOperation.new(soapaction, receiver, name, param_def, opt)
147
+ if opt[:request_style] != :document
148
+ raise RPCRoutingError.new("illegal request_style given")
149
+ end
150
+ assign_operation(soapaction, first_input_part_qname(param_def), op)
151
+ end
152
+
153
+ def route(conn_data)
154
+ # we cannot set request_default_encodingsyle before parsing the content.
155
+ env = unmarshal(conn_data)
156
+ if env.nil?
157
+ raise ArgumentError.new("illegal SOAP marshal format")
158
+ end
159
+ op = lookup_operation(conn_data.soapaction, env.body)
160
+ headerhandler = @headerhandler.dup
161
+ @headerhandlerfactory.each do |f|
162
+ headerhandler.add(f.create)
163
+ end
164
+ soap_response = default_encodingstyle = nil
165
+ begin
166
+ receive_headers(headerhandler, env.header)
167
+ soap_response =
168
+ op.call(env.body, @mapping_registry, @literal_mapping_registry,
169
+ create_mapping_opt)
170
+ default_encodingstyle = op.response_default_encodingstyle
171
+ rescue Exception
172
+ soap_response = fault($!)
173
+ default_encodingstyle = nil
174
+ end
175
+ conn_data.is_fault = true if soap_response.is_a?(SOAPFault)
176
+ header = call_headers(headerhandler)
177
+ body = SOAPBody.new(soap_response)
178
+ env = SOAPEnvelope.new(header, body)
179
+ marshal(conn_data, env, default_encodingstyle)
180
+ end
181
+
182
+ # Create fault response string.
183
+ def create_fault_response(e)
184
+ env = SOAPEnvelope.new(SOAPHeader.new, SOAPBody.new(fault(e)))
185
+ opt = {}
186
+ opt[:external_content] = nil
187
+ response_string = Processor.marshal(env, opt)
188
+ conn_data = StreamHandler::ConnectionData.new(response_string)
189
+ conn_data.is_fault = true
190
+ if ext = opt[:external_content]
191
+ mimeize(conn_data, ext)
192
+ end
193
+ conn_data
194
+ end
195
+
196
+ private
197
+
198
+ def first_input_part_qname(param_def)
199
+ param_def.each do |inout, paramname, typeinfo|
200
+ if inout == SOAPMethod::IN
201
+ klass, nsdef, namedef = typeinfo
202
+ return XSD::QName.new(nsdef, namedef)
203
+ end
204
+ end
205
+ nil
206
+ end
207
+
208
+ def create_styleuse_option(style, use)
209
+ opt = {}
210
+ opt[:request_style] = opt[:response_style] = style
211
+ opt[:request_use] = opt[:response_use] = use
212
+ opt
213
+ end
214
+
215
+ def ensure_styleuse_option(opt, style, use)
216
+ opt[:request_style] ||= style
217
+ opt[:response_style] ||= style
218
+ opt[:request_use] ||= use
219
+ opt[:response_use] ||= use
220
+ end
221
+
222
+ def assign_operation(soapaction, qname, op)
223
+ assigned = false
224
+ if soapaction and !soapaction.empty?
225
+ @operation_by_soapaction[soapaction] = op
226
+ assigned = true
227
+ end
228
+ if qname
229
+ @operation_by_qname[qname] = op
230
+ assigned = true
231
+ end
232
+ unless assigned
233
+ raise RPCRoutingError.new("cannot assign operation")
234
+ end
235
+ end
236
+
237
+ def lookup_operation(soapaction, body)
238
+ if op = @operation_by_soapaction[soapaction]
239
+ return op
240
+ end
241
+ qname = body.root_node.elename
242
+ if op = @operation_by_qname[qname]
243
+ return op
244
+ end
245
+ if soapaction
246
+ raise RPCRoutingError.new(
247
+ "operation: #{soapaction} #{qname} not supported")
248
+ else
249
+ raise RPCRoutingError.new("operation: #{qname} not supported")
250
+ end
251
+ end
252
+
253
+ def call_headers(headerhandler)
254
+ headers = headerhandler.on_outbound
255
+ if headers.empty?
256
+ nil
257
+ else
258
+ h = ::SOAP::SOAPHeader.new
259
+ headers.each do |header|
260
+ h.add(header.elename.name, header)
261
+ end
262
+ h
263
+ end
264
+ end
265
+
266
+ def receive_headers(headerhandler, headers)
267
+ headerhandler.on_inbound(headers) if headers
268
+ end
269
+
270
+ def unmarshal(conn_data)
271
+ opt = {}
272
+ contenttype = conn_data.receive_contenttype
273
+ if /#{MIMEMessage::MultipartContentType}/i =~ contenttype
274
+ opt[:external_content] = {}
275
+ mime = MIMEMessage.parse("Content-Type: " + contenttype,
276
+ conn_data.receive_string)
277
+ mime.parts.each do |part|
278
+ value = Attachment.new(part.content)
279
+ value.contentid = part.contentid
280
+ obj = SOAPAttachment.new(value)
281
+ opt[:external_content][value.contentid] = obj if value.contentid
282
+ end
283
+ opt[:charset] =
284
+ StreamHandler.parse_media_type(mime.root.headers['content-type'].str)
285
+ env = Processor.unmarshal(mime.root.content, opt)
286
+ else
287
+ opt[:charset] = ::SOAP::StreamHandler.parse_media_type(contenttype)
288
+ env = Processor.unmarshal(conn_data.receive_string, opt)
289
+ end
290
+ charset = opt[:charset]
291
+ conn_data.send_contenttype = "text/xml; charset=\"#{charset}\""
292
+ env
293
+ end
294
+
295
+ def marshal(conn_data, env, default_encodingstyle = nil)
296
+ opt = {}
297
+ opt[:external_content] = nil
298
+ opt[:default_encodingstyle] = default_encodingstyle
299
+ opt[:generate_explicit_type] = @generate_explicit_type
300
+ response_string = Processor.marshal(env, opt)
301
+ conn_data.send_string = response_string
302
+ if ext = opt[:external_content]
303
+ mimeize(conn_data, ext)
304
+ end
305
+ conn_data
306
+ end
307
+
308
+ def mimeize(conn_data, ext)
309
+ mime = MIMEMessage.new
310
+ ext.each do |k, v|
311
+ mime.add_attachment(v.data)
312
+ end
313
+ mime.add_part(conn_data.send_string + "\r\n")
314
+ mime.close
315
+ conn_data.send_string = mime.content_str
316
+ conn_data.send_contenttype = mime.headers['content-type'].str
317
+ conn_data
318
+ end
319
+
320
+ # Create fault response.
321
+ def fault(e)
322
+ if e.is_a?(UnhandledMustUnderstandHeaderError)
323
+ faultcode = FaultCode::MustUnderstand
324
+ else
325
+ faultcode = FaultCode::Server
326
+ end
327
+ detail = Mapping.obj2soap(Mapping::SOAPException.new(e),
328
+ @mapping_registry)
329
+ detail.elename ||= XSD::QName::EMPTY # for literal mappingregstry
330
+ SOAPFault.new(
331
+ SOAPElement.new(nil, faultcode),
332
+ SOAPString.new(e.to_s),
333
+ SOAPString.new(@actor),
334
+ detail)
335
+ end
336
+
337
+ def create_mapping_opt
338
+ { :external_ces => @external_ces }
339
+ end
340
+
341
+ class Operation
342
+ attr_reader :name
343
+ attr_reader :soapaction
344
+ attr_reader :request_style
345
+ attr_reader :response_style
346
+ attr_reader :request_use
347
+ attr_reader :response_use
348
+
349
+ def initialize(soapaction, name, param_def, opt)
350
+ @soapaction = soapaction
351
+ @name = name
352
+ @request_style = opt[:request_style]
353
+ @response_style = opt[:response_style]
354
+ @request_use = opt[:request_use]
355
+ @response_use = opt[:response_use]
356
+ check_style(@request_style)
357
+ check_style(@response_style)
358
+ check_use(@request_use)
359
+ check_use(@response_use)
360
+ if @response_style == :rpc
361
+ request_qname = opt[:request_qname] or raise
362
+ @rpc_method_factory =
363
+ RPC::SOAPMethodRequest.new(request_qname, param_def, @soapaction)
364
+ @rpc_response_qname = opt[:response_qname]
365
+ else
366
+ @doc_request_qnames = []
367
+ @doc_request_qualified = []
368
+ @doc_response_qnames = []
369
+ @doc_response_qualified = []
370
+ param_def.each do |inout, paramname, typeinfo, eleinfo|
371
+ klass, nsdef, namedef = typeinfo
372
+ qualified = eleinfo
373
+ case inout
374
+ when SOAPMethod::IN
375
+ @doc_request_qnames << XSD::QName.new(nsdef, namedef)
376
+ @doc_request_qualified << qualified
377
+ when SOAPMethod::OUT
378
+ @doc_response_qnames << XSD::QName.new(nsdef, namedef)
379
+ @doc_response_qualified << qualified
380
+ else
381
+ raise ArgumentError.new(
382
+ "illegal inout definition for document style: #{inout}")
383
+ end
384
+ end
385
+ end
386
+ end
387
+
388
+ def request_default_encodingstyle
389
+ (@request_use == :encoded) ? EncodingNamespace : LiteralNamespace
390
+ end
391
+
392
+ def response_default_encodingstyle
393
+ (@response_use == :encoded) ? EncodingNamespace : LiteralNamespace
394
+ end
395
+
396
+ def call(body, mapping_registry, literal_mapping_registry, opt)
397
+ if @request_style == :rpc
398
+ values = request_rpc(body, mapping_registry, literal_mapping_registry,
399
+ opt)
400
+ else
401
+ values = request_document(body, mapping_registry,
402
+ literal_mapping_registry, opt)
403
+ end
404
+ result = receiver.method(@name.intern).call(*values)
405
+ return result if result.is_a?(SOAPFault)
406
+ if @response_style == :rpc
407
+ response_rpc(result, mapping_registry, literal_mapping_registry, opt)
408
+ else
409
+ response_doc(result, mapping_registry, literal_mapping_registry, opt)
410
+ end
411
+ end
412
+
413
+ private
414
+
415
+ def receiver
416
+ raise NotImplementedError.new('must be defined in derived class')
417
+ end
418
+
419
+ def request_rpc(body, mapping_registry, literal_mapping_registry, opt)
420
+ request = body.request
421
+ unless request.is_a?(SOAPStruct)
422
+ raise RPCRoutingError.new("not an RPC style")
423
+ end
424
+ if @request_use == :encoded
425
+ request_rpc_enc(request, mapping_registry, opt)
426
+ else
427
+ request_rpc_lit(request, literal_mapping_registry, opt)
428
+ end
429
+ end
430
+
431
+ def request_document(body, mapping_registry, literal_mapping_registry, opt)
432
+ # ToDo: compare names with @doc_request_qnames
433
+ if @request_use == :encoded
434
+ request_doc_enc(body, mapping_registry, opt)
435
+ else
436
+ request_doc_lit(body, literal_mapping_registry, opt)
437
+ end
438
+ end
439
+
440
+ def request_rpc_enc(request, mapping_registry, opt)
441
+ param = Mapping.soap2obj(request, mapping_registry, nil, opt)
442
+ request.collect { |key, value|
443
+ param[key]
444
+ }
445
+ end
446
+
447
+ def request_rpc_lit(request, mapping_registry, opt)
448
+ request.collect { |key, value|
449
+ Mapping.soap2obj(value, mapping_registry, nil, opt)
450
+ }
451
+ end
452
+
453
+ def request_doc_enc(body, mapping_registry, opt)
454
+ body.collect { |key, value|
455
+ Mapping.soap2obj(value, mapping_registry, nil, opt)
456
+ }
457
+ end
458
+
459
+ def request_doc_lit(body, mapping_registry, opt)
460
+ body.collect { |key, value|
461
+ Mapping.soap2obj(value, mapping_registry, nil, opt)
462
+ }
463
+ end
464
+
465
+ def response_rpc(result, mapping_registry, literal_mapping_registry, opt)
466
+ if @response_use == :encoded
467
+ response_rpc_enc(result, mapping_registry, opt)
468
+ else
469
+ response_rpc_lit(result, literal_mapping_registry, opt)
470
+ end
471
+ end
472
+
473
+ def response_doc(result, mapping_registry, literal_mapping_registry, opt)
474
+ if @doc_response_qnames.size == 0
475
+ result = []
476
+ elsif @doc_response_qnames.size == 1
477
+ result = [result]
478
+ end
479
+ if result.size != @doc_response_qnames.size
480
+ raise "required #{@doc_response_qnames.size} responses " +
481
+ "but #{result.size} given"
482
+ end
483
+ if @response_use == :encoded
484
+ response_doc_enc(result, mapping_registry, opt)
485
+ else
486
+ response_doc_lit(result, literal_mapping_registry, opt)
487
+ end
488
+ end
489
+
490
+ def response_rpc_enc(result, mapping_registry, opt)
491
+ soap_response =
492
+ @rpc_method_factory.create_method_response(@rpc_response_qname)
493
+ if soap_response.have_outparam?
494
+ unless result.is_a?(Array)
495
+ raise RPCRoutingError.new("out parameter was not returned")
496
+ end
497
+ outparams = {}
498
+ i = 1
499
+ soap_response.output_params.each do |outparam|
500
+ outparams[outparam] = Mapping.obj2soap(result[i], mapping_registry,
501
+ nil, opt)
502
+ i += 1
503
+ end
504
+ soap_response.set_outparam(outparams)
505
+ soap_response.retval = Mapping.obj2soap(result[0], mapping_registry,
506
+ nil, opt)
507
+ else
508
+ soap_response.retval = Mapping.obj2soap(result, mapping_registry, nil,
509
+ opt)
510
+ end
511
+ soap_response
512
+ end
513
+
514
+ def response_rpc_lit(result, mapping_registry, opt)
515
+ soap_response =
516
+ @rpc_method_factory.create_method_response(@rpc_response_qname)
517
+ if soap_response.have_outparam?
518
+ unless result.is_a?(Array)
519
+ raise RPCRoutingError.new("out parameter was not returned")
520
+ end
521
+ outparams = {}
522
+ i = 1
523
+ soap_response.output_params.each do |outparam|
524
+ outparams[outparam] = Mapping.obj2soap(result[i], mapping_registry,
525
+ XSD::QName.new(nil, outparam), opt)
526
+ i += 1
527
+ end
528
+ soap_response.set_outparam(outparams)
529
+ soap_response.retval = Mapping.obj2soap(result[0], mapping_registry,
530
+ XSD::QName.new(nil, soap_response.elename), opt)
531
+ else
532
+ soap_response.retval = Mapping.obj2soap(result, mapping_registry,
533
+ XSD::QName.new(nil, soap_response.elename), opt)
534
+ end
535
+ soap_response
536
+ end
537
+
538
+ def response_doc_enc(result, mapping_registry, opt)
539
+ (0...result.size).collect { |idx|
540
+ ele = Mapping.obj2soap(result[idx], mapping_registry, nil, opt)
541
+ ele.elename = @doc_response_qnames[idx]
542
+ ele.qualified = @doc_response_qualified[idx]
543
+ ele
544
+ }
545
+ end
546
+
547
+ def response_doc_lit(result, mapping_registry, opt)
548
+ (0...result.size).collect { |idx|
549
+ ele = Mapping.obj2soap(result[idx], mapping_registry,
550
+ @doc_response_qnames[idx])
551
+ ele.encodingstyle = LiteralNamespace
552
+ ele.qualified = @doc_response_qualified[idx]
553
+ ele
554
+ }
555
+ end
556
+
557
+ def check_style(style)
558
+ unless [:rpc, :document].include?(style)
559
+ raise ArgumentError.new("unknown style: #{style}")
560
+ end
561
+ end
562
+
563
+ def check_use(use)
564
+ unless [:encoded, :literal].include?(use)
565
+ raise ArgumentError.new("unknown use: #{use}")
566
+ end
567
+ end
568
+ end
569
+
570
+ class ApplicationScopeOperation < Operation
571
+ def initialize(soapaction, receiver, name, param_def, opt)
572
+ super(soapaction, name, param_def, opt)
573
+ @receiver = receiver
574
+ end
575
+
576
+ private
577
+
578
+ def receiver
579
+ @receiver
580
+ end
581
+ end
582
+
583
+ class RequestScopeOperation < Operation
584
+ def initialize(soapaction, receiver_factory, name, param_def, opt)
585
+ super(soapaction, name, param_def, opt)
586
+ unless receiver_factory.respond_to?(:create)
587
+ raise TypeError.new("factory must respond to 'create'")
588
+ end
589
+ @receiver_factory = receiver_factory
590
+ end
591
+
592
+ private
593
+
594
+ def receiver
595
+ @receiver_factory.create
596
+ end
597
+ end
598
+ end
599
+
600
+
601
+ end
602
+ end