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