rtiss_soap4r 1.6.0

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 (427) hide show
  1. data/bin/wsdl2ruby.rb +139 -0
  2. data/bin/xsd2ruby.rb +91 -0
  3. data/lib/soap/attachment.rb +109 -0
  4. data/lib/soap/attrproxy.rb +35 -0
  5. data/lib/soap/baseData.rb +1095 -0
  6. data/lib/soap/element.rb +278 -0
  7. data/lib/soap/encodingstyle/aspDotNetHandler.rb +208 -0
  8. data/lib/soap/encodingstyle/handler.rb +121 -0
  9. data/lib/soap/encodingstyle/literalHandler.rb +196 -0
  10. data/lib/soap/encodingstyle/soapHandler.rb +560 -0
  11. data/lib/soap/filter/filterchain.rb +52 -0
  12. data/lib/soap/filter/handler.rb +32 -0
  13. data/lib/soap/filter/streamhandler.rb +30 -0
  14. data/lib/soap/filter.rb +14 -0
  15. data/lib/soap/generator.rb +299 -0
  16. data/lib/soap/header/handler.rb +62 -0
  17. data/lib/soap/header/handlerset.rb +71 -0
  18. data/lib/soap/header/mappinghandler.rb +48 -0
  19. data/lib/soap/header/simplehandler.rb +45 -0
  20. data/lib/soap/httpconfigloader.rb +140 -0
  21. data/lib/soap/mapping/encodedregistry.rb +539 -0
  22. data/lib/soap/mapping/factory.rb +389 -0
  23. data/lib/soap/mapping/literalregistry.rb +392 -0
  24. data/lib/soap/mapping/mapping.rb +577 -0
  25. data/lib/soap/mapping/registry.rb +296 -0
  26. data/lib/soap/mapping/rubytypeFactory.rb +446 -0
  27. data/lib/soap/mapping/schemadefinition.rb +171 -0
  28. data/lib/soap/mapping/typeMap.rb +107 -0
  29. data/lib/soap/mapping/wsdlencodedregistry.rb +212 -0
  30. data/lib/soap/mapping/wsdlliteralregistry.rb +249 -0
  31. data/lib/soap/mapping.rb +13 -0
  32. data/lib/soap/marshal.rb +60 -0
  33. data/lib/soap/mimemessage.rb +243 -0
  34. data/lib/soap/nestedexception.rb +43 -0
  35. data/lib/soap/netHttpClient.rb +242 -0
  36. data/lib/soap/ns.rb +39 -0
  37. data/lib/soap/parser.rb +253 -0
  38. data/lib/soap/processor.rb +67 -0
  39. data/lib/soap/property.rb +340 -0
  40. data/lib/soap/proxy.rb +15 -0
  41. data/lib/soap/rpc/cgistub.rb +248 -0
  42. data/lib/soap/rpc/driver.rb +222 -0
  43. data/lib/soap/rpc/element.rb +375 -0
  44. data/lib/soap/rpc/httpserver.rb +143 -0
  45. data/lib/soap/rpc/methodDef.rb +69 -0
  46. data/lib/soap/rpc/proxy.rb +573 -0
  47. data/lib/soap/rpc/router.rb +663 -0
  48. data/lib/soap/rpc/rpc.rb +26 -0
  49. data/lib/soap/rpc/soaplet.rb +201 -0
  50. data/lib/soap/rpc/standaloneServer.rb +44 -0
  51. data/lib/soap/soap.rb +154 -0
  52. data/lib/soap/streamHandler.rb +306 -0
  53. data/lib/soap/version.rb +9 -0
  54. data/lib/soap/wsdlDriver.rb +165 -0
  55. data/lib/wsdl/binding.rb +66 -0
  56. data/lib/wsdl/data.rb +65 -0
  57. data/lib/wsdl/definitions.rb +237 -0
  58. data/lib/wsdl/documentation.rb +33 -0
  59. data/lib/wsdl/import.rb +81 -0
  60. data/lib/wsdl/importer.rb +39 -0
  61. data/lib/wsdl/info.rb +51 -0
  62. data/lib/wsdl/message.rb +55 -0
  63. data/lib/wsdl/operation.rb +152 -0
  64. data/lib/wsdl/operationBinding.rb +241 -0
  65. data/lib/wsdl/param.rb +94 -0
  66. data/lib/wsdl/parser.rb +165 -0
  67. data/lib/wsdl/part.rb +53 -0
  68. data/lib/wsdl/port.rb +67 -0
  69. data/lib/wsdl/portType.rb +76 -0
  70. data/lib/wsdl/service.rb +62 -0
  71. data/lib/wsdl/soap/address.rb +41 -0
  72. data/lib/wsdl/soap/binding.rb +50 -0
  73. data/lib/wsdl/soap/body.rb +59 -0
  74. data/lib/wsdl/soap/cgiStubCreator.rb +93 -0
  75. data/lib/wsdl/soap/classDefCreator.rb +434 -0
  76. data/lib/wsdl/soap/classDefCreatorSupport.rb +241 -0
  77. data/lib/wsdl/soap/classNameCreator.rb +55 -0
  78. data/lib/wsdl/soap/clientSkeltonCreator.rb +107 -0
  79. data/lib/wsdl/soap/complexType.rb +174 -0
  80. data/lib/wsdl/soap/data.rb +43 -0
  81. data/lib/wsdl/soap/definitions.rb +201 -0
  82. data/lib/wsdl/soap/driverCreator.rb +121 -0
  83. data/lib/wsdl/soap/element.rb +34 -0
  84. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +74 -0
  85. data/lib/wsdl/soap/fault.rb +57 -0
  86. data/lib/wsdl/soap/header.rb +87 -0
  87. data/lib/wsdl/soap/headerfault.rb +57 -0
  88. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +116 -0
  89. data/lib/wsdl/soap/mappingRegistryCreator.rb +59 -0
  90. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +377 -0
  91. data/lib/wsdl/soap/methodDefCreator.rb +200 -0
  92. data/lib/wsdl/soap/operation.rb +113 -0
  93. data/lib/wsdl/soap/servantSkeltonCreator.rb +92 -0
  94. data/lib/wsdl/soap/servletStubCreator.rb +105 -0
  95. data/lib/wsdl/soap/standaloneServerStubCreator.rb +101 -0
  96. data/lib/wsdl/soap/wsdl2ruby.rb +226 -0
  97. data/lib/wsdl/types.rb +45 -0
  98. data/lib/wsdl/wsdl.rb +25 -0
  99. data/lib/wsdl/xmlSchema/all.rb +25 -0
  100. data/lib/wsdl/xmlSchema/annotation.rb +35 -0
  101. data/lib/wsdl/xmlSchema/any.rb +62 -0
  102. data/lib/wsdl/xmlSchema/anyAttribute.rb +49 -0
  103. data/lib/wsdl/xmlSchema/attribute.rb +105 -0
  104. data/lib/wsdl/xmlSchema/attributeGroup.rb +69 -0
  105. data/lib/wsdl/xmlSchema/choice.rb +59 -0
  106. data/lib/wsdl/xmlSchema/complexContent.rb +98 -0
  107. data/lib/wsdl/xmlSchema/complexExtension.rb +120 -0
  108. data/lib/wsdl/xmlSchema/complexRestriction.rb +105 -0
  109. data/lib/wsdl/xmlSchema/complexType.rb +194 -0
  110. data/lib/wsdl/xmlSchema/content.rb +96 -0
  111. data/lib/wsdl/xmlSchema/data.rb +117 -0
  112. data/lib/wsdl/xmlSchema/element.rb +154 -0
  113. data/lib/wsdl/xmlSchema/enumeration.rb +37 -0
  114. data/lib/wsdl/xmlSchema/fractiondigits.rb +38 -0
  115. data/lib/wsdl/xmlSchema/group.rb +101 -0
  116. data/lib/wsdl/xmlSchema/import.rb +54 -0
  117. data/lib/wsdl/xmlSchema/importHandler.rb +46 -0
  118. data/lib/wsdl/xmlSchema/importer.rb +103 -0
  119. data/lib/wsdl/xmlSchema/include.rb +49 -0
  120. data/lib/wsdl/xmlSchema/length.rb +38 -0
  121. data/lib/wsdl/xmlSchema/list.rb +49 -0
  122. data/lib/wsdl/xmlSchema/maxexclusive.rb +38 -0
  123. data/lib/wsdl/xmlSchema/maxinclusive.rb +38 -0
  124. data/lib/wsdl/xmlSchema/maxlength.rb +38 -0
  125. data/lib/wsdl/xmlSchema/minexclusive.rb +38 -0
  126. data/lib/wsdl/xmlSchema/mininclusive.rb +38 -0
  127. data/lib/wsdl/xmlSchema/minlength.rb +38 -0
  128. data/lib/wsdl/xmlSchema/parser.rb +168 -0
  129. data/lib/wsdl/xmlSchema/pattern.rb +37 -0
  130. data/lib/wsdl/xmlSchema/ref.rb +34 -0
  131. data/lib/wsdl/xmlSchema/schema.rb +179 -0
  132. data/lib/wsdl/xmlSchema/sequence.rb +55 -0
  133. data/lib/wsdl/xmlSchema/simpleContent.rb +70 -0
  134. data/lib/wsdl/xmlSchema/simpleExtension.rb +63 -0
  135. data/lib/wsdl/xmlSchema/simpleRestriction.rb +133 -0
  136. data/lib/wsdl/xmlSchema/simpleType.rb +88 -0
  137. data/lib/wsdl/xmlSchema/totaldigits.rb +38 -0
  138. data/lib/wsdl/xmlSchema/union.rb +36 -0
  139. data/lib/wsdl/xmlSchema/unique.rb +35 -0
  140. data/lib/wsdl/xmlSchema/whitespace.rb +38 -0
  141. data/lib/wsdl/xmlSchema/xsd2ruby.rb +176 -0
  142. data/lib/xsd/charset.rb +190 -0
  143. data/lib/xsd/codegen/classdef.rb +209 -0
  144. data/lib/xsd/codegen/commentdef.rb +35 -0
  145. data/lib/xsd/codegen/gensupport.rb +277 -0
  146. data/lib/xsd/codegen/methoddef.rb +71 -0
  147. data/lib/xsd/codegen/moduledef.rb +209 -0
  148. data/lib/xsd/codegen.rb +13 -0
  149. data/lib/xsd/datatypes.rb +1466 -0
  150. data/lib/xsd/datatypes1999.rb +21 -0
  151. data/lib/xsd/iconvcharset.rb +34 -0
  152. data/lib/xsd/mapping.rb +69 -0
  153. data/lib/xsd/namedelements.rb +133 -0
  154. data/lib/xsd/ns.rb +183 -0
  155. data/lib/xsd/qname.rb +80 -0
  156. data/lib/xsd/xmlparser/libxmlparser.rb +116 -0
  157. data/lib/xsd/xmlparser/parser.rb +101 -0
  158. data/lib/xsd/xmlparser/rexmlparser.rb +59 -0
  159. data/lib/xsd/xmlparser/xmlparser.rb +51 -0
  160. data/lib/xsd/xmlparser/xmlscanner.rb +150 -0
  161. data/lib/xsd/xmlparser.rb +77 -0
  162. data/test/16runner.rb +69 -0
  163. data/test/helper.rb +7 -0
  164. data/test/interopR2/README.txt +2 -0
  165. data/test/interopR2/SOAPBuildersInterop_R2.wsdl +461 -0
  166. data/test/interopR2/SOAPBuildersInterop_R2GrB.wsdl +19 -0
  167. data/test/interopR2/base.rb +289 -0
  168. data/test/interopR2/client.NetRemoting.rb +18 -0
  169. data/test/interopR2/client.rb +1235 -0
  170. data/test/interopR2/client4S4C.rb +16 -0
  171. data/test/interopR2/client4S4C2.rb +15 -0
  172. data/test/interopR2/clientASP.NET.rb +18 -0
  173. data/test/interopR2/clientApacheAxis.rb +17 -0
  174. data/test/interopR2/clientApacheSOAP.rb +18 -0
  175. data/test/interopR2/clientBEAWebLogic.rb +18 -0
  176. data/test/interopR2/clientBase.rb +1968 -0
  177. data/test/interopR2/clientCapeConnect.rb +19 -0
  178. data/test/interopR2/clientDelphi.rb +20 -0
  179. data/test/interopR2/clientEasySoap.rb +15 -0
  180. data/test/interopR2/clientFrontier.rb +26 -0
  181. data/test/interopR2/clientGLUE.rb +33 -0
  182. data/test/interopR2/clientHP.rb +14 -0
  183. data/test/interopR2/clientJAX-RPC.rb +20 -0
  184. data/test/interopR2/clientJSOAP.rb +15 -0
  185. data/test/interopR2/clientKafkaXSLT.rb +16 -0
  186. data/test/interopR2/clientMSSOAPToolkit2.0.rb +18 -0
  187. data/test/interopR2/clientMSSOAPToolkit3.0.rb +18 -0
  188. data/test/interopR2/clientNuSOAP.rb +20 -0
  189. data/test/interopR2/clientNuWave.rb +16 -0
  190. data/test/interopR2/clientOpenLink.rb +16 -0
  191. data/test/interopR2/clientOracle.rb +16 -0
  192. data/test/interopR2/clientPEAR.rb +19 -0
  193. data/test/interopR2/clientPhalanx.rb +19 -0
  194. data/test/interopR2/clientSIMACE.rb +19 -0
  195. data/test/interopR2/clientSOAP4R.rb +19 -0
  196. data/test/interopR2/clientSOAP__Lite.rb +15 -0
  197. data/test/interopR2/clientSQLData.rb +19 -0
  198. data/test/interopR2/clientSilverStream.rb +18 -0
  199. data/test/interopR2/clientSpray2001.rb +18 -0
  200. data/test/interopR2/clientSun.rb +20 -0
  201. data/test/interopR2/clientVWOpentalkSoap.rb +20 -0
  202. data/test/interopR2/clientWASP.rb +20 -0
  203. data/test/interopR2/clientWASPC.rb +19 -0
  204. data/test/interopR2/clientWebMethods.rb +16 -0
  205. data/test/interopR2/clientWhiteMesa.rb +29 -0
  206. data/test/interopR2/clientWingfoot.rb +16 -0
  207. data/test/interopR2/clientXMLBus.rb +20 -0
  208. data/test/interopR2/clientXMLRPC-EPI.rb +18 -0
  209. data/test/interopR2/clientXSOAP.rb +15 -0
  210. data/test/interopR2/clientZSI.rb +20 -0
  211. data/test/interopR2/clienteSOAP.rb +19 -0
  212. data/test/interopR2/clientgSOAP.rb +19 -0
  213. data/test/interopR2/clientkSOAP.rb +18 -0
  214. data/test/interopR2/iSimonReg.rb +113 -0
  215. data/test/interopR2/interopResultBase.rb +115 -0
  216. data/test/interopR2/interopService.rb +248 -0
  217. data/test/interopR2/rwikiInteropService.rb +106 -0
  218. data/test/interopR2/server.cgi +271 -0
  219. data/test/interopR2/server.rb +276 -0
  220. data/test/interopR2/simonReg.rb +124 -0
  221. data/test/interopR2/test.sh +49 -0
  222. data/test/interopR4/client.rb +113 -0
  223. data/test/runner.rb +8 -0
  224. data/test/sm11/classDef.rb +157 -0
  225. data/test/sm11/client.rb +543 -0
  226. data/test/sm11/driver.rb +184 -0
  227. data/test/sm11/servant.rb +1068 -0
  228. data/test/sm11/server.rb +26 -0
  229. data/test/soap/asp.net/hello.wsdl +96 -0
  230. data/test/soap/asp.net/test_aspdotnet.rb +124 -0
  231. data/test/soap/auth/htdigest +2 -0
  232. data/test/soap/auth/htpasswd +2 -0
  233. data/test/soap/auth/test_basic.rb +118 -0
  234. data/test/soap/auth/test_digest.rb +119 -0
  235. data/test/soap/calc/calc.rb +18 -0
  236. data/test/soap/calc/calc2.rb +30 -0
  237. data/test/soap/calc/server.cgi +16 -0
  238. data/test/soap/calc/server.rb +18 -0
  239. data/test/soap/calc/server2.rb +21 -0
  240. data/test/soap/calc/test_calc.rb +53 -0
  241. data/test/soap/calc/test_calc2.rb +57 -0
  242. data/test/soap/calc/test_calc_cgi.rb +72 -0
  243. data/test/soap/case/test_mapping.rb +58 -0
  244. data/test/soap/fault/test_customfault.rb +61 -0
  245. data/test/soap/fault/test_fault.rb +47 -0
  246. data/test/soap/fault/test_soaparray.rb +36 -0
  247. data/test/soap/filter/test_filter.rb +147 -0
  248. data/test/soap/header/server.cgi +121 -0
  249. data/test/soap/header/test_authheader.rb +241 -0
  250. data/test/soap/header/test_authheader_cgi.rb +122 -0
  251. data/test/soap/header/test_simplehandler.rb +117 -0
  252. data/test/soap/helloworld/hw_s.rb +17 -0
  253. data/test/soap/helloworld/test_helloworld.rb +45 -0
  254. data/test/soap/htpasswd +2 -0
  255. data/test/soap/literalArrayMapping/amazonEc.rb +4779 -0
  256. data/test/soap/literalArrayMapping/amazonEcDriver.rb +173 -0
  257. data/test/soap/literalArrayMapping/amazonresponse.xml +100 -0
  258. data/test/soap/literalArrayMapping/test_definedarray.rb +35 -0
  259. data/test/soap/marshal/marshaltestlib.rb +498 -0
  260. data/test/soap/marshal/test_digraph.rb +57 -0
  261. data/test/soap/marshal/test_marshal.rb +28 -0
  262. data/test/soap/marshal/test_struct.rb +48 -0
  263. data/test/soap/ssl/README +1 -0
  264. data/test/soap/ssl/ca.cert +23 -0
  265. data/test/soap/ssl/client.cert +19 -0
  266. data/test/soap/ssl/client.key +15 -0
  267. data/test/soap/ssl/server.cert +19 -0
  268. data/test/soap/ssl/server.key +15 -0
  269. data/test/soap/ssl/sslsvr.rb +59 -0
  270. data/test/soap/ssl/subca.cert +21 -0
  271. data/test/soap/ssl/test_ssl.rb +236 -0
  272. data/test/soap/struct/test_struct.rb +71 -0
  273. data/test/soap/styleuse/client.rb +21 -0
  274. data/test/soap/styleuse/server.rb +87 -0
  275. data/test/soap/swa/test_file.rb +76 -0
  276. data/test/soap/test_basetype.rb +1091 -0
  277. data/test/soap/test_cookie.rb +113 -0
  278. data/test/soap/test_custom_ns.rb +106 -0
  279. data/test/soap/test_custommap.rb +111 -0
  280. data/test/soap/test_empty.rb +106 -0
  281. data/test/soap/test_envelopenamespace.rb +86 -0
  282. data/test/soap/test_extraattr.rb +55 -0
  283. data/test/soap/test_generator.rb +32 -0
  284. data/test/soap/test_httpconfigloader.rb +72 -0
  285. data/test/soap/test_mapping.rb +132 -0
  286. data/test/soap/test_nestedexception.rb +71 -0
  287. data/test/soap/test_nil.rb +71 -0
  288. data/test/soap/test_no_indent.rb +89 -0
  289. data/test/soap/test_property.rb +429 -0
  290. data/test/soap/test_response_as_xml.rb +118 -0
  291. data/test/soap/test_soapelement.rb +139 -0
  292. data/test/soap/test_streamhandler.rb +271 -0
  293. data/test/soap/test_styleuse.rb +327 -0
  294. data/test/soap/wsdlDriver/README.txt +2 -0
  295. data/test/soap/wsdlDriver/calc.wsdl +126 -0
  296. data/test/soap/wsdlDriver/document.wsdl +54 -0
  297. data/test/soap/wsdlDriver/echo_version.rb +30 -0
  298. data/test/soap/wsdlDriver/simpletype.wsdl +63 -0
  299. data/test/soap/wsdlDriver/test_calc.rb +72 -0
  300. data/test/soap/wsdlDriver/test_document.rb +72 -0
  301. data/test/soap/wsdlDriver/test_simpletype.rb +82 -0
  302. data/test/testutil.rb +55 -0
  303. data/test/wsdl/abstract/abstract.wsdl +176 -0
  304. data/test/wsdl/abstract/test_abstract.rb +160 -0
  305. data/test/wsdl/anonymous/expectedClassDef.rb +129 -0
  306. data/test/wsdl/anonymous/expectedDriver.rb +60 -0
  307. data/test/wsdl/anonymous/expectedMappingRegistry.rb +177 -0
  308. data/test/wsdl/anonymous/lp.wsdl +147 -0
  309. data/test/wsdl/anonymous/test_anonymous.rb +131 -0
  310. data/test/wsdl/any/any.wsdl +114 -0
  311. data/test/wsdl/any/expectedDriver.rb +69 -0
  312. data/test/wsdl/any/expectedEcho.rb +58 -0
  313. data/test/wsdl/any/expectedMappingRegistry.rb +64 -0
  314. data/test/wsdl/any/expectedService.rb +70 -0
  315. data/test/wsdl/any/test_any.rb +194 -0
  316. data/test/wsdl/axisArray/axisArray.wsdl +87 -0
  317. data/test/wsdl/axisArray/test_axisarray.rb +125 -0
  318. data/test/wsdl/choice/choice.wsdl +167 -0
  319. data/test/wsdl/choice/test_choice.rb +311 -0
  320. data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
  321. data/test/wsdl/complexcontent/test_echo.rb +91 -0
  322. data/test/wsdl/datetime/DatetimeService.rb +45 -0
  323. data/test/wsdl/datetime/datetime.rb +0 -0
  324. data/test/wsdl/datetime/datetime.wsdl +45 -0
  325. data/test/wsdl/datetime/datetimeServant.rb +23 -0
  326. data/test/wsdl/datetime/test_datetime.rb +88 -0
  327. data/test/wsdl/document/array/double.wsdl +161 -0
  328. data/test/wsdl/document/array/test_array.rb +202 -0
  329. data/test/wsdl/document/document.wsdl +76 -0
  330. data/test/wsdl/document/number.wsdl +54 -0
  331. data/test/wsdl/document/ping_nosoapaction.wsdl +66 -0
  332. data/test/wsdl/document/test_nosoapaction.rb +103 -0
  333. data/test/wsdl/document/test_number.rb +93 -0
  334. data/test/wsdl/document/test_rpc.rb +356 -0
  335. data/test/wsdl/emptycomplextype.wsdl +31 -0
  336. data/test/wsdl/fault/fault.wsdl +79 -0
  337. data/test/wsdl/fault/multifault.wsdl +96 -0
  338. data/test/wsdl/fault/test_fault.rb +120 -0
  339. data/test/wsdl/fault/test_multifault.rb +135 -0
  340. data/test/wsdl/group/expectedClassdef.rb +59 -0
  341. data/test/wsdl/group/expectedDriver.rb +52 -0
  342. data/test/wsdl/group/expectedMappingRegistry.rb +68 -0
  343. data/test/wsdl/group/group.wsdl +88 -0
  344. data/test/wsdl/group/test_rpc.rb +146 -0
  345. data/test/wsdl/list/list.wsdl +93 -0
  346. data/test/wsdl/list/test_list.rb +125 -0
  347. data/test/wsdl/map/map.wsdl +92 -0
  348. data/test/wsdl/map/map.xml +43 -0
  349. data/test/wsdl/map/test_map.rb +100 -0
  350. data/test/wsdl/marshal/person.wsdl +21 -0
  351. data/test/wsdl/marshal/person_org.rb +24 -0
  352. data/test/wsdl/marshal/test_wsdlmarshal.rb +76 -0
  353. data/test/wsdl/multiplefault.wsdl +75 -0
  354. data/test/wsdl/oneway/oneway.wsdl +36 -0
  355. data/test/wsdl/oneway/test_oneway.rb +109 -0
  356. data/test/wsdl/overload/expectedClient.rb +38 -0
  357. data/test/wsdl/overload/expectedDriver.rb +62 -0
  358. data/test/wsdl/overload/expectedServant.rb +36 -0
  359. data/test/wsdl/overload/overload.wsdl +70 -0
  360. data/test/wsdl/overload/test_overload.rb +132 -0
  361. data/test/wsdl/qualified/lp.wsdl +47 -0
  362. data/test/wsdl/qualified/lp.xsd +26 -0
  363. data/test/wsdl/qualified/np.wsdl +51 -0
  364. data/test/wsdl/qualified/test_qualified.rb +138 -0
  365. data/test/wsdl/qualified/test_unqualified.rb +139 -0
  366. data/test/wsdl/raa/RAAService.rb +126 -0
  367. data/test/wsdl/raa/README.txt +8 -0
  368. data/test/wsdl/raa/expectedClassDef.rb +101 -0
  369. data/test/wsdl/raa/expectedDriver.rb +97 -0
  370. data/test/wsdl/raa/expectedMappingRegistry.rb +122 -0
  371. data/test/wsdl/raa/raa.wsdl +264 -0
  372. data/test/wsdl/raa/test_raa.rb +127 -0
  373. data/test/wsdl/ref/expectedDriver.rb +52 -0
  374. data/test/wsdl/ref/expectedProduct.rb +244 -0
  375. data/test/wsdl/ref/product.wsdl +147 -0
  376. data/test/wsdl/ref/test_ref.rb +269 -0
  377. data/test/wsdl/rpc/rpc.wsdl +109 -0
  378. data/test/wsdl/rpc/test-rpc-lit.wsdl +371 -0
  379. data/test/wsdl/rpc/test_rpc.rb +177 -0
  380. data/test/wsdl/rpc/test_rpc_lit.rb +471 -0
  381. data/test/wsdl/simplecontent/simplecontent.wsdl +84 -0
  382. data/test/wsdl/simplecontent/test_simplecontent.rb +103 -0
  383. data/test/wsdl/simpletype/rpc/expectedClient.rb +35 -0
  384. data/test/wsdl/simpletype/rpc/expectedDriver.rb +59 -0
  385. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +37 -0
  386. data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +58 -0
  387. data/test/wsdl/simpletype/rpc/expectedServant.rb +33 -0
  388. data/test/wsdl/simpletype/rpc/expectedService.rb +56 -0
  389. data/test/wsdl/simpletype/rpc/rpc.wsdl +98 -0
  390. data/test/wsdl/simpletype/rpc/test_rpc.rb +53 -0
  391. data/test/wsdl/simpletype/simpletype.wsdl +114 -0
  392. data/test/wsdl/simpletype/test_simpletype.rb +93 -0
  393. data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
  394. data/test/wsdl/soap/test_soapbodyparts.rb +80 -0
  395. data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +22 -0
  396. data/test/wsdl/soap/wsdl2ruby/expectedClient.rb +35 -0
  397. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +59 -0
  398. data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +37 -0
  399. data/test/wsdl/soap/wsdl2ruby/expectedServant.rb +33 -0
  400. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +49 -0
  401. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +56 -0
  402. data/test/wsdl/soap/wsdl2ruby/rpc.wsdl +80 -0
  403. data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +38 -0
  404. data/test/wsdl/soap/wsdl2ruby/section/section.xsd +31 -0
  405. data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +54 -0
  406. data/test/wsdl/soap/wsdl2ruby/soapenc/soapenc.wsdl +64 -0
  407. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +84 -0
  408. data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +103 -0
  409. data/test/wsdl/soaptype/soaptype.wsdl +61 -0
  410. data/test/wsdl/soaptype/test_soaptype.rb +179 -0
  411. data/test/wsdl/test_emptycomplextype.rb +22 -0
  412. data/test/wsdl/test_fault.rb +51 -0
  413. data/test/wsdl/test_multiplefault.rb +42 -0
  414. data/test/xsd/codegen/test_classdef.rb +245 -0
  415. data/test/xsd/noencoding.xml +4 -0
  416. data/test/xsd/test_noencoding.rb +33 -0
  417. data/test/xsd/test_ns.rb +42 -0
  418. data/test/xsd/test_xmlschemaparser.rb +23 -0
  419. data/test/xsd/test_xsd.rb +1639 -0
  420. data/test/xsd/xmllang.xml +43 -0
  421. data/test/xsd/xmlschema.xml +12 -0
  422. data/test/xsd/xsd2ruby/expected_mysample.rb +66 -0
  423. data/test/xsd/xsd2ruby/expected_mysample_mapper.rb +12 -0
  424. data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +52 -0
  425. data/test/xsd/xsd2ruby/section.xsd +49 -0
  426. data/test/xsd/xsd2ruby/test_xsd2ruby.rb +91 -0
  427. metadata +489 -0
