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,580 @@
1
+ # SOAP4R - SOAP WSDL driver
2
+ # Copyright (C) 2002, 2003, 2005 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 'wsdl/parser'
10
+ require 'wsdl/importer'
11
+ require 'xsd/qname'
12
+ require 'xsd/codegen/gensupport'
13
+ require 'soap/mapping/wsdlencodedregistry'
14
+ require 'soap/mapping/wsdlliteralregistry'
15
+ require 'soap/rpc/driver'
16
+ require 'wsdl/soap/methodDefCreator'
17
+
18
+
19
+ module SOAP
20
+
21
+
22
+ class WSDLDriverFactory
23
+ class FactoryError < StandardError; end
24
+
25
+ attr_reader :wsdl
26
+
27
+ def initialize(wsdl)
28
+ @wsdl = import(wsdl)
29
+ @methoddefcreator = WSDL::SOAP::MethodDefCreator.new(@wsdl, nil)
30
+ end
31
+
32
+ def inspect
33
+ "#<#{self.class}:#{@wsdl.name}>"
34
+ end
35
+
36
+ def create_rpc_driver(servicename = nil, portname = nil)
37
+ port = find_port(servicename, portname)
38
+ drv = SOAP::RPC::Driver.new(port.soap_address.location)
39
+ init_driver(drv, port)
40
+ add_operation(drv, port)
41
+ drv
42
+ end
43
+
44
+ # deprecated old interface
45
+ def create_driver(servicename = nil, portname = nil)
46
+ warn("WSDLDriverFactory#create_driver is deprecated. Use create_rpc_driver instead.")
47
+ port = find_port(servicename, portname)
48
+ WSDLDriver.new(@wsdl, port, nil)
49
+ end
50
+
51
+ # Backward compatibility.
52
+ alias createDriver create_driver
53
+
54
+ private
55
+
56
+ def find_port(servicename = nil, portname = nil)
57
+ service = port = nil
58
+ if servicename
59
+ service = @wsdl.service(
60
+ XSD::QName.new(@wsdl.targetnamespace, servicename))
61
+ else
62
+ service = @wsdl.services[0]
63
+ end
64
+ if service.nil?
65
+ raise FactoryError.new("service #{servicename} not found in WSDL")
66
+ end
67
+ if portname
68
+ port = service.ports[XSD::QName.new(@wsdl.targetnamespace, portname)]
69
+ if port.nil?
70
+ raise FactoryError.new("port #{portname} not found in WSDL")
71
+ end
72
+ else
73
+ port = service.ports.find { |port| !port.soap_address.nil? }
74
+ if port.nil?
75
+ raise FactoryError.new("no ports have soap:address")
76
+ end
77
+ end
78
+ if port.soap_address.nil?
79
+ raise FactoryError.new("soap:address element not found in WSDL")
80
+ end
81
+ port
82
+ end
83
+
84
+ def init_driver(drv, port)
85
+ wsdl_elements = @wsdl.collect_elements
86
+ wsdl_types = @wsdl.collect_complextypes + @wsdl.collect_simpletypes
87
+ rpc_decode_typemap = wsdl_types +
88
+ @wsdl.soap_rpc_complextypes(port.find_binding)
89
+ drv.proxy.mapping_registry =
90
+ Mapping::WSDLEncodedRegistry.new(rpc_decode_typemap)
91
+ drv.proxy.literal_mapping_registry =
92
+ Mapping::WSDLLiteralRegistry.new(wsdl_types, wsdl_elements)
93
+ end
94
+
95
+ def add_operation(drv, port)
96
+ port.find_binding.operations.each do |op_bind|
97
+ op_name = op_bind.soapoperation_name
98
+ soapaction = op_bind.soapaction || ''
99
+ orgname = op_name.name
100
+ name = XSD::CodeGen::GenSupport.safemethodname(orgname)
101
+ param_def = create_param_def(op_bind)
102
+ opt = {
103
+ :request_style => op_bind.soapoperation_style,
104
+ :response_style => op_bind.soapoperation_style,
105
+ :request_use => op_bind.input.soapbody_use,
106
+ :response_use => op_bind.output.soapbody_use,
107
+ :elementformdefault => false,
108
+ :attributeformdefault => false
109
+ }
110
+ if op_bind.soapoperation_style == :rpc
111
+ drv.add_rpc_operation(op_name, soapaction, name, param_def, opt)
112
+ else
113
+ drv.add_document_operation(soapaction, name, param_def, opt)
114
+ end
115
+ if orgname != name and orgname.capitalize == name.capitalize
116
+ ::SOAP::Mapping.define_singleton_method(drv, orgname) do |*arg|
117
+ __send__(name, *arg)
118
+ end
119
+ end
120
+ end
121
+ end
122
+
123
+ def import(location)
124
+ WSDL::Importer.import(location)
125
+ end
126
+
127
+ def create_param_def(op_bind)
128
+ op = op_bind.find_operation
129
+ if op_bind.soapoperation_style == :rpc
130
+ param_def = @methoddefcreator.collect_rpcparameter(op)
131
+ else
132
+ param_def = @methoddefcreator.collect_documentparameter(op)
133
+ end
134
+ # the first element of typedef in param_def is a String like
135
+ # "::SOAP::SOAPStruct". turn this String to a class.
136
+ param_def.collect { |io, name, typedef|
137
+ typedef[0] = Mapping.class_from_name(typedef[0])
138
+ [io, name, typedef]
139
+ }
140
+ end
141
+
142
+ def partqname(part)
143
+ if part.type
144
+ part.type
145
+ else
146
+ part.element
147
+ end
148
+ end
149
+
150
+ def param_def(type, name, klass, partqname)
151
+ [type, name, [klass, partqname.namespace, partqname.name]]
152
+ end
153
+
154
+ def filter_parts(partsdef, partssource)
155
+ parts = partsdef.split(/\s+/)
156
+ partssource.find_all { |part| parts.include?(part.name) }
157
+ end
158
+ end
159
+
160
+
161
+ class WSDLDriver
162
+ class << self
163
+ if RUBY_VERSION >= "1.7.0"
164
+ def __attr_proxy(symbol, assignable = false)
165
+ name = symbol.to_s
166
+ define_method(name) {
167
+ @servant.__send__(name)
168
+ }
169
+ if assignable
170
+ aname = name + '='
171
+ define_method(aname) { |rhs|
172
+ @servant.__send__(aname, rhs)
173
+ }
174
+ end
175
+ end
176
+ else
177
+ def __attr_proxy(symbol, assignable = false)
178
+ name = symbol.to_s
179
+ module_eval <<-EOS
180
+ def #{name}
181
+ @servant.#{name}
182
+ end
183
+ EOS
184
+ if assignable
185
+ module_eval <<-EOS
186
+ def #{name}=(value)
187
+ @servant.#{name} = value
188
+ end
189
+ EOS
190
+ end
191
+ end
192
+ end
193
+ end
194
+
195
+ __attr_proxy :options
196
+ __attr_proxy :headerhandler
197
+ __attr_proxy :streamhandler
198
+ __attr_proxy :test_loopback_response
199
+ __attr_proxy :endpoint_url, true
200
+ __attr_proxy :mapping_registry, true # for RPC unmarshal
201
+ __attr_proxy :wsdl_mapping_registry, true # for RPC marshal
202
+ __attr_proxy :default_encodingstyle, true
203
+ __attr_proxy :generate_explicit_type, true
204
+ __attr_proxy :allow_unqualified_element, true
205
+
206
+ def httpproxy
207
+ @servant.options["protocol.http.proxy"]
208
+ end
209
+
210
+ def httpproxy=(httpproxy)
211
+ @servant.options["protocol.http.proxy"] = httpproxy
212
+ end
213
+
214
+ def wiredump_dev
215
+ @servant.options["protocol.http.wiredump_dev"]
216
+ end
217
+
218
+ def wiredump_dev=(wiredump_dev)
219
+ @servant.options["protocol.http.wiredump_dev"] = wiredump_dev
220
+ end
221
+
222
+ def mandatorycharset
223
+ @servant.options["protocol.mandatorycharset"]
224
+ end
225
+
226
+ def mandatorycharset=(mandatorycharset)
227
+ @servant.options["protocol.mandatorycharset"] = mandatorycharset
228
+ end
229
+
230
+ def wiredump_file_base
231
+ @servant.options["protocol.wiredump_file_base"]
232
+ end
233
+
234
+ def wiredump_file_base=(wiredump_file_base)
235
+ @servant.options["protocol.wiredump_file_base"] = wiredump_file_base
236
+ end
237
+
238
+ def initialize(wsdl, port, logdev)
239
+ @servant = Servant__.new(self, wsdl, port, logdev)
240
+ end
241
+
242
+ def inspect
243
+ "#<#{self.class}:#{@servant.port.name}>"
244
+ end
245
+
246
+ def reset_stream
247
+ @servant.reset_stream
248
+ end
249
+
250
+ # Backward compatibility.
251
+ alias generateEncodeType= generate_explicit_type=
252
+
253
+ class Servant__
254
+ include SOAP
255
+
256
+ attr_reader :options
257
+ attr_reader :port
258
+
259
+ attr_accessor :soapaction
260
+ attr_accessor :default_encodingstyle
261
+ attr_accessor :allow_unqualified_element
262
+ attr_accessor :generate_explicit_type
263
+ attr_accessor :mapping_registry
264
+ attr_accessor :wsdl_mapping_registry
265
+
266
+ def initialize(host, wsdl, port, logdev)
267
+ @host = host
268
+ @wsdl = wsdl
269
+ @port = port
270
+ @logdev = logdev
271
+ @soapaction = nil
272
+ @options = setup_options
273
+ @default_encodingstyle = nil
274
+ @allow_unqualified_element = nil
275
+ @generate_explicit_type = false
276
+ @mapping_registry = nil # for rpc unmarshal
277
+ @wsdl_mapping_registry = nil # for rpc marshal
278
+ @wiredump_file_base = nil
279
+ @mandatorycharset = nil
280
+ @wsdl_elements = @wsdl.collect_elements
281
+ @wsdl_types = @wsdl.collect_complextypes + @wsdl.collect_simpletypes
282
+ @rpc_decode_typemap = @wsdl_types +
283
+ @wsdl.soap_rpc_complextypes(port.find_binding)
284
+ @wsdl_mapping_registry = Mapping::WSDLEncodedRegistry.new(
285
+ @rpc_decode_typemap)
286
+ @doc_mapper = Mapping::WSDLLiteralRegistry.new(
287
+ @wsdl_types, @wsdl_elements)
288
+ endpoint_url = @port.soap_address.location
289
+ # Convert a map which key is QName, to a Hash which key is String.
290
+ @operation = {}
291
+ @port.inputoperation_map.each do |op_name, op_info|
292
+ orgname = op_name.name
293
+ name = XSD::CodeGen::GenSupport.safemethodname(orgname)
294
+ @operation[name] = @operation[orgname] = op_info
295
+ add_method_interface(op_info)
296
+ end
297
+ @proxy = ::SOAP::RPC::Proxy.new(endpoint_url, @soapaction, @options)
298
+ end
299
+
300
+ def inspect
301
+ "#<#{self.class}:#{@proxy.inspect}>"
302
+ end
303
+
304
+ def endpoint_url
305
+ @proxy.endpoint_url
306
+ end
307
+
308
+ def endpoint_url=(endpoint_url)
309
+ @proxy.endpoint_url = endpoint_url
310
+ end
311
+
312
+ def headerhandler
313
+ @proxy.headerhandler
314
+ end
315
+
316
+ def streamhandler
317
+ @proxy.streamhandler
318
+ end
319
+
320
+ def test_loopback_response
321
+ @proxy.test_loopback_response
322
+ end
323
+
324
+ def reset_stream
325
+ @proxy.reset_stream
326
+ end
327
+
328
+ def rpc_call(name, *values)
329
+ set_wiredump_file_base(name)
330
+ unless op_info = @operation[name]
331
+ raise RuntimeError, "method: #{name} not defined"
332
+ end
333
+ req_header = create_request_header
334
+ req_body = create_request_body(op_info, *values)
335
+ reqopt = create_options({
336
+ :soapaction => op_info.soapaction || @soapaction})
337
+ resopt = create_options({
338
+ :decode_typemap => @rpc_decode_typemap})
339
+ env = @proxy.route(req_header, req_body, reqopt, resopt)
340
+ raise EmptyResponseError unless env
341
+ receive_headers(env.header)
342
+ begin
343
+ @proxy.check_fault(env.body)
344
+ rescue ::SOAP::FaultError => e
345
+ Mapping.fault2exception(e)
346
+ end
347
+ ret = env.body.response ?
348
+ Mapping.soap2obj(env.body.response, @mapping_registry) : nil
349
+ if env.body.outparams
350
+ outparams = env.body.outparams.collect { |outparam|
351
+ Mapping.soap2obj(outparam)
352
+ }
353
+ return [ret].concat(outparams)
354
+ else
355
+ return ret
356
+ end
357
+ end
358
+
359
+ # req_header: [[element, mustunderstand, encodingstyle(QName/String)], ...]
360
+ # req_body: SOAPBasetype/SOAPCompoundtype
361
+ def document_send(name, header_obj, body_obj)
362
+ set_wiredump_file_base(name)
363
+ unless op_info = @operation[name]
364
+ raise RuntimeError, "method: #{name} not defined"
365
+ end
366
+ req_header = header_obj ? header_from_obj(header_obj, op_info) : nil
367
+ req_body = body_from_obj(body_obj, op_info)
368
+ opt = create_options({
369
+ :soapaction => op_info.soapaction || @soapaction,
370
+ :decode_typemap => @wsdl_types})
371
+ env = @proxy.invoke(req_header, req_body, opt)
372
+ raise EmptyResponseError unless env
373
+ if env.body.fault
374
+ raise ::SOAP::FaultError.new(env.body.fault)
375
+ end
376
+ res_body_obj = env.body.response ?
377
+ Mapping.soap2obj(env.body.response, @mapping_registry) : nil
378
+ return env.header, res_body_obj
379
+ end
380
+
381
+ private
382
+
383
+ def create_options(hash = nil)
384
+ opt = {}
385
+ opt[:default_encodingstyle] = @default_encodingstyle
386
+ opt[:allow_unqualified_element] = @allow_unqualified_element
387
+ opt[:generate_explicit_type] = @generate_explicit_type
388
+ opt.update(hash) if hash
389
+ opt
390
+ end
391
+
392
+ def set_wiredump_file_base(name)
393
+ if @wiredump_file_base
394
+ @proxy.set_wiredump_file_base(@wiredump_file_base + "_#{name}")
395
+ end
396
+ end
397
+
398
+ def create_request_header
399
+ headers = @proxy.headerhandler.on_outbound
400
+ if headers.empty?
401
+ nil
402
+ else
403
+ h = SOAPHeader.new
404
+ headers.each do |header|
405
+ h.add(header.elename.name, header)
406
+ end
407
+ h
408
+ end
409
+ end
410
+
411
+ def receive_headers(headers)
412
+ @proxy.headerhandler.on_inbound(headers) if headers
413
+ end
414
+
415
+ def create_request_body(op_info, *values)
416
+ method = create_method_struct(op_info, *values)
417
+ SOAPBody.new(method)
418
+ end
419
+
420
+ def create_method_struct(op_info, *params)
421
+ parts_names = op_info.bodyparts.collect { |part| part.name }
422
+ obj = create_method_obj(parts_names, params)
423
+ method = Mapping.obj2soap(obj, @wsdl_mapping_registry, op_info.op_name)
424
+ if method.members.size != parts_names.size
425
+ new_method = SOAPStruct.new
426
+ method.each do |key, value|
427
+ if parts_names.include?(key)
428
+ new_method.add(key, value)
429
+ end
430
+ end
431
+ method = new_method
432
+ end
433
+ method.elename = op_info.op_name
434
+ method.type = XSD::QName.new # Request should not be typed.
435
+ method
436
+ end
437
+
438
+ def create_method_obj(names, params)
439
+ o = Object.new
440
+ idx = 0
441
+ while idx < params.length
442
+ o.instance_variable_set('@' + names[idx], params[idx])
443
+ idx += 1
444
+ end
445
+ o
446
+ end
447
+
448
+ def header_from_obj(obj, op_info)
449
+ if obj.is_a?(SOAPHeader)
450
+ obj
451
+ elsif op_info.headerparts.empty?
452
+ if obj.nil?
453
+ nil
454
+ else
455
+ raise RuntimeError.new("no header definition in schema: #{obj}")
456
+ end
457
+ elsif op_info.headerparts.size == 1
458
+ part = op_info.headerparts[0]
459
+ header = SOAPHeader.new()
460
+ header.add(headeritem_from_obj(obj, part.element || part.eletype))
461
+ header
462
+ else
463
+ header = SOAPHeader.new()
464
+ op_info.headerparts.each do |part|
465
+ child = Mapping.get_attribute(obj, part.name)
466
+ ele = headeritem_from_obj(child, part.element || part.eletype)
467
+ header.add(part.name, ele)
468
+ end
469
+ header
470
+ end
471
+ end
472
+
473
+ def headeritem_from_obj(obj, name)
474
+ if obj.nil?
475
+ SOAPElement.new(name)
476
+ elsif obj.is_a?(SOAPHeaderItem)
477
+ obj
478
+ else
479
+ Mapping.obj2soap(obj, @doc_mapper, name)
480
+ end
481
+ end
482
+
483
+ def body_from_obj(obj, op_info)
484
+ if obj.is_a?(SOAPBody)
485
+ obj
486
+ elsif op_info.bodyparts.empty?
487
+ if obj.nil?
488
+ nil
489
+ else
490
+ raise RuntimeError.new("no body found in schema")
491
+ end
492
+ elsif op_info.bodyparts.size == 1
493
+ part = op_info.bodyparts[0]
494
+ ele = bodyitem_from_obj(obj, part.element || part.type)
495
+ SOAPBody.new(ele)
496
+ else
497
+ body = SOAPBody.new
498
+ op_info.bodyparts.each do |part|
499
+ child = Mapping.get_attribute(obj, part.name)
500
+ ele = bodyitem_from_obj(child, part.element || part.type)
501
+ body.add(ele.elename.name, ele)
502
+ end
503
+ body
504
+ end
505
+ end
506
+
507
+ def bodyitem_from_obj(obj, name)
508
+ if obj.nil?
509
+ SOAPElement.new(name)
510
+ elsif obj.is_a?(SOAPElement)
511
+ obj
512
+ else
513
+ Mapping.obj2soap(obj, @doc_mapper, name)
514
+ end
515
+ end
516
+
517
+ def add_method_interface(op_info)
518
+ name = XSD::CodeGen::GenSupport.safemethodname(op_info.op_name.name)
519
+ orgname = op_info.op_name.name
520
+ parts_names = op_info.bodyparts.collect { |part| part.name }
521
+ case op_info.style
522
+ when :document
523
+ if orgname != name and orgname.capitalize == name.capitalize
524
+ add_document_method_interface(orgname, parts_names)
525
+ end
526
+ add_document_method_interface(name, parts_names)
527
+ when :rpc
528
+ if orgname != name and orgname.capitalize == name.capitalize
529
+ add_rpc_method_interface(orgname, parts_names)
530
+ end
531
+ add_rpc_method_interface(name, parts_names)
532
+ else
533
+ raise RuntimeError.new("unknown style: #{op_info.style}")
534
+ end
535
+ end
536
+
537
+ def add_rpc_method_interface(name, parts_names)
538
+ param_count = parts_names.size
539
+ @host.instance_eval <<-EOS
540
+ def #{name}(*arg)
541
+ unless arg.size == #{param_count}
542
+ raise ArgumentError.new(
543
+ "wrong number of arguments (\#{arg.size} for #{param_count})")
544
+ end
545
+ @servant.rpc_call(#{name.dump}, *arg)
546
+ end
547
+ EOS
548
+ @host.method(name)
549
+ end
550
+
551
+ def add_document_method_interface(name, parts_names)
552
+ @host.instance_eval <<-EOS
553
+ def #{name}(h, b)
554
+ @servant.document_send(#{name.dump}, h, b)
555
+ end
556
+ EOS
557
+ @host.method(name)
558
+ end
559
+
560
+ def setup_options
561
+ if opt = Property.loadproperty(::SOAP::PropertyName)
562
+ opt = opt["client"]
563
+ end
564
+ opt ||= Property.new
565
+ opt.add_hook("protocol.mandatorycharset") do |key, value|
566
+ @mandatorycharset = value
567
+ end
568
+ opt.add_hook("protocol.wiredump_file_base") do |key, value|
569
+ @wiredump_file_base = value
570
+ end
571
+ opt["protocol.http.charset"] ||= XSD::Charset.xml_encoding_label
572
+ opt["protocol.http.proxy"] ||= Env::HTTP_PROXY
573
+ opt["protocol.http.no_proxy"] ||= Env::NO_PROXY
574
+ opt
575
+ end
576
+ end
577
+ end
578
+
579
+
580
+ end