tomdz-soap4r 1.5.8.20111103171510

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.rb +14 -0
  12. data/lib/soap/filter/filterchain.rb +52 -0
  13. data/lib/soap/filter/handler.rb +32 -0
  14. data/lib/soap/filter/streamhandler.rb +30 -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.rb +13 -0
  22. data/lib/soap/mapping/encodedregistry.rb +539 -0
  23. data/lib/soap/mapping/factory.rb +389 -0
  24. data/lib/soap/mapping/literalregistry.rb +392 -0
  25. data/lib/soap/mapping/mapping.rb +577 -0
  26. data/lib/soap/mapping/registry.rb +296 -0
  27. data/lib/soap/mapping/rubytypeFactory.rb +446 -0
  28. data/lib/soap/mapping/schemadefinition.rb +171 -0
  29. data/lib/soap/mapping/typeMap.rb +107 -0
  30. data/lib/soap/mapping/wsdlencodedregistry.rb +212 -0
  31. data/lib/soap/mapping/wsdlliteralregistry.rb +249 -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 +302 -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.rb +13 -0
  144. data/lib/xsd/codegen/classdef.rb +209 -0
  145. data/lib/xsd/codegen/commentdef.rb +35 -0
  146. data/lib/xsd/codegen/gensupport.rb +277 -0
  147. data/lib/xsd/codegen/methoddef.rb +71 -0
  148. data/lib/xsd/codegen/moduledef.rb +209 -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.rb +77 -0
  157. data/lib/xsd/xmlparser/libxmlparser.rb +116 -0
  158. data/lib/xsd/xmlparser/parser.rb +101 -0
  159. data/lib/xsd/xmlparser/rexmlparser.rb +59 -0
  160. data/lib/xsd/xmlparser/xmlparser.rb +51 -0
  161. data/lib/xsd/xmlparser/xmlscanner.rb +150 -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 +490 -0
