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,12 @@
1
+ # SOAP4R - Ruby type mapping utility.
2
+ # Copyright (C) 2003 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/mapping/mapping'
10
+ require 'soap/mapping/registry'
11
+ require 'soap/mapping/encodedregistry'
12
+ require 'soap/mapping/literalregistry'
@@ -0,0 +1,531 @@
1
+ # SOAP4R - encoded mapping registry.
2
+ # Copyright (C) 2000-2003, 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/baseData'
10
+ require 'soap/mapping/mapping'
11
+ require 'soap/mapping/typeMap'
12
+ require 'soap/mapping/factory'
13
+ require 'soap/mapping/rubytypeFactory'
14
+
15
+
16
+ module SOAP
17
+ module Mapping
18
+
19
+
20
+ # Inner class to pass an exception.
21
+ class SOAPException
22
+ attr_reader :excn_type_name, :cause
23
+
24
+ def initialize(e)
25
+ @excn_type_name = Mapping.name2elename(e.class.to_s)
26
+ @cause = e
27
+ end
28
+
29
+ def to_e
30
+ if @cause.is_a?(::Exception)
31
+ @cause.extend(::SOAP::Mapping::MappedException)
32
+ return @cause
33
+ elsif @cause.respond_to?(:message) and @cause.respond_to?(:backtrace)
34
+ e = RuntimeError.new(@cause.message)
35
+ e.set_backtrace(@cause.backtrace)
36
+ return e
37
+ end
38
+ klass = Mapping.class_from_name(Mapping.elename2name(@excn_type_name.to_s))
39
+ if klass.nil? or not klass <= ::Exception
40
+ return RuntimeError.new(@cause.inspect)
41
+ end
42
+ obj = klass.new(@cause.message)
43
+ obj.extend(::SOAP::Mapping::MappedException)
44
+ obj
45
+ end
46
+ end
47
+
48
+
49
+ class EncodedRegistry
50
+ include TraverseSupport
51
+ include RegistrySupport
52
+
53
+ class Map
54
+ def initialize(registry)
55
+ @obj2soap = {}
56
+ @soap2obj = {}
57
+ @registry = registry
58
+ end
59
+
60
+ def obj2soap(obj)
61
+ klass = obj.class
62
+ if map = @obj2soap[klass]
63
+ map.each do |soap_class, factory, info|
64
+ ret = factory.obj2soap(soap_class, obj, info, @registry)
65
+ return ret if ret
66
+ end
67
+ end
68
+ ancestors = klass.ancestors
69
+ ancestors.delete(klass)
70
+ ancestors.delete(::Object)
71
+ ancestors.delete(::Kernel)
72
+ ancestors.each do |klass|
73
+ if map = @obj2soap[klass]
74
+ map.each do |soap_class, factory, info|
75
+ if info[:derived_class]
76
+ ret = factory.obj2soap(soap_class, obj, info, @registry)
77
+ return ret if ret
78
+ end
79
+ end
80
+ end
81
+ end
82
+ nil
83
+ end
84
+
85
+ def soap2obj(node, klass = nil)
86
+ if map = @soap2obj[node.class]
87
+ map.each do |obj_class, factory, info|
88
+ next if klass and obj_class != klass
89
+ conv, obj = factory.soap2obj(obj_class, node, info, @registry)
90
+ return true, obj if conv
91
+ end
92
+ end
93
+ return false, nil
94
+ end
95
+
96
+ # Give priority to former entry.
97
+ def init(init_map = [])
98
+ clear
99
+ init_map.reverse_each do |obj_class, soap_class, factory, info|
100
+ add(obj_class, soap_class, factory, info)
101
+ end
102
+ end
103
+
104
+ # Give priority to latter entry.
105
+ def add(obj_class, soap_class, factory, info)
106
+ info ||= {}
107
+ (@obj2soap[obj_class] ||= []).unshift([soap_class, factory, info])
108
+ (@soap2obj[soap_class] ||= []).unshift([obj_class, factory, info])
109
+ end
110
+
111
+ def clear
112
+ @obj2soap.clear
113
+ @soap2obj.clear
114
+ end
115
+
116
+ def find_mapped_soap_class(target_obj_class)
117
+ map = @obj2soap[target_obj_class]
118
+ map.empty? ? nil : map[0][1]
119
+ end
120
+
121
+ def find_mapped_obj_class(target_soap_class)
122
+ map = @soap2obj[target_soap_class]
123
+ map.empty? ? nil : map[0][0]
124
+ end
125
+ end
126
+
127
+ StringFactory = StringFactory_.new
128
+ BasetypeFactory = BasetypeFactory_.new
129
+ DateTimeFactory = DateTimeFactory_.new
130
+ ArrayFactory = ArrayFactory_.new
131
+ Base64Factory = Base64Factory_.new
132
+ URIFactory = URIFactory_.new
133
+ TypedArrayFactory = TypedArrayFactory_.new
134
+ TypedStructFactory = TypedStructFactory_.new
135
+
136
+ HashFactory = HashFactory_.new
137
+
138
+ SOAPBaseMap = [
139
+ [::NilClass, ::SOAP::SOAPNil, BasetypeFactory],
140
+ [::TrueClass, ::SOAP::SOAPBoolean, BasetypeFactory],
141
+ [::FalseClass, ::SOAP::SOAPBoolean, BasetypeFactory],
142
+ [::String, ::SOAP::SOAPString, StringFactory,
143
+ {:derived_class => true}],
144
+ [::DateTime, ::SOAP::SOAPDateTime, DateTimeFactory],
145
+ [::Date, ::SOAP::SOAPDate, DateTimeFactory],
146
+ [::Time, ::SOAP::SOAPDateTime, DateTimeFactory],
147
+ [::Time, ::SOAP::SOAPTime, DateTimeFactory],
148
+ [::Float, ::SOAP::SOAPDouble, BasetypeFactory,
149
+ {:derived_class => true}],
150
+ [::Float, ::SOAP::SOAPFloat, BasetypeFactory,
151
+ {:derived_class => true}],
152
+ [::Integer, ::SOAP::SOAPInt, BasetypeFactory,
153
+ {:derived_class => true}],
154
+ [::Integer, ::SOAP::SOAPLong, BasetypeFactory,
155
+ {:derived_class => true}],
156
+ [::Integer, ::SOAP::SOAPInteger, BasetypeFactory,
157
+ {:derived_class => true}],
158
+ [::Integer, ::SOAP::SOAPShort, BasetypeFactory,
159
+ {:derived_class => true}],
160
+ [::Integer, ::SOAP::SOAPByte, BasetypeFactory,
161
+ {:derived_class => true}],
162
+ [::Integer, ::SOAP::SOAPNonPositiveInteger, BasetypeFactory,
163
+ {:derived_class => true}],
164
+ [::Integer, ::SOAP::SOAPNegativeInteger, BasetypeFactory,
165
+ {:derived_class => true}],
166
+ [::Integer, ::SOAP::SOAPNonNegativeInteger, BasetypeFactory,
167
+ {:derived_class => true}],
168
+ [::Integer, ::SOAP::SOAPPositiveInteger, BasetypeFactory,
169
+ {:derived_class => true}],
170
+ [::Integer, ::SOAP::SOAPUnsignedLong, BasetypeFactory,
171
+ {:derived_class => true}],
172
+ [::Integer, ::SOAP::SOAPUnsignedInt, BasetypeFactory,
173
+ {:derived_class => true}],
174
+ [::Integer, ::SOAP::SOAPUnsignedShort, BasetypeFactory,
175
+ {:derived_class => true}],
176
+ [::Integer, ::SOAP::SOAPUnsignedByte, BasetypeFactory,
177
+ {:derived_class => true}],
178
+ [::URI::Generic, ::SOAP::SOAPAnyURI, URIFactory,
179
+ {:derived_class => true}],
180
+ [::String, ::SOAP::SOAPBase64, Base64Factory],
181
+ [::String, ::SOAP::SOAPHexBinary, Base64Factory],
182
+ [::String, ::SOAP::SOAPDecimal, BasetypeFactory],
183
+ [::String, ::SOAP::SOAPDuration, BasetypeFactory],
184
+ [::String, ::SOAP::SOAPGYearMonth, BasetypeFactory],
185
+ [::String, ::SOAP::SOAPGYear, BasetypeFactory],
186
+ [::String, ::SOAP::SOAPGMonthDay, BasetypeFactory],
187
+ [::String, ::SOAP::SOAPGDay, BasetypeFactory],
188
+ [::String, ::SOAP::SOAPGMonth, BasetypeFactory],
189
+ [::String, ::SOAP::SOAPQName, BasetypeFactory],
190
+
191
+ [::Hash, ::SOAP::SOAPArray, HashFactory],
192
+ [::Hash, ::SOAP::SOAPStruct, HashFactory],
193
+
194
+ [::Array, ::SOAP::SOAPArray, ArrayFactory,
195
+ {:derived_class => true}],
196
+
197
+ [::SOAP::Mapping::SOAPException,
198
+ ::SOAP::SOAPStruct, TypedStructFactory,
199
+ {:type => XSD::QName.new(RubyCustomTypeNamespace, "SOAPException")}],
200
+ ]
201
+
202
+ RubyOriginalMap = [
203
+ [::NilClass, ::SOAP::SOAPNil, BasetypeFactory],
204
+ [::TrueClass, ::SOAP::SOAPBoolean, BasetypeFactory],
205
+ [::FalseClass, ::SOAP::SOAPBoolean, BasetypeFactory],
206
+ [::String, ::SOAP::SOAPString, StringFactory],
207
+ [::DateTime, ::SOAP::SOAPDateTime, DateTimeFactory],
208
+ [::Date, ::SOAP::SOAPDate, DateTimeFactory],
209
+ [::Time, ::SOAP::SOAPDateTime, DateTimeFactory],
210
+ [::Time, ::SOAP::SOAPTime, DateTimeFactory],
211
+ [::Float, ::SOAP::SOAPDouble, BasetypeFactory,
212
+ {:derived_class => true}],
213
+ [::Float, ::SOAP::SOAPFloat, BasetypeFactory,
214
+ {:derived_class => true}],
215
+ [::Integer, ::SOAP::SOAPInt, BasetypeFactory,
216
+ {:derived_class => true}],
217
+ [::Integer, ::SOAP::SOAPLong, BasetypeFactory,
218
+ {:derived_class => true}],
219
+ [::Integer, ::SOAP::SOAPInteger, BasetypeFactory,
220
+ {:derived_class => true}],
221
+ [::Integer, ::SOAP::SOAPShort, BasetypeFactory,
222
+ {:derived_class => true}],
223
+ [::Integer, ::SOAP::SOAPByte, BasetypeFactory,
224
+ {:derived_class => true}],
225
+ [::Integer, ::SOAP::SOAPNonPositiveInteger, BasetypeFactory,
226
+ {:derived_class => true}],
227
+ [::Integer, ::SOAP::SOAPNegativeInteger, BasetypeFactory,
228
+ {:derived_class => true}],
229
+ [::Integer, ::SOAP::SOAPNonNegativeInteger, BasetypeFactory,
230
+ {:derived_class => true}],
231
+ [::Integer, ::SOAP::SOAPPositiveInteger, BasetypeFactory,
232
+ {:derived_class => true}],
233
+ [::Integer, ::SOAP::SOAPUnsignedLong, BasetypeFactory,
234
+ {:derived_class => true}],
235
+ [::Integer, ::SOAP::SOAPUnsignedInt, BasetypeFactory,
236
+ {:derived_class => true}],
237
+ [::Integer, ::SOAP::SOAPUnsignedShort, BasetypeFactory,
238
+ {:derived_class => true}],
239
+ [::Integer, ::SOAP::SOAPUnsignedByte, BasetypeFactory,
240
+ {:derived_class => true}],
241
+ [::URI::Generic, ::SOAP::SOAPAnyURI, URIFactory,
242
+ {:derived_class => true}],
243
+ [::String, ::SOAP::SOAPBase64, Base64Factory],
244
+ [::String, ::SOAP::SOAPHexBinary, Base64Factory],
245
+ [::String, ::SOAP::SOAPDecimal, BasetypeFactory],
246
+ [::String, ::SOAP::SOAPDuration, BasetypeFactory],
247
+ [::String, ::SOAP::SOAPGYearMonth, BasetypeFactory],
248
+ [::String, ::SOAP::SOAPGYear, BasetypeFactory],
249
+ [::String, ::SOAP::SOAPGMonthDay, BasetypeFactory],
250
+ [::String, ::SOAP::SOAPGDay, BasetypeFactory],
251
+ [::String, ::SOAP::SOAPGMonth, BasetypeFactory],
252
+ [::String, ::SOAP::SOAPQName, BasetypeFactory],
253
+
254
+ [::Hash, ::SOAP::SOAPArray, HashFactory],
255
+ [::Hash, ::SOAP::SOAPStruct, HashFactory],
256
+
257
+ # Does not allow Array's subclass here.
258
+ [::Array, ::SOAP::SOAPArray, ArrayFactory],
259
+
260
+ [::SOAP::Mapping::SOAPException,
261
+ ::SOAP::SOAPStruct, TypedStructFactory,
262
+ {:type => XSD::QName.new(RubyCustomTypeNamespace, "SOAPException")}],
263
+ ]
264
+
265
+ attr_accessor :default_factory
266
+ attr_accessor :excn_handler_obj2soap
267
+ attr_accessor :excn_handler_soap2obj
268
+
269
+ def initialize(config = {})
270
+ super()
271
+ @config = config
272
+ @map = Map.new(self)
273
+ if @config[:allow_original_mapping]
274
+ @allow_original_mapping = true
275
+ @map.init(RubyOriginalMap)
276
+ else
277
+ @allow_original_mapping = false
278
+ @map.init(SOAPBaseMap)
279
+ end
280
+ @allow_untyped_struct = @config.key?(:allow_untyped_struct) ?
281
+ @config[:allow_untyped_struct] : true
282
+ @rubytype_factory = RubytypeFactory.new(
283
+ :allow_untyped_struct => @allow_untyped_struct,
284
+ :allow_original_mapping => @allow_original_mapping
285
+ )
286
+ @default_factory = @rubytype_factory
287
+ @excn_handler_obj2soap = nil
288
+ @excn_handler_soap2obj = nil
289
+ end
290
+
291
+ # initial mapping interface
292
+ # new interface Registry#register is defined in RegisterSupport
293
+ def add(obj_class, soap_class, factory, info = nil)
294
+ @map.add(obj_class, soap_class, factory, info)
295
+ end
296
+ alias set add
297
+
298
+ # general Registry ignores type_qname
299
+ def obj2soap(obj, type_qname = nil)
300
+ soap = _obj2soap(obj)
301
+ if @allow_original_mapping
302
+ addextend2soap(soap, obj)
303
+ end
304
+ soap
305
+ end
306
+
307
+ def soap2obj(node, klass = nil)
308
+ obj = _soap2obj(node, klass)
309
+ if @allow_original_mapping
310
+ addextend2obj(obj, node.extraattr[RubyExtendName])
311
+ addiv2obj(obj, node.extraattr[RubyIVarName])
312
+ end
313
+ obj
314
+ end
315
+
316
+ def find_mapped_soap_class(obj_class)
317
+ @map.find_mapped_soap_class(obj_class)
318
+ end
319
+
320
+ def find_mapped_obj_class(soap_class)
321
+ @map.find_mapped_obj_class(soap_class)
322
+ end
323
+
324
+ private
325
+
326
+ def _obj2soap(obj)
327
+ ret = nil
328
+ if obj.is_a?(SOAPStruct) or obj.is_a?(SOAPArray)
329
+ obj.replace do |ele|
330
+ Mapping._obj2soap(ele, self)
331
+ end
332
+ return obj
333
+ elsif obj.is_a?(SOAPBasetype)
334
+ return obj
335
+ end
336
+ begin
337
+ if definition = schema_definition_from_class(obj.class)
338
+ return stubobj2soap(obj, definition)
339
+ end
340
+ ret = @map.obj2soap(obj) ||
341
+ @default_factory.obj2soap(nil, obj, nil, self)
342
+ return ret if ret
343
+ rescue MappingError
344
+ end
345
+ if @excn_handler_obj2soap
346
+ ret = @excn_handler_obj2soap.call(obj) { |yield_obj|
347
+ Mapping._obj2soap(yield_obj, self)
348
+ }
349
+ return ret if ret
350
+ end
351
+ raise MappingError.new("Cannot map #{ obj.class.name } to SOAP/OM.")
352
+ end
353
+
354
+ # Might return nil as a mapping result.
355
+ def _soap2obj(node, klass = nil)
356
+ if klass
357
+ definition = schema_definition_from_class(klass)
358
+ else
359
+ if definition = schema_definition_from_elename(node.elename)
360
+ klass = definition.class_for
361
+ elsif definition = schema_definition_from_type(node.type)
362
+ klass = definition.class_for
363
+ end
364
+ end
365
+ if definition and node.is_a?(::SOAP::SOAPStruct)
366
+ return elesoap2stubobj(node, klass, definition)
367
+ end
368
+ if node.extraattr.key?(RubyTypeName)
369
+ conv, obj = @rubytype_factory.soap2obj(nil, node, nil, self)
370
+ return obj if conv
371
+ end
372
+ conv, obj = @map.soap2obj(node, klass)
373
+ return obj if conv
374
+ conv, obj = @default_factory.soap2obj(nil, node, nil, self)
375
+ return obj if conv
376
+ if @excn_handler_soap2obj
377
+ begin
378
+ return @excn_handler_soap2obj.call(node) { |yield_node|
379
+ Mapping._soap2obj(yield_node, self)
380
+ }
381
+ rescue Exception
382
+ end
383
+ end
384
+ raise MappingError.new("Cannot map #{ node.type.name } to Ruby object.")
385
+ end
386
+
387
+ def addiv2obj(obj, attr)
388
+ return unless attr
389
+ vars = {}
390
+ attr.__getobj__.each do |name, value|
391
+ vars[name] = Mapping._soap2obj(value, self)
392
+ end
393
+ Mapping.set_attributes(obj, vars)
394
+ end
395
+
396
+ if RUBY_VERSION >= '1.8.0'
397
+ def addextend2obj(obj, attr)
398
+ return unless attr
399
+ attr.split(/ /).reverse_each do |mstr|
400
+ obj.extend(Mapping.module_from_name(mstr))
401
+ end
402
+ end
403
+ else
404
+ # (class < false; self; end).ancestors includes "TrueClass" under 1.6...
405
+ def addextend2obj(obj, attr)
406
+ return unless attr
407
+ attr.split(/ /).reverse_each do |mstr|
408
+ m = Mapping.module_from_name(mstr)
409
+ obj.extend(m)
410
+ end
411
+ end
412
+ end
413
+
414
+ def addextend2soap(node, obj)
415
+ return if obj.is_a?(Symbol) or obj.is_a?(Fixnum)
416
+ list = (class << obj; self; end).ancestors - obj.class.ancestors
417
+ unless list.empty?
418
+ node.extraattr[RubyExtendName] = list.collect { |c|
419
+ name = c.name
420
+ if name.nil? or name.empty?
421
+ raise TypeError.new("singleton can't be dumped #{ obj }")
422
+ end
423
+ name
424
+ }.join(" ")
425
+ end
426
+ end
427
+
428
+ def stubobj2soap(obj, definition)
429
+ case obj
430
+ when ::Array
431
+ array2soap(obj, definition)
432
+ else
433
+ return unknownstubobj2soap(obj, definition)
434
+ end
435
+ end
436
+
437
+ def array2soap(obj, definition)
438
+ return SOAPNil.new if obj.nil? # ToDo: check nillable.
439
+ arytype = definition.elements[0].elename
440
+ soap_obj = SOAPArray.new(ValueArrayName, 1, arytype)
441
+ mark_marshalled_obj(obj, soap_obj)
442
+ obj.each do |item|
443
+ soap_obj.add(Mapping._obj2soap(item, self, arytype))
444
+ end
445
+ soap_obj
446
+ end
447
+
448
+ def unknownstubobj2soap(obj, definition)
449
+ return SOAPNil.new if obj.nil?
450
+ if definition.elements.size == 0
451
+ ele = Mapping.obj2soap(obj)
452
+ ele.elename = definition.elename if definition.elename
453
+ return ele
454
+ else
455
+ ele = SOAPStruct.new(definition.type)
456
+ mark_marshalled_obj(obj, ele)
457
+ end
458
+ definition.elements.each do |eledef|
459
+ name = eledef.elename.name
460
+ if child = Mapping.get_attribute(obj, eledef.varname)
461
+ if eledef.as_array?
462
+ child.each do |item|
463
+ ele.add(name, Mapping._obj2soap(item, self))
464
+ end
465
+ else
466
+ ele.add(name, Mapping._obj2soap(child, self))
467
+ end
468
+ elsif obj.respond_to?(:each) and eledef.as_array?
469
+ obj.each do |item|
470
+ ele.add(name, Mapping._obj2soap(item, self))
471
+ end
472
+ end
473
+ end
474
+ ele
475
+ end
476
+
477
+ def elesoap2stubobj(node, obj_class, definition)
478
+ obj = Mapping.create_empty_object(obj_class)
479
+ add_elesoap2stubobj(node, obj, definition)
480
+ obj
481
+ end
482
+
483
+ # XXX consider to merge with the method in LiteralRegistry
484
+ def add_elesoap2stubobj(node, obj, definition)
485
+ vars = {}
486
+ node.each do |name, value|
487
+ item = definition.elements.find { |k, v|
488
+ k.elename == value.elename
489
+ }
490
+ if item
491
+ child = soap2typedobj(value, item.mapped_class)
492
+ else
493
+ # unknown element is treated as anyType.
494
+ child = Mapping._soap2obj(value, self)
495
+ end
496
+ if item and item.as_array?
497
+ (vars[name] ||= []) << child
498
+ elsif vars.key?(name)
499
+ vars[name] = [vars[name], child].flatten
500
+ else
501
+ vars[name] = child
502
+ end
503
+ end
504
+ if obj.is_a?(::Array) and vars.keys.size == 1
505
+ obj.replace(vars.values[0])
506
+ else
507
+ Mapping.set_attributes(obj, vars)
508
+ end
509
+ end
510
+
511
+ def soap2typedobj(value, klass)
512
+ unless klass
513
+ raise MappingError.new("unknown class: #{klass}")
514
+ end
515
+ if klass.ancestors.include?(::SOAP::SOAPBasetype)
516
+ obj = base2obj(value, klass)
517
+ else
518
+ obj = Mapping._soap2obj(value, self, klass)
519
+ end
520
+ obj
521
+ end
522
+ end
523
+
524
+
525
+ Registry = EncodedRegistry
526
+ DefaultRegistry = EncodedRegistry.new
527
+ RubyOriginalRegistry = EncodedRegistry.new(:allow_original_mapping => true)
528
+
529
+
530
+ end
531
+ end