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,82 @@
1
+ # SOAP4R - Base type mapping definition
2
+ # Copyright (C) 2000, 2001, 2002, 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
+ module SOAP
10
+
11
+
12
+ TypeMap = {
13
+ XSD::XSDAnySimpleType::Type => SOAPAnySimpleType,
14
+
15
+ XSD::XSDString::Type => SOAPString,
16
+ XSD::XSDBoolean::Type => SOAPBoolean,
17
+ XSD::XSDDecimal::Type => SOAPDecimal,
18
+ XSD::XSDFloat::Type => SOAPFloat,
19
+ XSD::XSDDouble::Type => SOAPDouble,
20
+ XSD::XSDDuration::Type => SOAPDuration,
21
+ XSD::XSDDateTime::Type => SOAPDateTime,
22
+ XSD::XSDTime::Type => SOAPTime,
23
+ XSD::XSDDate::Type => SOAPDate,
24
+ XSD::XSDGYearMonth::Type => SOAPGYearMonth,
25
+ XSD::XSDGYear::Type => SOAPGYear,
26
+ XSD::XSDGMonthDay::Type => SOAPGMonthDay,
27
+ XSD::XSDGDay::Type => SOAPGDay,
28
+ XSD::XSDGMonth::Type => SOAPGMonth,
29
+ XSD::XSDHexBinary::Type => SOAPHexBinary,
30
+ XSD::XSDBase64Binary::Type => SOAPBase64,
31
+ XSD::XSDAnyURI::Type => SOAPAnyURI,
32
+ XSD::XSDQName::Type => SOAPQName,
33
+ XSD::XSDInteger::Type => SOAPInteger,
34
+ XSD::XSDNonPositiveInteger::Type => SOAPNonPositiveInteger,
35
+ XSD::XSDNegativeInteger::Type => SOAPNegativeInteger,
36
+ XSD::XSDLong::Type => SOAPLong,
37
+ XSD::XSDInt::Type => SOAPInt,
38
+ XSD::XSDShort::Type => SOAPShort,
39
+ XSD::XSDByte::Type => SOAPByte,
40
+ XSD::XSDNonNegativeInteger::Type => SOAPNonNegativeInteger,
41
+ XSD::XSDUnsignedLong::Type => SOAPUnsignedLong,
42
+ XSD::XSDUnsignedInt::Type => SOAPUnsignedInt,
43
+ XSD::XSDUnsignedShort::Type => SOAPUnsignedShort,
44
+ XSD::XSDUnsignedByte::Type => SOAPUnsignedByte,
45
+ XSD::XSDPositiveInteger::Type => SOAPPositiveInteger,
46
+
47
+ # soap4r does not use soapenc types actively but it should be accepted.
48
+ SOAP::SOAPString::SOAPENCType => SOAPString,
49
+ SOAP::SOAPBoolean::SOAPENCType => SOAPBoolean,
50
+ SOAP::SOAPDecimal::SOAPENCType => SOAPDecimal,
51
+ SOAP::SOAPFloat::SOAPENCType => SOAPFloat,
52
+ SOAP::SOAPDouble::SOAPENCType => SOAPDouble,
53
+ SOAP::SOAPDuration::SOAPENCType => SOAPDuration,
54
+ SOAP::SOAPDateTime::SOAPENCType => SOAPDateTime,
55
+ SOAP::SOAPTime::SOAPENCType => SOAPTime,
56
+ SOAP::SOAPDate::SOAPENCType => SOAPDate,
57
+ SOAP::SOAPGYearMonth::SOAPENCType => SOAPGYearMonth,
58
+ SOAP::SOAPGYear::SOAPENCType => SOAPGYear,
59
+ SOAP::SOAPGMonthDay::SOAPENCType => SOAPGMonthDay,
60
+ SOAP::SOAPGDay::SOAPENCType => SOAPGDay,
61
+ SOAP::SOAPGMonth::SOAPENCType => SOAPGMonth,
62
+ SOAP::SOAPHexBinary::SOAPENCType => SOAPHexBinary,
63
+ SOAP::SOAPBase64::SOAPENCType => SOAPBase64,
64
+ SOAP::SOAPAnyURI::SOAPENCType => SOAPAnyURI,
65
+ SOAP::SOAPQName::SOAPENCType => SOAPQName,
66
+ SOAP::SOAPInteger::SOAPENCType => SOAPInteger,
67
+ SOAP::SOAPNonPositiveInteger::SOAPENCType => SOAPNonPositiveInteger,
68
+ SOAP::SOAPNegativeInteger::SOAPENCType => SOAPNegativeInteger,
69
+ SOAP::SOAPLong::SOAPENCType => SOAPLong,
70
+ SOAP::SOAPInt::SOAPENCType => SOAPInt,
71
+ SOAP::SOAPShort::SOAPENCType => SOAPShort,
72
+ SOAP::SOAPByte::SOAPENCType => SOAPByte,
73
+ SOAP::SOAPNonNegativeInteger::SOAPENCType => SOAPNonNegativeInteger,
74
+ SOAP::SOAPUnsignedLong::SOAPENCType => SOAPUnsignedLong,
75
+ SOAP::SOAPUnsignedInt::SOAPENCType => SOAPUnsignedInt,
76
+ SOAP::SOAPUnsignedShort::SOAPENCType => SOAPUnsignedShort,
77
+ SOAP::SOAPUnsignedByte::SOAPENCType => SOAPUnsignedByte,
78
+ SOAP::SOAPPositiveInteger::SOAPENCType => SOAPPositiveInteger,
79
+ }
80
+
81
+
82
+ end
@@ -0,0 +1,253 @@
1
+ # SOAP4R - WSDL encoded mapping registry.
2
+ # Copyright (C) 2000-2003, 2005, 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 'xsd/qname'
10
+ require 'xsd/namedelements'
11
+ require 'soap/baseData'
12
+ require 'soap/mapping/mapping'
13
+ require 'soap/mapping/typeMap'
14
+
15
+
16
+ module SOAP
17
+ module Mapping
18
+
19
+
20
+ class WSDLEncodedRegistry < EncodedRegistry
21
+ attr_reader :definedelements
22
+ attr_reader :definedtypes
23
+
24
+ def initialize(definedtypes = XSD::NamedElements::Empty)
25
+ super()
26
+ @definedtypes = definedtypes
27
+ # @definedelements = definedelements needed?
28
+ # For mapping AnyType element.
29
+ @rubytype_factory = RubytypeFactory.new(
30
+ :allow_untyped_struct => true,
31
+ :allow_original_mapping => true
32
+ )
33
+ end
34
+
35
+ def obj2soap(obj, qname = nil)
36
+ soap_obj = nil
37
+ if type = @definedtypes[qname]
38
+ soap_obj = obj2typesoap(obj, type)
39
+ else
40
+ soap_obj = any2soap(obj, qname)
41
+ end
42
+ return soap_obj if soap_obj
43
+ if @excn_handler_obj2soap
44
+ soap_obj = @excn_handler_obj2soap.call(obj) { |yield_obj|
45
+ Mapping._obj2soap(yield_obj, self)
46
+ }
47
+ return soap_obj if soap_obj
48
+ end
49
+ if qname
50
+ raise MappingError.new("cannot map #{obj.class.name} as #{qname}")
51
+ else
52
+ raise MappingError.new("cannot map #{obj.class.name} to SOAP/OM")
53
+ end
54
+ end
55
+
56
+ # map anything for now: must refer WSDL while mapping. [ToDo]
57
+ def soap2obj(node, obj_class = nil)
58
+ begin
59
+ return any2obj(node, obj_class)
60
+ rescue MappingError
61
+ end
62
+ if @excn_handler_soap2obj
63
+ begin
64
+ return @excn_handler_soap2obj.call(node) { |yield_node|
65
+ Mapping._soap2obj(yield_node, self)
66
+ }
67
+ rescue Exception
68
+ end
69
+ end
70
+ raise MappingError.new("cannot map #{node.type.name} to Ruby object")
71
+ end
72
+
73
+ private
74
+
75
+ def any2soap(obj, qname)
76
+ ele = nil
77
+ if obj.nil?
78
+ ele = SOAPNil.new
79
+ elsif qname.nil? or qname == XSD::AnyTypeName
80
+ ele = @rubytype_factory.obj2soap(nil, obj, nil, self)
81
+ elsif obj.is_a?(XSD::NSDBase)
82
+ ele = soap2soap(obj, qname)
83
+ elsif type = TypeMap[qname]
84
+ ele = base2soap(obj, type)
85
+ end
86
+ add_attributes2soap(obj, ele) unless ele.nil?
87
+ ele
88
+ end
89
+
90
+ def soap2soap(obj, type_qname)
91
+ if obj.is_a?(SOAPBasetype)
92
+ obj
93
+ elsif obj.is_a?(SOAPStruct) && (type = @definedtypes[type_qname])
94
+ soap_obj = obj
95
+ mark_marshalled_obj(obj, soap_obj)
96
+ elements2soap(obj, soap_obj, type.elements)
97
+ soap_obj
98
+ elsif obj.is_a?(SOAPArray) && (type = @definedtypes[type_qname])
99
+ soap_obj = obj
100
+ contenttype = type.child_type
101
+ mark_marshalled_obj(obj, soap_obj)
102
+ obj.replace do |ele|
103
+ Mapping._obj2soap(ele, self, contenttype)
104
+ end
105
+ soap_obj
106
+ else
107
+ nil
108
+ end
109
+ end
110
+
111
+ def obj2typesoap(obj, type)
112
+ if type.is_a?(::WSDL::XMLSchema::SimpleType)
113
+ simpleobj2soap(obj, type)
114
+ else
115
+ complexobj2soap(obj, type)
116
+ end
117
+ end
118
+
119
+ def simpleobj2soap(obj, type)
120
+ type.check_lexical_format(obj)
121
+ return SOAPNil.new if obj.nil? # TODO: check nillable.
122
+ if type.base
123
+ ele = base2soap(obj, TypeMap[type.base])
124
+ ele.type = type.name
125
+ elsif type.list
126
+ value = obj.is_a?(Array) ? obj.join(" ") : obj.to_s
127
+ ele = base2soap(value, SOAP::SOAPString)
128
+ else
129
+ raise MappingError.new("unsupported simpleType: #{type}")
130
+ end
131
+ ele
132
+ end
133
+
134
+ def complexobj2soap(obj, type)
135
+ case type.compoundtype
136
+ when :TYPE_STRUCT
137
+ struct2soap(obj, type.name, type)
138
+ when :TYPE_ARRAY
139
+ array2soap(obj, type.name, type)
140
+ when :TYPE_MAP
141
+ map2soap(obj, type.name, type)
142
+ when :TYPE_SIMPLE
143
+ simpleobj2soap(obj, type.simplecontent)
144
+ when :TYPE_EMPTY
145
+ raise MappingError.new("should be empty") unless obj.nil?
146
+ SOAPNil.new
147
+ else
148
+ raise MappingError.new("unknown compound type: #{type.compoundtype}")
149
+ end
150
+ end
151
+
152
+ def struct2soap(obj, type_qname, type)
153
+ return SOAPNil.new if obj.nil? # ToDo: check nillable.
154
+ soap_obj = SOAPStruct.new(type_qname)
155
+ mark_marshalled_obj(obj, soap_obj)
156
+ elements2soap(obj, soap_obj, type.elements)
157
+ soap_obj
158
+ end
159
+
160
+ def array2soap(obj, type_qname, type)
161
+ return SOAPNil.new if obj.nil? # ToDo: check nillable.
162
+ arytype = type.child_type
163
+ soap_obj = SOAPArray.new(ValueArrayName, 1, arytype)
164
+ unless obj.nil?
165
+ mark_marshalled_obj(obj, soap_obj)
166
+ obj.each do |item|
167
+ soap_obj.add(Mapping._obj2soap(item, self, arytype))
168
+ end
169
+ end
170
+ soap_obj
171
+ end
172
+
173
+ MapKeyName = XSD::QName.new(nil, "key")
174
+ MapValueName = XSD::QName.new(nil, "value")
175
+ def map2soap(obj, type_qname, type)
176
+ return SOAPNil.new if obj.nil? # ToDo: check nillable.
177
+ keytype = type.child_type(MapKeyName) || XSD::AnyTypeName
178
+ valuetype = type.child_type(MapValueName) || XSD::AnyTypeName
179
+ soap_obj = SOAPStruct.new(MapQName)
180
+ unless obj.nil?
181
+ mark_marshalled_obj(obj, soap_obj)
182
+ obj.each do |key, value|
183
+ elem = SOAPStruct.new
184
+ elem.add("key", Mapping._obj2soap(key, self, keytype))
185
+ elem.add("value", Mapping._obj2soap(value, self, valuetype))
186
+ # ApacheAxis allows only 'item' here.
187
+ soap_obj.add("item", elem)
188
+ end
189
+ end
190
+ soap_obj
191
+ end
192
+
193
+ def elements2soap(obj, soap_obj, elements)
194
+ elements.each do |element|
195
+ name = element.name.name
196
+ child_obj = Mapping.get_attribute(obj, name)
197
+ soap_obj.add(name,
198
+ Mapping._obj2soap(child_obj, self, element.type || element.name))
199
+ end
200
+ end
201
+
202
+ def any2obj(node, obj_class)
203
+ unless obj_class
204
+ typestr = XSD::CodeGen::GenSupport.safeconstname(node.elename.name)
205
+ obj_class = Mapping.class_from_name(typestr)
206
+ end
207
+ if obj_class and obj_class.class_variables.include?('@@schema_element')
208
+ soap2stubobj(node, obj_class)
209
+ else
210
+ Mapping._soap2obj(node, Mapping::DefaultRegistry, obj_class)
211
+ end
212
+ end
213
+
214
+ def soap2stubobj(node, obj_class)
215
+ obj = Mapping.create_empty_object(obj_class)
216
+ unless node.is_a?(SOAPNil)
217
+ add_elements2stubobj(node, obj)
218
+ end
219
+ obj
220
+ end
221
+
222
+ def add_elements2stubobj(node, obj)
223
+ definition = Mapping.schema_definition_classdef(obj.class)
224
+ vars = {}
225
+ node.each do |name, value|
226
+ item = definition.elements.find { |k, v| k.elename == value.elename }
227
+ if item and item.mapped_class
228
+ # klass must be a SOAPBasetype or a class
229
+ if item.mapped_class.ancestors.include?(::SOAP::SOAPBasetype)
230
+ if value.respond_to?(:data)
231
+ child = item.mapped_class.new(value.data).data
232
+ else
233
+ child = item.mapped_class.new(nil).data
234
+ end
235
+ else
236
+ child = Mapping._soap2obj(value, self, item.mapped_class)
237
+ end
238
+ else # untyped element is treated as anyType.
239
+ child = Mapping._soap2obj(value, self)
240
+ end
241
+ if item and item.as_array?
242
+ (vars[name] ||= []) << child
243
+ else
244
+ vars[name] = child
245
+ end
246
+ end
247
+ Mapping.set_attributes(obj, vars)
248
+ end
249
+ end
250
+
251
+
252
+ end
253
+ end
@@ -0,0 +1,246 @@
1
+ # SOAP4R - WSDL literal mapping registry.
2
+ # Copyright (C) 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/baseData'
10
+ require 'soap/mapping/mapping'
11
+ require 'soap/mapping/literalregistry'
12
+ require 'soap/mapping/typeMap'
13
+ require 'xsd/codegen/gensupport'
14
+ require 'xsd/namedelements'
15
+
16
+
17
+ module SOAP
18
+ module Mapping
19
+
20
+
21
+ class WSDLLiteralRegistry < LiteralRegistry
22
+ attr_reader :definedelements
23
+ attr_reader :definedtypes
24
+
25
+ def initialize(definedtypes = XSD::NamedElements::Empty,
26
+ definedelements = XSD::NamedElements::Empty)
27
+ super()
28
+ @definedtypes = definedtypes
29
+ @definedelements = definedelements
30
+ end
31
+
32
+ def obj2soap(obj, qname)
33
+ soap_obj = nil
34
+ if obj.is_a?(SOAPElement)
35
+ soap_obj = obj
36
+ elsif eledef = @definedelements[qname]
37
+ soap_obj = obj2elesoap(obj, eledef)
38
+ elsif type = @definedtypes[qname]
39
+ soap_obj = obj2typesoap(obj, type)
40
+ else
41
+ soap_obj = any2soap(obj, qname)
42
+ end
43
+ return soap_obj if soap_obj
44
+ if @excn_handler_obj2soap
45
+ soap_obj = @excn_handler_obj2soap.call(obj) { |yield_obj|
46
+ Mapping.obj2soap(yield_obj, nil, nil, MAPPING_OPT)
47
+ }
48
+ return soap_obj if soap_obj
49
+ end
50
+ raise MappingError.new("cannot map #{obj.class.name} as #{qname}")
51
+ end
52
+
53
+ # node should be a SOAPElement
54
+ def soap2obj(node, obj_class = nil)
55
+ # obj_class is given when rpc/literal service. but ignored for now.
56
+ begin
57
+ return any2obj(node)
58
+ rescue MappingError
59
+ end
60
+ if @excn_handler_soap2obj
61
+ begin
62
+ return @excn_handler_soap2obj.call(node) { |yield_node|
63
+ Mapping.soap2obj(yield_node, nil, nil, MAPPING_OPT)
64
+ }
65
+ rescue Exception
66
+ end
67
+ end
68
+ if node.respond_to?(:type)
69
+ raise MappingError.new("cannot map #{node.type.name} to Ruby object")
70
+ else
71
+ raise MappingError.new("cannot map #{node.elename.name} to Ruby object")
72
+ end
73
+ end
74
+
75
+ private
76
+
77
+ def obj2elesoap(obj, eledef)
78
+ ele = nil
79
+ qualified = (eledef.elementform == 'qualified')
80
+ if eledef.type
81
+ if type = @definedtypes[eledef.type]
82
+ ele = obj2typesoap(obj, type)
83
+ elsif type = TypeMap[eledef.type]
84
+ ele = base2soap(obj, type)
85
+ else
86
+ raise MappingError.new("cannot find type #{eledef.type}")
87
+ end
88
+ elsif eledef.local_complextype
89
+ ele = obj2typesoap(obj, eledef.local_complextype)
90
+ elsif eledef.local_simpletype
91
+ ele = obj2typesoap(obj, eledef.local_simpletype)
92
+ else
93
+ raise MappingError.new('illegal schema?')
94
+ end
95
+ ele.elename = eledef.name
96
+ ele.qualified = qualified
97
+ ele
98
+ end
99
+
100
+ def obj2typesoap(obj, type)
101
+ ele = nil
102
+ if type.is_a?(::WSDL::XMLSchema::SimpleType)
103
+ ele = simpleobj2soap(obj, type)
104
+ elsif type.simplecontent
105
+ ele = simpleobj2soap(obj, type.simplecontent)
106
+ else
107
+ ele = complexobj2soap(obj, type)
108
+ end
109
+ add_attributes2soap(obj, ele)
110
+ ele
111
+ end
112
+
113
+ def simpleobj2soap(obj, type)
114
+ type.check_lexical_format(obj)
115
+ return SOAPNil.new if obj.nil? # TODO: check nillable.
116
+ if type.base
117
+ ele = base2soap(obj, TypeMap[type.base])
118
+ elsif type.list
119
+ value = obj.is_a?(Array) ? obj.join(" ") : obj.to_s
120
+ ele = base2soap(value, SOAP::SOAPString)
121
+ else
122
+ raise MappingError.new("unsupported simpleType: #{type}")
123
+ end
124
+ ele
125
+ end
126
+
127
+ def complexobj2soap(obj, type)
128
+ ele = SOAPElement.new(type.name)
129
+ if type.choice?
130
+ complexobj2choicesoap(obj, ele, type)
131
+ else
132
+ complexobj2sequencesoap(obj, ele, type)
133
+ end
134
+ end
135
+
136
+ def complexobj2sequencesoap(obj, ele, type)
137
+ elements = type.elements
138
+ any = nil
139
+ if type.have_any?
140
+ any = Mapping.get_attributes_for_any(obj, elements)
141
+ end
142
+ elements.each do |child_ele|
143
+ case child_ele
144
+ when WSDL::XMLSchema::Any
145
+ if any
146
+ SOAPElement.from_objs(any).each do |child|
147
+ ele.add(child)
148
+ end
149
+ end
150
+ when WSDL::XMLSchema::Element
151
+ complexobj2soapchildren(obj, ele, child_ele)
152
+ when WSDL::XMLSchema::Sequence
153
+ complexobj2sequencesoap(obj, child_ele, type)
154
+ when WSDL::XMLSchema::Choice
155
+ complexobj2choicesoap(obj, child_ele, type)
156
+ else
157
+ raise MappingError.new("unknown type: #{child_ele}")
158
+ end
159
+ end
160
+ ele
161
+ end
162
+
163
+ def complexobj2choicesoap(obj, ele, type)
164
+ elements = type.elements
165
+ any = nil
166
+ if type.have_any?
167
+ raise MappingError.new(
168
+ "<any/> in <choice/> is not supported: #{ele.name.name}")
169
+ end
170
+ elements.each do |child_ele|
171
+ break if complexobj2soapchildren(obj, ele, child_ele, true)
172
+ end
173
+ ele
174
+ end
175
+
176
+ def complexobj2soapchildren(obj, ele, child_ele, allow_nil_value = false)
177
+ if child_ele.map_as_array?
178
+ complexobj2soapchildren_array(obj, ele, child_ele, allow_nil_value)
179
+ else
180
+ complexobj2soapchildren_single(obj, ele, child_ele, allow_nil_value)
181
+ end
182
+ end
183
+
184
+ def complexobj2soapchildren_array(obj, ele, child_ele, allow_nil_value)
185
+ child = Mapping.get_attribute(obj, child_ele.name.name)
186
+ if child.nil? and obj.respond_to?(:each)
187
+ child = obj
188
+ end
189
+ if child.nil?
190
+ return false if allow_nil_value
191
+ if child_soap = nil2soap(child_ele)
192
+ ele.add(child_soap)
193
+ return true
194
+ else
195
+ return false
196
+ end
197
+ end
198
+ unless child.respond_to?(:each)
199
+ return false
200
+ end
201
+ child.each do |item|
202
+ if item.is_a?(SOAPElement)
203
+ ele.add(item)
204
+ else
205
+ child_soap = obj2elesoap(item, child_ele)
206
+ ele.add(child_soap)
207
+ end
208
+ end
209
+ true
210
+ end
211
+
212
+ def complexobj2soapchildren_single(obj, ele, child_ele, allow_nil_value)
213
+ child = Mapping.get_attribute(obj, child_ele.name.name)
214
+ case child
215
+ when NilClass
216
+ return false if allow_nil_value
217
+ if child_soap = nil2soap(child_ele)
218
+ ele.add(child_soap)
219
+ true
220
+ else
221
+ false
222
+ end
223
+ when SOAPElement
224
+ ele.add(child)
225
+ true
226
+ else
227
+ child_soap = obj2elesoap(child, child_ele)
228
+ ele.add(child_soap)
229
+ true
230
+ end
231
+ end
232
+
233
+ def nil2soap(ele)
234
+ if ele.nillable
235
+ obj2elesoap(nil, ele) # add an empty element
236
+ elsif Integer(ele.minoccurs) == 0
237
+ nil # intends no element
238
+ else
239
+ raise MappingError.new("nil not allowed: #{ele.name.name}")
240
+ end
241
+ end
242
+ end
243
+
244
+
245
+ end
246
+ end