@@ -0,0 +1,539 @@
1
+ # encoding: ASCII-8BIT
2
+ # SOAP4R - encoded mapping registry.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'soap/baseData'
11
+ require 'soap/mapping/mapping'
12
+ require 'soap/mapping/typeMap'
13
+ require 'soap/mapping/factory'
14
+ require 'soap/mapping/rubytypeFactory'
15
+
16
+
17
+ module SOAP
18
+ module Mapping
19
+
20
+
21
+ # Inner class to pass an exception.
22
+ class SOAPException
23
+ attr_reader :excn_type_name, :cause
24
+
25
+ def initialize(e)
26
+ @excn_type_name = Mapping.name2elename(e.class.to_s)
27
+ @cause = e
28
+ end
29
+
30
+ def to_e
31
+ if @cause.is_a?(::Exception)
32
+ @cause.extend(::SOAP::Mapping::MappedException)
33
+ return @cause
34
+ elsif @cause.respond_to?(:message) and @cause.respond_to?(:backtrace)
35
+ e = RuntimeError.new(@cause.message)
36
+ e.set_backtrace(@cause.backtrace)
37
+ return e
38
+ end
39
+ klass = Mapping.class_from_name(Mapping.elename2name(@excn_type_name.to_s))
40
+ if klass.nil? or not klass <= ::Exception
41
+ return RuntimeError.new(@cause.inspect)
42
+ end
43
+ obj = klass.new(@cause.message)
44
+ obj.extend(::SOAP::Mapping::MappedException)
45
+ obj
46
+ end
47
+ end
48
+
49
+
50
+ class EncodedRegistry
51
+ include TraverseSupport
52
+ include RegistrySupport
53
+
54
+ class Map
55
+ def initialize(registry)
56
+ @obj2soap = {}
57
+ @soap2obj = {}
58
+ @registry = registry
59
+ end
60
+
61
+ def obj2soap(obj)
62
+ klass = obj.class
63
+ if map = @obj2soap[klass]
64
+ map.each do |soap_class, factory, info|
65
+ ret = factory.obj2soap(soap_class, obj, info, @registry)
66
+ return ret if ret
67
+ end
68
+ end
69
+ klass.ancestors.each do |baseclass|
70
+ next if baseclass == klass
71
+ if map = @obj2soap[baseclass]
72
+ map.each do |soap_class, factory, info|
73
+ if info[:derived_class]
74
+ ret = factory.obj2soap(soap_class, obj, info, @registry)
75
+ return ret if ret
76
+ end
77
+ end
78
+ end
79
+ end
80
+ nil
81
+ end
82
+
83
+ def soap2obj(node, klass = nil)
84
+ if map = @soap2obj[node.class]
85
+ map.each do |obj_class, factory, info|
86
+ next if klass and obj_class != klass
87
+ conv, obj = factory.soap2obj(obj_class, node, info, @registry)
88
+ return true, obj if conv
89
+ end
90
+ end
91
+ return false, nil
92
+ end
93
+
94
+ # Give priority to former entry.
95
+ def init(init_map = [])
96
+ clear
97
+ init_map.reverse_each do |obj_class, soap_class, factory, info|
98
+ add(obj_class, soap_class, factory, info)
99
+ end
100
+ end
101
+
102
+ # Give priority to latter entry.
103
+ def add(obj_class, soap_class, factory, info)
104
+ info ||= {}
105
+ (@obj2soap[obj_class] ||= []).unshift([soap_class, factory, info])
106
+ (@soap2obj[soap_class] ||= []).unshift([obj_class, factory, info])
107
+ end
108
+
109
+ def clear
110
+ @obj2soap.clear
111
+ @soap2obj.clear
112
+ end
113
+
114
+ def find_mapped_soap_class(target_obj_class)
115
+ map = @obj2soap[target_obj_class]
116
+ map.empty? ? nil : map[0][1]
117
+ end
118
+
119
+ def find_mapped_obj_class(target_soap_class)
120
+ map = @soap2obj[target_soap_class]
121
+ map.empty? ? nil : map[0][0]
122
+ end
123
+ end
124
+
125
+ StringFactory = StringFactory_.new
126
+ BasetypeFactory = BasetypeFactory_.new
127
+ FixnumFactory = FixnumFactory_.new
128
+ DateTimeFactory = DateTimeFactory_.new
129
+ ArrayFactory = ArrayFactory_.new
130
+ Base64Factory = Base64Factory_.new
131
+ URIFactory = URIFactory_.new
132
+ TypedArrayFactory = TypedArrayFactory_.new
133
+ TypedStructFactory = TypedStructFactory_.new
134
+
135
+ HashFactory = HashFactory_.new
136
+
137
+ SOAPBaseMap = [
138
+ [::NilClass, ::SOAP::SOAPNil, BasetypeFactory],
139
+ [::TrueClass, ::SOAP::SOAPBoolean, BasetypeFactory],
140
+ [::FalseClass, ::SOAP::SOAPBoolean, BasetypeFactory],
141
+ [::String, ::SOAP::SOAPString, StringFactory,
142
+ {:derived_class => true}],
143
+ [::DateTime, ::SOAP::SOAPDateTime, DateTimeFactory],
144
+ [::Date, ::SOAP::SOAPDate, DateTimeFactory],
145
+ [::Time, ::SOAP::SOAPDateTime, DateTimeFactory],
146
+ [::Time, ::SOAP::SOAPTime, DateTimeFactory],
147
+ [::Float, ::SOAP::SOAPDouble, BasetypeFactory,
148
+ {:derived_class => true}],
149
+ [::Float, ::SOAP::SOAPFloat, BasetypeFactory,
150
+ {:derived_class => true}],
151
+ [::Fixnum, ::SOAP::SOAPInt, FixnumFactory],
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
+ {:derived_class => true}],
193
+ [::Hash, ::SOAP::SOAPStruct, HashFactory,
194
+ {:derived_class => true}],
195
+
196
+ [::Array, ::SOAP::SOAPArray, ArrayFactory,
197
+ {:derived_class => true}],
198
+
199
+ [::SOAP::Mapping::SOAPException,
200
+ ::SOAP::SOAPStruct, TypedStructFactory,
201
+ {:type => XSD::QName.new(RubyCustomTypeNamespace, "SOAPException")}],
202
+ ]
203
+
204
+ RubyOriginalMap = [
205
+ [::NilClass, ::SOAP::SOAPNil, BasetypeFactory],
206
+ [::TrueClass, ::SOAP::SOAPBoolean, BasetypeFactory],
207
+ [::FalseClass, ::SOAP::SOAPBoolean, BasetypeFactory],
208
+ [::String, ::SOAP::SOAPString, StringFactory],
209
+ [::DateTime, ::SOAP::SOAPDateTime, DateTimeFactory],
210
+ [::Date, ::SOAP::SOAPDate, DateTimeFactory],
211
+ [::Time, ::SOAP::SOAPDateTime, DateTimeFactory],
212
+ [::Time, ::SOAP::SOAPTime, DateTimeFactory],
213
+ [::Float, ::SOAP::SOAPDouble, BasetypeFactory,
214
+ {:derived_class => true}],
215
+ [::Float, ::SOAP::SOAPFloat, BasetypeFactory,
216
+ {:derived_class => true}],
217
+ [::Fixnum, ::SOAP::SOAPInt, FixnumFactory],
218
+ [::Integer, ::SOAP::SOAPInt, BasetypeFactory,
219
+ {:derived_class => true}],
220
+ [::Integer, ::SOAP::SOAPLong, BasetypeFactory,
221
+ {:derived_class => true}],
222
+ [::Integer, ::SOAP::SOAPInteger, BasetypeFactory,
223
+ {:derived_class => true}],
224
+ [::Integer, ::SOAP::SOAPShort, BasetypeFactory,
225
+ {:derived_class => true}],
226
+ [::Integer, ::SOAP::SOAPByte, BasetypeFactory,
227
+ {:derived_class => true}],
228
+ [::Integer, ::SOAP::SOAPNonPositiveInteger, BasetypeFactory,
229
+ {:derived_class => true}],
230
+ [::Integer, ::SOAP::SOAPNegativeInteger, BasetypeFactory,
231
+ {:derived_class => true}],
232
+ [::Integer, ::SOAP::SOAPNonNegativeInteger, BasetypeFactory,
233
+ {:derived_class => true}],
234
+ [::Integer, ::SOAP::SOAPPositiveInteger, BasetypeFactory,
235
+ {:derived_class => true}],
236
+ [::Integer, ::SOAP::SOAPUnsignedLong, BasetypeFactory,
237
+ {:derived_class => true}],
238
+ [::Integer, ::SOAP::SOAPUnsignedInt, BasetypeFactory,
239
+ {:derived_class => true}],
240
+ [::Integer, ::SOAP::SOAPUnsignedShort, BasetypeFactory,
241
+ {:derived_class => true}],
242
+ [::Integer, ::SOAP::SOAPUnsignedByte, BasetypeFactory,
243
+ {:derived_class => true}],
244
+ [::URI::Generic, ::SOAP::SOAPAnyURI, URIFactory,
245
+ {:derived_class => true}],
246
+ [::String, ::SOAP::SOAPBase64, Base64Factory],
247
+ [::String, ::SOAP::SOAPHexBinary, Base64Factory],
248
+ [::String, ::SOAP::SOAPDecimal, BasetypeFactory],
249
+ [::String, ::SOAP::SOAPDuration, BasetypeFactory],
250
+ [::String, ::SOAP::SOAPGYearMonth, BasetypeFactory],
251
+ [::String, ::SOAP::SOAPGYear, BasetypeFactory],
252
+ [::String, ::SOAP::SOAPGMonthDay, BasetypeFactory],
253
+ [::String, ::SOAP::SOAPGDay, BasetypeFactory],
254
+ [::String, ::SOAP::SOAPGMonth, BasetypeFactory],
255
+ [::String, ::SOAP::SOAPQName, BasetypeFactory],
256
+
257
+ [::Hash, ::SOAP::SOAPArray, HashFactory],
258
+ [::Hash, ::SOAP::SOAPStruct, HashFactory],
259
+
260
+ # Does not allow Array's subclass here.
261
+ [::Array, ::SOAP::SOAPArray, ArrayFactory],
262
+
263
+ [::SOAP::Mapping::SOAPException,
264
+ ::SOAP::SOAPStruct, TypedStructFactory,
265
+ {:type => XSD::QName.new(RubyCustomTypeNamespace, "SOAPException")}],
266
+ ]
267
+
268
+ attr_accessor :default_factory
269
+ attr_accessor :excn_handler_obj2soap
270
+ attr_accessor :excn_handler_soap2obj
271
+
272
+ def initialize(config = {})
273
+ super()
274
+ @config = config
275
+ @map = Map.new(self)
276
+ if @config[:allow_original_mapping]
277
+ @allow_original_mapping = true
278
+ @map.init(RubyOriginalMap)
279
+ else
280
+ @allow_original_mapping = false
281
+ @map.init(SOAPBaseMap)
282
+ end
283
+ @allow_untyped_struct = @config.key?(:allow_untyped_struct) ?
284
+ @config[:allow_untyped_struct] : true
285
+ @rubytype_factory = RubytypeFactory.new(
286
+ :allow_untyped_struct => @allow_untyped_struct,
287
+ :allow_original_mapping => @allow_original_mapping
288
+ )
289
+ @default_factory = @rubytype_factory
290
+ @excn_handler_obj2soap = nil
291
+ @excn_handler_soap2obj = nil
292
+ end
293
+
294
+ # initial mapping interface
295
+ # new interface Registry#register is defined in RegisterSupport
296
+ def add(obj_class, soap_class, factory, info = nil)
297
+ @map.add(obj_class, soap_class, factory, info)
298
+ end
299
+ alias set add
300
+
301
+ def obj2soap(obj, type_qname = nil)
302
+ soap = _obj2soap(obj, type_qname)
303
+ if @allow_original_mapping
304
+ addextend2soap(soap, obj)
305
+ end
306
+ soap
307
+ end
308
+
309
+ def soap2obj(node, klass = nil)
310
+ obj = _soap2obj(node, klass)
311
+ if @allow_original_mapping
312
+ addextend2obj(obj, node.extraattr[RubyExtendName])
313
+ addiv2obj(obj, node.extraattr[RubyIVarName])
314
+ end
315
+ obj
316
+ end
317
+
318
+ def find_mapped_soap_class(obj_class)
319
+ @map.find_mapped_soap_class(obj_class)
320
+ end
321
+
322
+ def find_mapped_obj_class(soap_class)
323
+ @map.find_mapped_obj_class(soap_class)
324
+ end
325
+
326
+ private
327
+
328
+ def _obj2soap(obj, type_qname = nil)
329
+ ret = nil
330
+ if obj.is_a?(SOAPCompoundtype)
331
+ obj.replace do |ele|
332
+ Mapping._obj2soap(ele, self)
333
+ end
334
+ return obj
335
+ elsif obj.is_a?(SOAPBasetype)
336
+ return obj
337
+ elsif type_qname && type = TypeMap[type_qname]
338
+ return base2soap(obj, type)
339
+ end
340
+ cause = nil
341
+ begin
342
+ if definition = schema_definition_from_class(obj.class)
343
+ return stubobj2soap(obj, definition)
344
+ end
345
+ ret = @map.obj2soap(obj) ||
346
+ @default_factory.obj2soap(nil, obj, nil, self)
347
+ return ret if ret
348
+ rescue MappingError
349
+ cause = $!
350
+ end
351
+ if @excn_handler_obj2soap
352
+ ret = @excn_handler_obj2soap.call(obj) { |yield_obj|
353
+ Mapping._obj2soap(yield_obj, self)
354
+ }
355
+ return ret if ret
356
+ end
357
+ raise MappingError.new("Cannot map #{ obj.class.name } to SOAP/OM.", cause)
358
+ end
359
+
360
+ # Might return nil as a mapping result.
361
+ def _soap2obj(node, klass = nil)
362
+ definition = find_node_definition(node)
363
+ if klass
364
+ klass_definition = schema_definition_from_class(klass)
365
+ if definition and (definition.class_for < klass)
366
+ klass = definition.class_for
367
+ else
368
+ definition = klass_definition
369
+ end
370
+ else
371
+ klass = definition.class_for if definition
372
+ end
373
+ if definition and node.is_a?(::SOAP::SOAPNameAccessible)
374
+ return elesoap2stubobj(node, klass, definition)
375
+ end
376
+ if node.extraattr.key?(RubyTypeName)
377
+ conv, obj = @rubytype_factory.soap2obj(nil, node, nil, self)
378
+ return obj if conv
379
+ end
380
+ conv, obj = @map.soap2obj(node)
381
+ return obj if conv
382
+ conv, obj = @default_factory.soap2obj(nil, node, nil, self)
383
+ return obj if conv
384
+ cause = nil
385
+ if @excn_handler_soap2obj
386
+ begin
387
+ return @excn_handler_soap2obj.call(node) { |yield_node|
388
+ Mapping._soap2obj(yield_node, self)
389
+ }
390
+ rescue Exception
391
+ cause = $!
392
+ end
393
+ end
394
+ raise MappingError.new("Cannot map #{ node.type } to Ruby object.", cause)
395
+ end
396
+
397
+ def addiv2obj(obj, attr)
398
+ return unless attr
399
+ vars = {}
400
+ attr.__getobj__.each do |name, value|
401
+ vars[name] = Mapping._soap2obj(value, self)
402
+ end
403
+ Mapping.set_attributes(obj, vars)
404
+ end
405
+
406
+ def addextend2obj(obj, attr)
407
+ return unless attr
408
+ attr.split(/ /).reverse_each do |mstr|
409
+ obj.extend(Mapping.module_from_name(mstr))
410
+ end
411
+ end
412
+
413
+ def addextend2soap(node, obj)
414
+ return if obj.is_a?(Symbol) or obj.is_a?(Fixnum)
415
+ list = (class << obj; self; end).ancestors - obj.class.ancestors
416
+ unless list.empty?
417
+ node.extraattr[RubyExtendName] = list.collect { |c|
418
+ name = c.name
419
+ if name.nil? or name.empty?
420
+ raise TypeError.new("singleton can't be dumped #{ obj }")
421
+ end
422
+ name
423
+ }.join(" ")
424
+ end
425
+ end
426
+
427
+ def stubobj2soap(obj, definition)
428
+ case obj
429
+ when ::Array
430
+ array2soap(obj, definition)
431
+ else
432
+ unknownstubobj2soap(obj, definition)
433
+ end
434
+ end
435
+
436
+ def array2soap(obj, definition)
437
+ return SOAPNil.new if obj.nil? # ToDo: check nillable.
438
+ eledef = definition.elements[0]
439
+ soap_obj = SOAPArray.new(ValueArrayName, 1, eledef.elename)
440
+ mark_marshalled_obj(obj, soap_obj)
441
+ obj.each do |item|
442
+ soap_obj.add(typedobj2soap(item, eledef.mapped_class))
443
+ end
444
+ soap_obj
445
+ end
446
+
447
+ def unknownstubobj2soap(obj, definition)
448
+ return SOAPNil.new if obj.nil?
449
+ if definition.elements.size == 0
450
+ ele = Mapping.obj2soap(obj)
451
+ ele.elename = definition.elename if definition.elename
452
+ ele.extraattr[XSD::AttrTypeName] = definition.type if definition.type
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 obj.respond_to?(:each) and eledef.as_array?
461
+ obj.each do |item|
462
+ ele.add(name, typedobj2soap(item, eledef.mapped_class))
463
+ end
464
+ else
465
+ child = Mapping.get_attribute(obj, eledef.varname)
466
+ if child.respond_to?(:each) and eledef.as_array?
467
+ child = child.lines if child.respond_to?(:lines) # RubyJedi: compatible with Ruby 1.8.6 and above
468
+ child.each do |item|
469
+ ele.add(name, typedobj2soap(item, eledef.mapped_class))
470
+ end
471
+ else
472
+ ele.add(name, typedobj2soap(child, eledef.mapped_class))
473
+ end
474
+ end
475
+ end
476
+ ele
477
+ end
478
+
479
+ def typedobj2soap(value, klass)
480
+ if klass and klass.include?(::SOAP::SOAPBasetype)
481
+ base2soap(value, klass)
482
+ else
483
+ Mapping._obj2soap(value, self)
484
+ end
485
+ end
486
+
487
+ def elesoap2stubobj(node, obj_class, definition)
488
+ obj = Mapping.create_empty_object(obj_class)
489
+ add_elesoap2stubobj(node, obj, definition)
490
+ obj
491
+ end
492
+
493
+ # XXX consider to merge with the method in LiteralRegistry
494
+ def add_elesoap2stubobj(node, obj, definition)
495
+ vars = {}
496
+ node.each do |name, value|
497
+ item = definition.elements.find_element(value.elename)
498
+ if item
499
+ child = soap2typedobj(value, item.mapped_class)
500
+ else
501
+ # unknown element is treated as anyType.
502
+ child = Mapping._soap2obj(value, self)
503
+ end
504
+ if item and item.as_array?
505
+ (vars[name] ||= []) << child
506
+ elsif vars.key?(name)
507
+ vars[name] = [vars[name], child].flatten
508
+ else
509
+ vars[name] = child
510
+ end
511
+ end
512
+ if obj.is_a?(::Array) and is_stubobj_elements_for_array(vars)
513
+ Array.instance_method(:replace).bind(obj).call(vars.values[0])
514
+ else
515
+ Mapping.set_attributes(obj, vars)
516
+ end
517
+ end
518
+
519
+ def soap2typedobj(value, klass)
520
+ unless klass
521
+ raise MappingError.new("unknown class: #{klass}")
522
+ end
523
+ if klass.include?(::SOAP::SOAPBasetype)
524
+ obj = base2obj(value, klass)
525
+ else
526
+ obj = Mapping._soap2obj(value, self, klass)
527
+ end
528
+ obj
529
+ end
530
+ end
531
+
532
+
533
+ Registry = EncodedRegistry
534
+ DefaultRegistry = EncodedRegistry.new
535
+ RubyOriginalRegistry = EncodedRegistry.new(:allow_original_mapping => true)
536
+
537
+
538
+ end
539
+ end