@@ -0,0 +1,577 @@
1
+ # encoding: ASCII-8BIT
2
+ # SOAP4R - Ruby type mapping utility.
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 'xsd/codegen/gensupport'
11
+ require 'soap/mapping/schemadefinition'
12
+
13
+
14
+ module SOAP
15
+
16
+
17
+ module Mapping
18
+ RubyTypeNamespace = 'http://www.ruby-lang.org/xmlns/ruby/type/1.6'
19
+ RubyTypeInstanceNamespace =
20
+ 'http://www.ruby-lang.org/xmlns/ruby/type-instance'
21
+ RubyCustomTypeNamespace = 'http://www.ruby-lang.org/xmlns/ruby/type/custom'
22
+ ApacheSOAPTypeNamespace = 'http://xml.apache.org/xml-soap'
23
+
24
+
25
+ module TraverseSupport
26
+ def mark_marshalled_obj(obj, soap_obj)
27
+ raise if obj.nil?
28
+ Thread.current[:SOAPMapping][:MarshalKey][obj.__id__] = soap_obj
29
+ end
30
+
31
+ def mark_unmarshalled_obj(node, obj)
32
+ return if obj.nil?
33
+ # node.id is not Object#id but SOAPReference#id
34
+ Thread.current[:SOAPMapping][:MarshalKey][node.id] = obj
35
+ end
36
+ end
37
+
38
+
39
+ EMPTY_OPT = {}.freeze
40
+ def self.obj2soap(obj, registry = nil, type = nil, opt = EMPTY_OPT)
41
+ registry ||= Mapping::DefaultRegistry
42
+ soap_obj = nil
43
+ protect_mapping(opt) do
44
+ soap_obj = _obj2soap(obj, registry, type)
45
+ end
46
+ soap_obj
47
+ end
48
+
49
+ def self.objs2soap(objs, registry = nil, types = nil, opt = EMPTY_OPT)
50
+ registry ||= Mapping::DefaultRegistry
51
+ ary = []
52
+ protect_mapping(opt) do
53
+ 0.upto(objs.length - 1) do |idx|
54
+ type = types ? types[idx] : nil
55
+ soap = _obj2soap(objs[idx], registry, type)
56
+ ary << soap
57
+ end
58
+ end
59
+ ary
60
+ end
61
+
62
+ def self.soap2obj(node, registry = nil, klass = nil, opt = EMPTY_OPT)
63
+ registry ||= Mapping::DefaultRegistry
64
+ obj = nil
65
+ protect_mapping(opt) do
66
+ obj = _soap2obj(node, registry, klass)
67
+ end
68
+ obj
69
+ end
70
+
71
+ def self.ary2soap(ary, type_ns = XSD::Namespace, typename = XSD::AnyTypeLiteral, registry = nil, opt = EMPTY_OPT)
72
+ registry ||= Mapping::DefaultRegistry
73
+ type = XSD::QName.new(type_ns, typename)
74
+ soap_ary = SOAPArray.new(ValueArrayName, 1, type)
75
+ protect_mapping(opt) do
76
+ ary.each do |ele|
77
+ soap_ary.add(_obj2soap(ele, registry, type))
78
+ end
79
+ end
80
+ soap_ary
81
+ end
82
+
83
+ def self.ary2md(ary, rank, type_ns = XSD::Namespace, typename = XSD::AnyTypeLiteral, registry = nil, opt = EMPTY_OPT)
84
+ registry ||= Mapping::DefaultRegistry
85
+ type = XSD::QName.new(type_ns, typename)
86
+ md_ary = SOAPArray.new(ValueArrayName, rank, type)
87
+ protect_mapping(opt) do
88
+ add_md_ary(md_ary, ary, [], registry)
89
+ end
90
+ md_ary
91
+ end
92
+
93
+ def self.fault2exception(fault, registry = nil)
94
+ registry ||= Mapping::DefaultRegistry
95
+ detail = ""
96
+ if fault.detail
97
+ begin
98
+ fault.detail.type ||= XSD::QName::EMPTY
99
+ detail = soap2obj(fault.detail, registry) || ""
100
+ rescue MappingError
101
+ detail = fault.detail
102
+ end
103
+ end
104
+ if detail.is_a?(Mapping::SOAPException)
105
+ begin
106
+ e = detail.to_e
107
+ remote_backtrace = e.backtrace
108
+ e.set_backtrace(nil)
109
+ raise e # ruby sets current caller as local backtrace of e => e2.
110
+ rescue Exception => e
111
+ e.set_backtrace(remote_backtrace + e.backtrace[1..-1])
112
+ raise
113
+ end
114
+ else
115
+ fault.detail = detail
116
+ fault.set_backtrace(
117
+ if detail.is_a?(Array)
118
+ detail
119
+ else
120
+ [detail.to_s]
121
+ end
122
+ )
123
+ raise
124
+ end
125
+ end
126
+
127
+ def self._obj2soap(obj, registry, type = nil)
128
+ if obj.respond_to?(:to_xmlpart)
129
+ SOAPRawData.new(obj)
130
+ elsif defined?(::REXML) and defined?(::REXML::Element) and obj.is_a?(::REXML::Element)
131
+ SOAPRawData.new(SOAPREXMLElementWrap.new(obj))
132
+ elsif referent = Thread.current[:SOAPMapping][:MarshalKey][obj.__id__] and
133
+ !Thread.current[:SOAPMapping][:NoReference]
134
+ SOAPReference.new(referent)
135
+ elsif registry
136
+ registry.obj2soap(obj, type)
137
+ else
138
+ raise MappingError.new("no mapping registry given")
139
+ end
140
+ end
141
+
142
+ def self._soap2obj(node, registry, klass = nil)
143
+ if node.nil?
144
+ return nil
145
+ elsif node.is_a?(SOAPReference)
146
+ target = node.__getobj__
147
+ # target.id is not Object#id but SOAPReference#id
148
+ if referent = Thread.current[:SOAPMapping][:MarshalKey][target.id] and
149
+ !Thread.current[:SOAPMapping][:NoReference]
150
+ return referent
151
+ else
152
+ return _soap2obj(target, registry, klass)
153
+ end
154
+ end
155
+ return registry.soap2obj(node, klass)
156
+ end
157
+
158
+ def self.create_empty_object(klass)
159
+ klass.allocate
160
+ end
161
+
162
+ # Allow only (Letter | '_') (Letter | Digit | '-' | '_')* here.
163
+ # Caution: '.' is not allowed here.
164
+ # To follow XML spec., it should be NCName.
165
+ # (denied chars) => .[0-F][0-F]
166
+ # ex. a.b => a.2eb
167
+ #
168
+ def self.name2elename(name)
169
+ name.to_s.gsub(/([^a-zA-Z0-9:_\-]+)/n) {
170
+ '.' << $1.unpack('H2' * $1.size).join('.')
171
+ }.gsub(/::/n, '..')
172
+ end
173
+
174
+ def self.elename2name(name)
175
+ name.gsub(/\.\./n, '::').gsub(/((?:\.[0-9a-fA-F]{2})+)/n) {
176
+ [$1.delete('.')].pack('H*')
177
+ }
178
+ end
179
+
180
+ def self.const_from_name(name, lenient = false)
181
+ const = ::Object
182
+ name.sub(/\A::/, '').split('::').each do |const_str|
183
+ if /\A[A-Z]/ =~ const_str
184
+ begin
185
+ if const.const_defined?(const_str)
186
+ const = const.const_get(const_str)
187
+ next
188
+ end
189
+ rescue NameError
190
+ end
191
+ end
192
+ if lenient
193
+ const_str = Mapping.safeconstname(const_str)
194
+ if const.const_defined?(const_str)
195
+ const = const.const_get(const_str)
196
+ next
197
+ end
198
+ end
199
+ return nil
200
+ end
201
+ const
202
+ end
203
+
204
+ def self.class_from_name(name, lenient = false)
205
+ unless lenient
206
+ const = const_from_name_nonlenient(name)
207
+ else
208
+ const = const_from_name(name, true)
209
+ end
210
+ if const.is_a?(::Class)
211
+ const
212
+ else
213
+ nil
214
+ end
215
+ end
216
+
217
+ def self.module_from_name(name, lenient = false)
218
+ unless lenient
219
+ const = const_from_name_nonlenient(name)
220
+ else
221
+ const = const_from_name(name, true)
222
+ end
223
+ if const.is_a?(::Module)
224
+ const
225
+ else
226
+ nil
227
+ end
228
+ end
229
+
230
+ def self.const_from_name_nonlenient(name)
231
+ if Thread.current[:SOAPMapping]
232
+ Thread.current[:SOAPMapping][:ConstFromName][name] ||=
233
+ const_from_name(name)
234
+ else
235
+ const_from_name(name)
236
+ end
237
+ end
238
+
239
+ def self.class2qname(klass)
240
+ name = schema_type_definition(klass)
241
+ namespace = schema_ns_definition(klass)
242
+ XSD::QName.new(namespace, name)
243
+ end
244
+
245
+ def self.class2element(klass)
246
+ name = schema_type_definition(klass) ||
247
+ Mapping.name2elename(klass.name)
248
+ namespace = schema_ns_definition(klass) || RubyCustomTypeNamespace
249
+ XSD::QName.new(namespace, name)
250
+ end
251
+
252
+ def self.obj2element(obj)
253
+ name = namespace = nil
254
+ ivars = obj.instance_variables
255
+ if ivars.include?('@schema_type')
256
+ name = obj.instance_variable_get('@schema_type')
257
+ end
258
+ if ivars.include?('@schema_ns')
259
+ namespace = obj.instance_variable_get('@schema_ns')
260
+ end
261
+ if !name or !namespace
262
+ class2qname(obj.class)
263
+ else
264
+ XSD::QName.new(namespace, name)
265
+ end
266
+ end
267
+
268
+ def self.to_qname(obj, ns = nil)
269
+ if obj.is_a?(XSD::QName)
270
+ obj
271
+ else
272
+ XSD::QName.new(ns, obj)
273
+ end
274
+ end
275
+
276
+ def self.define_singleton_method(obj, name, &block)
277
+ sclass = (class << obj; self; end)
278
+ sclass.class_eval {
279
+ define_method(name, &block)
280
+ }
281
+ end
282
+
283
+ def self.get_attributes(obj)
284
+ if obj.is_a?(::Hash)
285
+ obj
286
+ else
287
+ rs = {}
288
+ obj.instance_variables.each do |ele|
289
+ rs[ele.sub(/^@/, '')] = obj.instance_variable_get(ele)
290
+ end
291
+ rs
292
+ end
293
+ end
294
+
295
+ EMPTY_ATTRIBUTES = {}.freeze
296
+ def self.get_attributes_for_any(obj)
297
+ if obj.respond_to?(:__xmlele_any)
298
+ obj.__xmlele_any || EMPTY_ATTRIBUTES
299
+ else
300
+ get_attributes(obj)
301
+ end
302
+ end
303
+
304
+ def self.get_attribute(obj, attr_name)
305
+ case obj
306
+ when ::SOAP::Mapping::Object
307
+ return obj[attr_name]
308
+ when ::Hash
309
+ return obj[attr_name] || obj[attr_name.intern]
310
+ else
311
+ if obj.respond_to?(attr_name)
312
+ return obj.__send__(attr_name)
313
+ end
314
+ iv = obj.instance_variables
315
+ name = Mapping.safevarname(attr_name)
316
+ if iv.include?("@#{name}")
317
+ return obj.instance_variable_get("@#{name}")
318
+ elsif iv.include?("@#{attr_name}")
319
+ return obj.instance_variable_get("@#{attr_name}")
320
+ end
321
+ if obj.respond_to?(name)
322
+ return obj.__send__(name)
323
+ end
324
+ nil
325
+ end
326
+ end
327
+
328
+ def self.set_attributes(obj, values)
329
+ case obj
330
+ when ::SOAP::Mapping::Object
331
+ values.each do |attr_name, value|
332
+ obj.__add_xmlele_value(attr_name, value)
333
+ end
334
+ else
335
+ values.each do |attr_name, value|
336
+ # untaint depends GenSupport.safevarname
337
+ name = Mapping.safevarname(attr_name).untaint
338
+ setter = name + "="
339
+ if obj.respond_to?(setter)
340
+ obj.__send__(setter, value)
341
+ else
342
+ obj.instance_variable_set('@' + name, value)
343
+ begin
344
+ unless obj.respond_to?(name)
345
+ obj.instance_eval <<-EOS
346
+ def #{name}
347
+ @#{name}
348
+ end
349
+ EOS
350
+ end
351
+ unless self.respond_to?(name + "=")
352
+ obj.instance_eval <<-EOS
353
+ def #{name}=(value)
354
+ @#{name} = value
355
+ end
356
+ EOS
357
+ end
358
+ rescue TypeError
359
+ # singleton class may not exist (e.g. Float)
360
+ end
361
+ end
362
+ end
363
+ end
364
+ end
365
+
366
+ def self.safeconstname(name)
367
+ Thread.current[:SOAPMapping][:SafeConstName][name] ||=
368
+ XSD::CodeGen::GenSupport.safeconstname(name)
369
+ end
370
+
371
+ def self.safemethodname(name)
372
+ Thread.current[:SOAPMapping][:SafeMethodName][name] ||=
373
+ XSD::CodeGen::GenSupport.safemethodname(name)
374
+ end
375
+
376
+ def self.safevarname(name)
377
+ Thread.current[:SOAPMapping][:SafeVarName][name] ||=
378
+ XSD::CodeGen::GenSupport.safevarname(name)
379
+ end
380
+
381
+ def self.root_type_hint
382
+ Thread.current[:SOAPMapping][:RootTypeHint]
383
+ end
384
+
385
+ def self.reset_root_type_hint
386
+ Thread.current[:SOAPMapping][:RootTypeHint] = false
387
+ end
388
+
389
+ def self.external_ces
390
+ Thread.current[:SOAPMapping][:ExternalCES]
391
+ end
392
+
393
+ def self.schema_ns_definition(klass)
394
+ class_schema_variable(:schema_ns, klass)
395
+ end
396
+
397
+ def self.schema_name_definition(klass)
398
+ class_schema_variable(:schema_name, klass)
399
+ end
400
+
401
+ def self.schema_type_definition(klass)
402
+ class_schema_variable(:schema_type, klass)
403
+ end
404
+
405
+ def self.schema_qualified_definition(klass)
406
+ class_schema_variable(:schema_qualified, klass)
407
+ end
408
+
409
+ def self.schema_element_definition(klass)
410
+ class_schema_variable(:schema_element, klass)
411
+ end
412
+
413
+ def self.schema_attribute_definition(klass)
414
+ class_schema_variable(:schema_attribute, klass)
415
+ end
416
+
417
+ def self.schema_definition_classdef(klass)
418
+ if Thread.current[:SOAPMapping][:SchemaDefinition].key?(klass)
419
+ return Thread.current[:SOAPMapping][:SchemaDefinition][klass]
420
+ end
421
+ schema_ns = schema_ns_definition(klass)
422
+ schema_name = schema_name_definition(klass)
423
+ schema_type = schema_type_definition(klass)
424
+ qualified = schema_qualified_definition(klass)
425
+ elements = schema_element_definition(klass)
426
+ attributes = schema_attribute_definition(klass)
427
+ return nil if schema_name.nil? and schema_type.nil?
428
+ schema_name = Mapping.to_qname(schema_name, schema_ns) if schema_name
429
+ schema_type = Mapping.to_qname(schema_type, schema_ns) if schema_type
430
+ definition = create_schema_definition(klass,
431
+ :schema_name => schema_name,
432
+ :schema_type => schema_type,
433
+ :is_anonymous => false,
434
+ :schema_qualified => qualified,
435
+ :schema_element => elements,
436
+ :schema_attribute => attributes
437
+ )
438
+ Thread.current[:SOAPMapping][:SchemaDefinition][klass] = definition
439
+ definition
440
+ end
441
+
442
+ def self.create_schema_definition(klass, definition)
443
+ schema_ns = definition[:schema_ns]
444
+ schema_name = definition[:schema_name]
445
+ schema_type = definition[:schema_type]
446
+ is_anonymous = definition[:is_anonymous]
447
+ schema_basetype = definition[:schema_basetype]
448
+ schema_qualified = definition[:schema_qualified]
449
+ schema_element = definition[:schema_element]
450
+ schema_attributes = definition[:schema_attribute]
451
+ definition = SchemaDefinition.new(klass, schema_name, schema_type, is_anonymous, schema_qualified)
452
+ definition.basetype = schema_basetype
453
+ definition.attributes = schema_attributes
454
+ if schema_element
455
+ if schema_element.respond_to?(:is_concrete_definition) and
456
+ schema_element.is_concrete_definition
457
+ definition.elements = schema_element
458
+ else
459
+ default_ns = schema_name.namespace if schema_name
460
+ default_ns ||= schema_type.namespace if schema_type
461
+ definition.elements = parse_schema_definition(schema_element, default_ns)
462
+ if klass < ::Array
463
+ definition.elements.set_array
464
+ end
465
+ end
466
+ end
467
+ definition
468
+ end
469
+
470
+ # returns SchemaComplexTypeDefinition
471
+ def self.parse_schema_definition(schema_element, default_ns)
472
+ definition = nil
473
+ if schema_element[0] == :choice
474
+ schema_element.shift
475
+ definition = SchemaChoiceDefinition.new
476
+ else
477
+ definition = SchemaSequenceDefinition.new
478
+ end
479
+ schema_element.each do |ele|
480
+ element_definition = parse_schema_element_definition(ele, default_ns)
481
+ definition << element_definition
482
+ end
483
+ definition
484
+ end
485
+
486
+ # returns SchemaElementDefinition
487
+ def self.parse_schema_element_definition(schema_element, default_ns)
488
+ if schema_element[0] == :choice
489
+ parse_schema_definition(schema_element, default_ns)
490
+ elsif schema_element[0].is_a?(Array)
491
+ parse_schema_definition(schema_element, default_ns)
492
+ else
493
+ varname, info, occurrence = schema_element
494
+ mapped_class_str, elename = info
495
+ if occurrence
496
+ minoccurs, maxoccurs = occurrence
497
+ else
498
+ minoccurs, maxoccurs = 1, 1
499
+ end
500
+ as_any = as_array = false
501
+ if /\[\]$/ =~ mapped_class_str
502
+ mapped_class_str = mapped_class_str.sub(/\[\]$/, '')
503
+ if mapped_class_str.empty?
504
+ mapped_class_str = nil
505
+ end
506
+ as_array = true
507
+ end
508
+ if mapped_class_str
509
+ mapped_class = Mapping.class_from_name(mapped_class_str)
510
+ if mapped_class.nil?
511
+ warn("cannot find mapped class: #{mapped_class_str}")
512
+ end
513
+ end
514
+ if elename == XSD::AnyTypeName
515
+ as_any = true
516
+ elsif elename.nil?
517
+ elename = XSD::QName.new(default_ns, varname)
518
+ end
519
+ SchemaElementDefinition.new(
520
+ varname, mapped_class, elename, minoccurs, maxoccurs, as_any, as_array)
521
+ end
522
+ end
523
+
524
+ class << Mapping
525
+ public
526
+
527
+ def protect_threadvars(*symbols)
528
+ backup = {}
529
+ begin
530
+ symbols.each do |sym|
531
+ backup[sym] = Thread.current[sym]
532
+ end
533
+ yield
534
+ ensure
535
+ symbols.each do |sym|
536
+ Thread.current[sym] = backup[sym]
537
+ end
538
+ end
539
+ end
540
+
541
+ private
542
+
543
+ def class_schema_variable(sym, klass)
544
+ var = "@@#{sym}"
545
+ klass.class_variables.include?(var) ? klass.class_eval(var) : nil
546
+ end
547
+
548
+ def protect_mapping(opt)
549
+ protect_threadvars(:SOAPMapping) do
550
+ data = Thread.current[:SOAPMapping] = {}
551
+ data[:MarshalKey] = {}
552
+ data[:ExternalCES] = opt[:external_ces] || XSD::Charset.encoding
553
+ data[:NoReference] = opt[:no_reference]
554
+ data[:RootTypeHint] = opt[:root_type_hint]
555
+ data[:SchemaDefinition] = {}
556
+ data[:SafeConstName] = {}
557
+ data[:SafeMethodName] = {}
558
+ data[:SafeVarName] = {}
559
+ data[:ConstFromName] = {}
560
+ yield
561
+ end
562
+ end
563
+
564
+ def add_md_ary(md_ary, ary, indices, registry)
565
+ for idx in 0..(ary.size - 1)
566
+ if ary[idx].is_a?(Array)
567
+ add_md_ary(md_ary, ary[idx], indices + [idx], registry)
568
+ else
569
+ md_ary[*(indices + [idx])] = _obj2soap(ary[idx], registry)
570
+ end
571
+ end
572
+ end
573
+ end
574
+ end
575
+
576
+
577
+ end