DefV-soap4r 1.5.8.2

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 (443) hide show
  1. data/bin/wsdl2ruby.rb +137 -0
  2. data/bin/xsd2ruby.rb +90 -0
  3. data/lib/soap/attachment.rb +108 -0
  4. data/lib/soap/attrproxy.rb +34 -0
  5. data/lib/soap/baseData.rb +1094 -0
  6. data/lib/soap/element.rb +277 -0
  7. data/lib/soap/encodingstyle/aspDotNetHandler.rb +207 -0
  8. data/lib/soap/encodingstyle/handler.rb +120 -0
  9. data/lib/soap/encodingstyle/literalHandler.rb +195 -0
  10. data/lib/soap/encodingstyle/soapHandler.rb +559 -0
  11. data/lib/soap/filter.rb +13 -0
  12. data/lib/soap/filter/filterchain.rb +51 -0
  13. data/lib/soap/filter/handler.rb +31 -0
  14. data/lib/soap/filter/streamhandler.rb +29 -0
  15. data/lib/soap/generator.rb +299 -0
  16. data/lib/soap/header/handler.rb +61 -0
  17. data/lib/soap/header/handlerset.rb +70 -0
  18. data/lib/soap/header/mappinghandler.rb +47 -0
  19. data/lib/soap/header/simplehandler.rb +44 -0
  20. data/lib/soap/httpconfigloader.rb +139 -0
  21. data/lib/soap/mapping.rb +12 -0
  22. data/lib/soap/mapping/encodedregistry.rb +537 -0
  23. data/lib/soap/mapping/factory.rb +388 -0
  24. data/lib/soap/mapping/literalregistry.rb +391 -0
  25. data/lib/soap/mapping/mapping.rb +577 -0
  26. data/lib/soap/mapping/registry.rb +295 -0
  27. data/lib/soap/mapping/rubytypeFactory.rb +446 -0
  28. data/lib/soap/mapping/schemadefinition.rb +170 -0
  29. data/lib/soap/mapping/typeMap.rb +106 -0
  30. data/lib/soap/mapping/wsdlencodedregistry.rb +211 -0
  31. data/lib/soap/mapping/wsdlliteralregistry.rb +248 -0
  32. data/lib/soap/marshal.rb +59 -0
  33. data/lib/soap/mimemessage.rb +241 -0
  34. data/lib/soap/nestedexception.rb +42 -0
  35. data/lib/soap/netHttpClient.rb +241 -0
  36. data/lib/soap/ns.rb +34 -0
  37. data/lib/soap/parser.rb +252 -0
  38. data/lib/soap/processor.rb +66 -0
  39. data/lib/soap/property.rb +333 -0
  40. data/lib/soap/proxy.rb +14 -0
  41. data/lib/soap/rpc/cgistub.rb +247 -0
  42. data/lib/soap/rpc/driver.rb +221 -0
  43. data/lib/soap/rpc/element.rb +374 -0
  44. data/lib/soap/rpc/element.rb.orig +374 -0
  45. data/lib/soap/rpc/httpserver.rb +142 -0
  46. data/lib/soap/rpc/methodDef.rb +68 -0
  47. data/lib/soap/rpc/proxy.rb +572 -0
  48. data/lib/soap/rpc/router.rb +662 -0
  49. data/lib/soap/rpc/rpc.rb +25 -0
  50. data/lib/soap/rpc/soaplet.rb +200 -0
  51. data/lib/soap/rpc/standaloneServer.rb +43 -0
  52. data/lib/soap/soap.rb +151 -0
  53. data/lib/soap/streamHandler.rb +301 -0
  54. data/lib/soap/wsdlDriver.rb +164 -0
  55. data/lib/wsdl/binding.rb +65 -0
  56. data/lib/wsdl/data.rb +64 -0
  57. data/lib/wsdl/definitions.rb +236 -0
  58. data/lib/wsdl/documentation.rb +32 -0
  59. data/lib/wsdl/import.rb +80 -0
  60. data/lib/wsdl/importer.rb +38 -0
  61. data/lib/wsdl/info.rb +50 -0
  62. data/lib/wsdl/message.rb +54 -0
  63. data/lib/wsdl/operation.rb +151 -0
  64. data/lib/wsdl/operationBinding.rb +240 -0
  65. data/lib/wsdl/param.rb +93 -0
  66. data/lib/wsdl/parser.rb +164 -0
  67. data/lib/wsdl/part.rb +52 -0
  68. data/lib/wsdl/port.rb +66 -0
  69. data/lib/wsdl/portType.rb +75 -0
  70. data/lib/wsdl/service.rb +61 -0
  71. data/lib/wsdl/soap/address.rb +40 -0
  72. data/lib/wsdl/soap/binding.rb +49 -0
  73. data/lib/wsdl/soap/body.rb +58 -0
  74. data/lib/wsdl/soap/cgiStubCreator.rb +92 -0
  75. data/lib/wsdl/soap/classDefCreator.rb +433 -0
  76. data/lib/wsdl/soap/classDefCreatorSupport.rb +240 -0
  77. data/lib/wsdl/soap/classNameCreator.rb +54 -0
  78. data/lib/wsdl/soap/clientSkeltonCreator.rb +104 -0
  79. data/lib/wsdl/soap/complexType.rb +173 -0
  80. data/lib/wsdl/soap/data.rb +42 -0
  81. data/lib/wsdl/soap/definitions.rb +200 -0
  82. data/lib/wsdl/soap/driverCreator.rb +118 -0
  83. data/lib/wsdl/soap/element.rb +33 -0
  84. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +73 -0
  85. data/lib/wsdl/soap/fault.rb +56 -0
  86. data/lib/wsdl/soap/header.rb +86 -0
  87. data/lib/wsdl/soap/headerfault.rb +56 -0
  88. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +115 -0
  89. data/lib/wsdl/soap/mappingRegistryCreator.rb +58 -0
  90. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +376 -0
  91. data/lib/wsdl/soap/methodDefCreator.rb +199 -0
  92. data/lib/wsdl/soap/operation.rb +112 -0
  93. data/lib/wsdl/soap/servantSkeltonCreator.rb +89 -0
  94. data/lib/wsdl/soap/servletStubCreator.rb +104 -0
  95. data/lib/wsdl/soap/standaloneServerStubCreator.rb +100 -0
  96. data/lib/wsdl/soap/wsdl2ruby.rb +217 -0
  97. data/lib/wsdl/types.rb +44 -0
  98. data/lib/wsdl/wsdl.rb +24 -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 +61 -0
  102. data/lib/wsdl/xmlSchema/anyAttribute.rb +48 -0
  103. data/lib/wsdl/xmlSchema/attribute.rb +104 -0
  104. data/lib/wsdl/xmlSchema/attributeGroup.rb +68 -0
  105. data/lib/wsdl/xmlSchema/choice.rb +58 -0
  106. data/lib/wsdl/xmlSchema/complexContent.rb +97 -0
  107. data/lib/wsdl/xmlSchema/complexExtension.rb +119 -0
  108. data/lib/wsdl/xmlSchema/complexRestriction.rb +104 -0
  109. data/lib/wsdl/xmlSchema/complexType.rb +193 -0
  110. data/lib/wsdl/xmlSchema/content.rb +95 -0
  111. data/lib/wsdl/xmlSchema/data.rb +116 -0
  112. data/lib/wsdl/xmlSchema/element.rb +153 -0
  113. data/lib/wsdl/xmlSchema/enumeration.rb +36 -0
  114. data/lib/wsdl/xmlSchema/fractiondigits.rb +37 -0
  115. data/lib/wsdl/xmlSchema/group.rb +100 -0
  116. data/lib/wsdl/xmlSchema/import.rb +53 -0
  117. data/lib/wsdl/xmlSchema/importHandler.rb +45 -0
  118. data/lib/wsdl/xmlSchema/importer.rb +102 -0
  119. data/lib/wsdl/xmlSchema/include.rb +48 -0
  120. data/lib/wsdl/xmlSchema/length.rb +37 -0
  121. data/lib/wsdl/xmlSchema/list.rb +48 -0
  122. data/lib/wsdl/xmlSchema/maxexclusive.rb +37 -0
  123. data/lib/wsdl/xmlSchema/maxinclusive.rb +37 -0
  124. data/lib/wsdl/xmlSchema/maxlength.rb +37 -0
  125. data/lib/wsdl/xmlSchema/minexclusive.rb +37 -0
  126. data/lib/wsdl/xmlSchema/mininclusive.rb +37 -0
  127. data/lib/wsdl/xmlSchema/minlength.rb +37 -0
  128. data/lib/wsdl/xmlSchema/parser.rb +167 -0
  129. data/lib/wsdl/xmlSchema/pattern.rb +36 -0
  130. data/lib/wsdl/xmlSchema/ref.rb +33 -0
  131. data/lib/wsdl/xmlSchema/schema.rb +178 -0
  132. data/lib/wsdl/xmlSchema/sequence.rb +54 -0
  133. data/lib/wsdl/xmlSchema/simpleContent.rb +69 -0
  134. data/lib/wsdl/xmlSchema/simpleExtension.rb +62 -0
  135. data/lib/wsdl/xmlSchema/simpleRestriction.rb +132 -0
  136. data/lib/wsdl/xmlSchema/simpleType.rb +87 -0
  137. data/lib/wsdl/xmlSchema/totaldigits.rb +37 -0
  138. data/lib/wsdl/xmlSchema/union.rb +35 -0
  139. data/lib/wsdl/xmlSchema/unique.rb +34 -0
  140. data/lib/wsdl/xmlSchema/whitespace.rb +37 -0
  141. data/lib/wsdl/xmlSchema/xsd2ruby.rb +174 -0
  142. data/lib/xsd/charset.rb +188 -0
  143. data/lib/xsd/codegen.rb +12 -0
  144. data/lib/xsd/codegen/classdef.rb +208 -0
  145. data/lib/xsd/codegen/commentdef.rb +34 -0
  146. data/lib/xsd/codegen/gensupport.rb +273 -0
  147. data/lib/xsd/codegen/methoddef.rb +70 -0
  148. data/lib/xsd/codegen/moduledef.rb +208 -0
  149. data/lib/xsd/datatypes.rb +1466 -0
  150. data/lib/xsd/datatypes1999.rb +20 -0
  151. data/lib/xsd/iconvcharset.rb +33 -0
  152. data/lib/xsd/mapping.rb +68 -0
  153. data/lib/xsd/namedelements.rb +132 -0
  154. data/lib/xsd/ns.rb +182 -0
  155. data/lib/xsd/qname.rb +79 -0
  156. data/lib/xsd/xmlparser.rb +76 -0
  157. data/lib/xsd/xmlparser.rb.orig +76 -0
  158. data/lib/xsd/xmlparser/libxmlparser.rb +119 -0
  159. data/lib/xsd/xmlparser/parser.rb +100 -0
  160. data/lib/xsd/xmlparser/rexmlparser.rb +58 -0
  161. data/lib/xsd/xmlparser/xmlparser.rb +50 -0
  162. data/lib/xsd/xmlparser/xmlscanner.rb +149 -0
  163. data/test/16runner.rb +68 -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 +288 -0
  168. data/test/interopR2/client.NetRemoting.rb +17 -0
  169. data/test/interopR2/client.rb +1234 -0
  170. data/test/interopR2/client4S4C.rb +15 -0
  171. data/test/interopR2/client4S4C2.rb +14 -0
  172. data/test/interopR2/clientASP.NET.rb +17 -0
  173. data/test/interopR2/clientApacheAxis.rb +16 -0
  174. data/test/interopR2/clientApacheSOAP.rb +17 -0
  175. data/test/interopR2/clientBEAWebLogic.rb +17 -0
  176. data/test/interopR2/clientBase.rb +1967 -0
  177. data/test/interopR2/clientCapeConnect.rb +18 -0
  178. data/test/interopR2/clientDelphi.rb +19 -0
  179. data/test/interopR2/clientEasySoap.rb +14 -0
  180. data/test/interopR2/clientFrontier.rb +25 -0
  181. data/test/interopR2/clientGLUE.rb +32 -0
  182. data/test/interopR2/clientHP.rb +13 -0
  183. data/test/interopR2/clientJAX-RPC.rb +19 -0
  184. data/test/interopR2/clientJSOAP.rb +14 -0
  185. data/test/interopR2/clientKafkaXSLT.rb +15 -0
  186. data/test/interopR2/clientMSSOAPToolkit2.0.rb +17 -0
  187. data/test/interopR2/clientMSSOAPToolkit3.0.rb +17 -0
  188. data/test/interopR2/clientNuSOAP.rb +19 -0
  189. data/test/interopR2/clientNuWave.rb +15 -0
  190. data/test/interopR2/clientOpenLink.rb +15 -0
  191. data/test/interopR2/clientOracle.rb +15 -0
  192. data/test/interopR2/clientPEAR.rb +18 -0
  193. data/test/interopR2/clientPhalanx.rb +18 -0
  194. data/test/interopR2/clientSIMACE.rb +18 -0
  195. data/test/interopR2/clientSOAP4R.rb +18 -0
  196. data/test/interopR2/clientSOAP__Lite.rb +14 -0
  197. data/test/interopR2/clientSQLData.rb +18 -0
  198. data/test/interopR2/clientSilverStream.rb +17 -0
  199. data/test/interopR2/clientSpray2001.rb +17 -0
  200. data/test/interopR2/clientSun.rb +19 -0
  201. data/test/interopR2/clientVWOpentalkSoap.rb +19 -0
  202. data/test/interopR2/clientWASP.rb +19 -0
  203. data/test/interopR2/clientWASPC.rb +18 -0
  204. data/test/interopR2/clientWebMethods.rb +15 -0
  205. data/test/interopR2/clientWhiteMesa.rb +28 -0
  206. data/test/interopR2/clientWingfoot.rb +15 -0
  207. data/test/interopR2/clientXMLBus.rb +19 -0
  208. data/test/interopR2/clientXMLRPC-EPI.rb +17 -0
  209. data/test/interopR2/clientXSOAP.rb +14 -0
  210. data/test/interopR2/clientZSI.rb +19 -0
  211. data/test/interopR2/clienteSOAP.rb +18 -0
  212. data/test/interopR2/clientgSOAP.rb +18 -0
  213. data/test/interopR2/clientkSOAP.rb +17 -0
  214. data/test/interopR2/iSimonReg.rb +112 -0
  215. data/test/interopR2/interopResultBase.rb +114 -0
  216. data/test/interopR2/interopService.rb +247 -0
  217. data/test/interopR2/rwikiInteropService.rb +105 -0
  218. data/test/interopR2/server.cgi +270 -0
  219. data/test/interopR2/server.rb +275 -0
  220. data/test/interopR2/simonReg.rb +123 -0
  221. data/test/interopR2/test.sh +49 -0
  222. data/test/interopR4/client.rb +112 -0
  223. data/test/results +4810 -0
  224. data/test/runner.rb +7 -0
  225. data/test/sm11/classDef.rb +156 -0
  226. data/test/sm11/client.rb +542 -0
  227. data/test/sm11/driver.rb +183 -0
  228. data/test/sm11/servant.rb +1067 -0
  229. data/test/sm11/server.rb +25 -0
  230. data/test/soap/asp.net/hello.wsdl +96 -0
  231. data/test/soap/asp.net/test_aspdotnet.rb +123 -0
  232. data/test/soap/auth/htdigest +2 -0
  233. data/test/soap/auth/htpasswd +2 -0
  234. data/test/soap/auth/test_basic.rb +117 -0
  235. data/test/soap/auth/test_digest.rb +118 -0
  236. data/test/soap/calc/calc.rb +17 -0
  237. data/test/soap/calc/calc2.rb +29 -0
  238. data/test/soap/calc/server.cgi +13 -0
  239. data/test/soap/calc/server.rb +17 -0
  240. data/test/soap/calc/server2.rb +20 -0
  241. data/test/soap/calc/test_calc.rb +51 -0
  242. data/test/soap/calc/test_calc2.rb +55 -0
  243. data/test/soap/calc/test_calc_cgi.rb +71 -0
  244. data/test/soap/case/test_mapping.rb +57 -0
  245. data/test/soap/fault/test_customfault.rb +60 -0
  246. data/test/soap/fault/test_fault.rb +46 -0
  247. data/test/soap/fault/test_soaparray.rb +35 -0
  248. data/test/soap/filter/test_filter.rb +146 -0
  249. data/test/soap/header/server.cgi +119 -0
  250. data/test/soap/header/session.pstoredb +0 -0
  251. data/test/soap/header/test_authheader.rb +240 -0
  252. data/test/soap/header/test_authheader_cgi.rb +121 -0
  253. data/test/soap/header/test_simplehandler.rb +116 -0
  254. data/test/soap/helloworld/hw_s.rb +16 -0
  255. data/test/soap/helloworld/test_helloworld.rb +43 -0
  256. data/test/soap/htpasswd +2 -0
  257. data/test/soap/literalArrayMapping/amazonEc.rb +4778 -0
  258. data/test/soap/literalArrayMapping/amazonEcDriver.rb +172 -0
  259. data/test/soap/literalArrayMapping/amazonresponse.xml +100 -0
  260. data/test/soap/literalArrayMapping/test_definedarray.rb +34 -0
  261. data/test/soap/marshal/marshaltestlib.rb +494 -0
  262. data/test/soap/marshal/test_digraph.rb +56 -0
  263. data/test/soap/marshal/test_marshal.rb +26 -0
  264. data/test/soap/marshal/test_struct.rb +47 -0
  265. data/test/soap/ssl/README +1 -0
  266. data/test/soap/ssl/ca.cert +23 -0
  267. data/test/soap/ssl/client.cert +19 -0
  268. data/test/soap/ssl/client.key +15 -0
  269. data/test/soap/ssl/server.cert +19 -0
  270. data/test/soap/ssl/server.key +15 -0
  271. data/test/soap/ssl/sslsvr.rb +57 -0
  272. data/test/soap/ssl/subca.cert +21 -0
  273. data/test/soap/ssl/test_ssl.rb +235 -0
  274. data/test/soap/struct/test_struct.rb +70 -0
  275. data/test/soap/styleuse/client.rb +20 -0
  276. data/test/soap/styleuse/server.rb +86 -0
  277. data/test/soap/swa/test_file.rb +75 -0
  278. data/test/soap/test_basetype.rb +1090 -0
  279. data/test/soap/test_cookie.rb +112 -0
  280. data/test/soap/test_custom_ns.rb +105 -0
  281. data/test/soap/test_custommap.rb +110 -0
  282. data/test/soap/test_empty.rb +105 -0
  283. data/test/soap/test_envelopenamespace.rb +85 -0
  284. data/test/soap/test_extraattr.rb +54 -0
  285. data/test/soap/test_generator.rb +27 -0
  286. data/test/soap/test_httpconfigloader.rb +71 -0
  287. data/test/soap/test_mapping.rb +131 -0
  288. data/test/soap/test_nestedexception.rb +56 -0
  289. data/test/soap/test_nil.rb +57 -0
  290. data/test/soap/test_no_indent.rb +88 -0
  291. data/test/soap/test_property.rb +428 -0
  292. data/test/soap/test_response_as_xml.rb +117 -0
  293. data/test/soap/test_soapelement.rb +138 -0
  294. data/test/soap/test_streamhandler.rb +270 -0
  295. data/test/soap/test_styleuse.rb +326 -0
  296. data/test/soap/wsdlDriver/README.txt +2 -0
  297. data/test/soap/wsdlDriver/calc.wsdl +126 -0
  298. data/test/soap/wsdlDriver/document.wsdl +54 -0
  299. data/test/soap/wsdlDriver/echo_version.rb +29 -0
  300. data/test/soap/wsdlDriver/simpletype.wsdl +63 -0
  301. data/test/soap/wsdlDriver/test_calc.rb +71 -0
  302. data/test/soap/wsdlDriver/test_document.rb +71 -0
  303. data/test/soap/wsdlDriver/test_simpletype.rb +80 -0
  304. data/test/testutil.rb +54 -0
  305. data/test/wsdl/abstract/abstract.wsdl +176 -0
  306. data/test/wsdl/abstract/test_abstract.rb +159 -0
  307. data/test/wsdl/anonymous/expectedClassDef.rb +128 -0
  308. data/test/wsdl/anonymous/expectedDriver.rb +59 -0
  309. data/test/wsdl/anonymous/expectedMappingRegistry.rb +176 -0
  310. data/test/wsdl/anonymous/lp.wsdl +147 -0
  311. data/test/wsdl/anonymous/test_anonymous.rb +130 -0
  312. data/test/wsdl/any/any.wsdl +114 -0
  313. data/test/wsdl/any/expectedDriver.rb +68 -0
  314. data/test/wsdl/any/expectedEcho.rb +57 -0
  315. data/test/wsdl/any/expectedMappingRegistry.rb +63 -0
  316. data/test/wsdl/any/expectedService.rb +69 -0
  317. data/test/wsdl/any/test_any.rb +193 -0
  318. data/test/wsdl/axisArray/axisArray.wsdl +87 -0
  319. data/test/wsdl/axisArray/test_axisarray.rb +124 -0
  320. data/test/wsdl/choice/choice.wsdl +167 -0
  321. data/test/wsdl/choice/test_choice.rb +310 -0
  322. data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
  323. data/test/wsdl/complexcontent/test_echo.rb +90 -0
  324. data/test/wsdl/datetime/DatetimeService.rb +44 -0
  325. data/test/wsdl/datetime/datetime.rb +0 -0
  326. data/test/wsdl/datetime/datetime.wsdl +45 -0
  327. data/test/wsdl/datetime/datetimeServant.rb +22 -0
  328. data/test/wsdl/datetime/test_datetime.rb +86 -0
  329. data/test/wsdl/document/array/double.wsdl +161 -0
  330. data/test/wsdl/document/array/test_array.rb +201 -0
  331. data/test/wsdl/document/document.wsdl +76 -0
  332. data/test/wsdl/document/number.wsdl +54 -0
  333. data/test/wsdl/document/ping_nosoapaction.wsdl +66 -0
  334. data/test/wsdl/document/test_nosoapaction.rb +102 -0
  335. data/test/wsdl/document/test_number.rb +92 -0
  336. data/test/wsdl/document/test_rpc.rb +355 -0
  337. data/test/wsdl/emptycomplextype.wsdl +31 -0
  338. data/test/wsdl/fault/fault.wsdl +79 -0
  339. data/test/wsdl/fault/multifault.wsdl +96 -0
  340. data/test/wsdl/fault/test_fault.rb +119 -0
  341. data/test/wsdl/fault/test_multifault.rb +134 -0
  342. data/test/wsdl/group/expectedClassdef.rb +58 -0
  343. data/test/wsdl/group/expectedDriver.rb +51 -0
  344. data/test/wsdl/group/expectedMappingRegistry.rb +67 -0
  345. data/test/wsdl/group/group.wsdl +88 -0
  346. data/test/wsdl/group/test_rpc.rb +145 -0
  347. data/test/wsdl/list/list.wsdl +93 -0
  348. data/test/wsdl/list/test_list.rb +124 -0
  349. data/test/wsdl/map/map.wsdl +92 -0
  350. data/test/wsdl/map/map.xml +43 -0
  351. data/test/wsdl/map/test_map.rb +99 -0
  352. data/test/wsdl/marshal/Person.rb +1 -0
  353. data/test/wsdl/marshal/person.wsdl +21 -0
  354. data/test/wsdl/marshal/person_org.rb +23 -0
  355. data/test/wsdl/marshal/test_wsdlmarshal.rb +76 -0
  356. data/test/wsdl/multiplefault.wsdl +75 -0
  357. data/test/wsdl/oneway/oneway.wsdl +36 -0
  358. data/test/wsdl/oneway/test_oneway.rb +108 -0
  359. data/test/wsdl/overload/expectedClient.rb +37 -0
  360. data/test/wsdl/overload/expectedDriver.rb +61 -0
  361. data/test/wsdl/overload/expectedServant.rb +35 -0
  362. data/test/wsdl/overload/overload.wsdl +70 -0
  363. data/test/wsdl/overload/test_overload.rb +131 -0
  364. data/test/wsdl/qualified/lp.wsdl +47 -0
  365. data/test/wsdl/qualified/lp.xsd +26 -0
  366. data/test/wsdl/qualified/np.wsdl +51 -0
  367. data/test/wsdl/qualified/test_qualified.rb +137 -0
  368. data/test/wsdl/qualified/test_unqualified.rb +138 -0
  369. data/test/wsdl/raa/RAAService.rb +125 -0
  370. data/test/wsdl/raa/README.txt +8 -0
  371. data/test/wsdl/raa/expectedClassDef.rb +100 -0
  372. data/test/wsdl/raa/expectedDriver.rb +96 -0
  373. data/test/wsdl/raa/expectedMappingRegistry.rb +121 -0
  374. data/test/wsdl/raa/raa.wsdl +264 -0
  375. data/test/wsdl/raa/test_raa.rb +126 -0
  376. data/test/wsdl/ref/expectedDriver.rb +51 -0
  377. data/test/wsdl/ref/expectedProduct.rb +243 -0
  378. data/test/wsdl/ref/product.wsdl +147 -0
  379. data/test/wsdl/ref/test_ref.rb +268 -0
  380. data/test/wsdl/rpc/rpc.wsdl +109 -0
  381. data/test/wsdl/rpc/test-rpc-lit.wsdl +371 -0
  382. data/test/wsdl/rpc/test_rpc.rb +176 -0
  383. data/test/wsdl/rpc/test_rpc_lit.rb +470 -0
  384. data/test/wsdl/simplecontent/simplecontent.wsdl +84 -0
  385. data/test/wsdl/simplecontent/test_simplecontent.rb +102 -0
  386. data/test/wsdl/simpletype/rpc/echo_version.rb +1 -0
  387. data/test/wsdl/simpletype/rpc/echo_versionDriver.rb +10 -0
  388. data/test/wsdl/simpletype/rpc/echo_versionMappingRegistry.rb +4 -0
  389. data/test/wsdl/simpletype/rpc/echo_versionServant.rb +3 -0
  390. data/test/wsdl/simpletype/rpc/echo_version_service.rb +3 -0
  391. data/test/wsdl/simpletype/rpc/echo_version_serviceClient.rb +34 -0
  392. data/test/wsdl/simpletype/rpc/expectedClient.rb +34 -0
  393. data/test/wsdl/simpletype/rpc/expectedDriver.rb +58 -0
  394. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +36 -0
  395. data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +57 -0
  396. data/test/wsdl/simpletype/rpc/expectedServant.rb +32 -0
  397. data/test/wsdl/simpletype/rpc/expectedService.rb +55 -0
  398. data/test/wsdl/simpletype/rpc/rpc.wsdl +98 -0
  399. data/test/wsdl/simpletype/rpc/test_rpc.rb +52 -0
  400. data/test/wsdl/simpletype/simpletype.wsdl +114 -0
  401. data/test/wsdl/simpletype/test_simpletype.rb +92 -0
  402. data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
  403. data/test/wsdl/soap/test_soapbodyparts.rb +79 -0
  404. data/test/wsdl/soap/wsdl2ruby/echo_version.rb +1 -0
  405. data/test/wsdl/soap/wsdl2ruby/echo_versionDriver.rb +10 -0
  406. data/test/wsdl/soap/wsdl2ruby/echo_versionMappingRegistry.rb +4 -0
  407. data/test/wsdl/soap/wsdl2ruby/echo_versionServant.rb +3 -0
  408. data/test/wsdl/soap/wsdl2ruby/echo_version_service.cgi +3 -0
  409. data/test/wsdl/soap/wsdl2ruby/echo_version_service.rb +7 -0
  410. data/test/wsdl/soap/wsdl2ruby/echo_version_serviceClient.rb +34 -0
  411. data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +21 -0
  412. data/test/wsdl/soap/wsdl2ruby/expectedClient.rb +34 -0
  413. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +58 -0
  414. data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +36 -0
  415. data/test/wsdl/soap/wsdl2ruby/expectedServant.rb +32 -0
  416. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +48 -0
  417. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +55 -0
  418. data/test/wsdl/soap/wsdl2ruby/rpc.wsdl +80 -0
  419. data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +37 -0
  420. data/test/wsdl/soap/wsdl2ruby/section/section.xsd +31 -0
  421. data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +53 -0
  422. data/test/wsdl/soap/wsdl2ruby/soapenc/soapenc.wsdl +64 -0
  423. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +83 -0
  424. data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +102 -0
  425. data/test/wsdl/soaptype/soaptype.wsdl +61 -0
  426. data/test/wsdl/soaptype/test_soaptype.rb +178 -0
  427. data/test/wsdl/test_emptycomplextype.rb +21 -0
  428. data/test/wsdl/test_fault.rb +50 -0
  429. data/test/wsdl/test_multiplefault.rb +41 -0
  430. data/test/xsd/codegen/test_classdef.rb +244 -0
  431. data/test/xsd/noencoding.xml +4 -0
  432. data/test/xsd/test_noencoding.rb +32 -0
  433. data/test/xsd/test_ns.rb +41 -0
  434. data/test/xsd/test_xmlschemaparser.rb +22 -0
  435. data/test/xsd/test_xsd.rb +1638 -0
  436. data/test/xsd/xmllang.xml +43 -0
  437. data/test/xsd/xmlschema.xml +12 -0
  438. data/test/xsd/xsd2ruby/expected_mysample.rb +65 -0
  439. data/test/xsd/xsd2ruby/expected_mysample_mapper.rb +11 -0
  440. data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +51 -0
  441. data/test/xsd/xsd2ruby/section.xsd +49 -0
  442. data/test/xsd/xsd2ruby/test_xsd2ruby.rb +90 -0
  443. metadata +568 -0
@@ -0,0 +1,42 @@
1
+ # SOAP4R - Nested exception implementation
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ module SOAP
10
+
11
+
12
+ module NestedException
13
+ attr_reader :cause
14
+ attr_reader :original_backtraace
15
+
16
+ def initialize(msg = nil, cause = nil)
17
+ super(msg)
18
+ @cause = cause
19
+ @original_backtrace = nil
20
+ end
21
+
22
+ def set_backtrace(backtrace)
23
+ if @cause and @cause.respond_to?(:backtrace)
24
+ @original_backtrace = backtrace
25
+ =begin
26
+ # for agressive backtrace abstraction: 'here' only should not be good
27
+ here = @original_backtrace[0]
28
+ backtrace = Array[*@cause.backtrace]
29
+ backtrace[0] = "#{backtrace[0]}: #{@cause} (#{@cause.class})"
30
+ backtrace.unshift(here)
31
+ =end
32
+ # just join the nested backtrace at the tail of backtrace
33
+ caused = Array[*@cause.backtrace]
34
+ caused[0] = "#{caused[0]}: #{@cause} (#{@cause.class}) [NESTED]"
35
+ backtrace += caused
36
+ end
37
+ super(backtrace)
38
+ end
39
+ end
40
+
41
+
42
+ end
@@ -0,0 +1,241 @@
1
+ # SOAP4R - net/http wrapper
2
+ # Copyright (C) 2000-2007 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 'net/http'
10
+ require 'soap/filter/filterchain'
11
+
12
+
13
+ module SOAP
14
+
15
+
16
+ class NetHttpClient
17
+
18
+ SSLEnabled = begin
19
+ require 'net/https'
20
+ true
21
+ rescue LoadError
22
+ false
23
+ end
24
+
25
+ attr_reader :proxy
26
+ attr_accessor :no_proxy
27
+ attr_accessor :debug_dev
28
+ attr_accessor :ssl_config # ignored for now.
29
+ attr_accessor :protocol_version # ignored for now.
30
+ attr_accessor :connect_timeout
31
+ attr_accessor :send_timeout # ignored for now.
32
+ attr_accessor :receive_timeout
33
+ attr_reader :test_loopback_response
34
+ attr_reader :request_filter # ignored for now.
35
+
36
+ def initialize(proxy = nil, agent = nil)
37
+ @proxy = proxy ? URI.parse(proxy) : nil
38
+ @agent = agent
39
+ @debug_dev = nil
40
+ @test_loopback_response = []
41
+ @request_filter = Filter::FilterChain.new
42
+ @session_manager = SessionManager.new
43
+ @no_proxy = @ssl_config = @protocol_version = nil
44
+ @connect_timeout = @send_timeout = @receive_timeout = nil
45
+ end
46
+
47
+ def proxy=(proxy)
48
+ if proxy.nil?
49
+ @proxy = nil
50
+ else
51
+ if proxy.is_a?(URI)
52
+ @proxy = proxy
53
+ else
54
+ @proxy = URI.parse(proxy)
55
+ end
56
+ if @proxy.scheme == nil or @proxy.scheme.downcase != 'http' or
57
+ @proxy.host == nil or @proxy.port == nil
58
+ raise ArgumentError.new("unsupported proxy `#{proxy}'")
59
+ end
60
+ end
61
+ reset_all
62
+ @proxy
63
+ end
64
+
65
+ def set_auth(uri, user_id, passwd)
66
+ raise NotImplementedError.new("auth is not supported under soap4r + net/http.")
67
+ end
68
+
69
+ def set_basic_auth(uri, user_id, passwd)
70
+ # net/http does not handle url.
71
+ @basic_auth = [user_id, passwd]
72
+ raise NotImplementedError.new("basic_auth is not supported under soap4r + net/http.")
73
+ end
74
+
75
+ def set_cookie_store(filename)
76
+ raise NotImplementedError.new
77
+ end
78
+
79
+ def save_cookie_store(filename)
80
+ raise NotImplementedError.new
81
+ end
82
+
83
+ def reset(url)
84
+ # no persistent connection. ignored.
85
+ end
86
+
87
+ def reset_all
88
+ # no persistent connection. ignored.
89
+ end
90
+
91
+ def post(url, req_body, header = {})
92
+ post_redirect(url, req_body, header, 10)
93
+ end
94
+
95
+ def get_content(url, header = {})
96
+ if str = @test_loopback_response.shift
97
+ return str
98
+ end
99
+ unless url.is_a?(URI)
100
+ url = URI.parse(url)
101
+ end
102
+ extra = header.dup
103
+ extra['User-Agent'] = @agent if @agent
104
+ res = start(url) { |http|
105
+ http.get(url.request_uri, extra)
106
+ }
107
+ res.body
108
+ end
109
+
110
+ private
111
+
112
+ def post_redirect(url, req_body, header, redirect_count)
113
+ if str = @test_loopback_response.shift
114
+ if @debug_dev
115
+ @debug_dev << "= Request\n\n"
116
+ @debug_dev << req_body
117
+ @debug_dev << "\n\n= Response\n\n"
118
+ @debug_dev << str
119
+ end
120
+ status = 200
121
+ reason = nil
122
+ contenttype = 'text/xml'
123
+ content = str
124
+ return Response.new(status, reason, contenttype, content)
125
+ return str
126
+ end
127
+ unless url.is_a?(URI)
128
+ url = URI.parse(url)
129
+ end
130
+ extra = header.dup
131
+ extra['User-Agent'] = @agent if @agent
132
+ res = start(url) { |http|
133
+ if @debug_dev
134
+ @debug_dev << "= Request\n\n"
135
+ @debug_dev << req_body << "\n"
136
+ end
137
+ http.post(url.request_uri, req_body, extra)
138
+ }
139
+ case res
140
+ when Net::HTTPRedirection
141
+ if redirect_count > 0
142
+ post_redirect(res['location'], req_body, header,
143
+ redirect_count - 1)
144
+ else
145
+ raise ArgumentError.new("Too many redirects")
146
+ end
147
+ else
148
+ Response.from_httpresponse(res)
149
+ end
150
+ end
151
+
152
+ def start(url)
153
+ http = create_connection(url)
154
+ response = nil
155
+ http.start { |worker|
156
+ response = yield(worker)
157
+ worker.finish
158
+ }
159
+ if @debug_dev
160
+ @debug_dev << "\n\n= Response\n\n"
161
+ @debug_dev << response.body << "\n"
162
+ end
163
+ response
164
+ end
165
+
166
+ def create_connection(url)
167
+ proxy_host = proxy_port = nil
168
+ unless no_proxy?(url)
169
+ proxy_host = @proxy.host
170
+ proxy_port = @proxy.port
171
+ end
172
+ http = Net::HTTP::Proxy(proxy_host, proxy_port).new(url.host, url.port)
173
+ if http.respond_to?(:set_debug_output)
174
+ http.set_debug_output(@debug_dev)
175
+ end
176
+ http.open_timeout = @connect_timeout if @connect_timeout
177
+ http.read_timeout = @receive_timeout if @receive_timeout
178
+ case url
179
+ when URI::HTTPS then
180
+ if SSLEnabled
181
+ http.use_ssl = true
182
+ else
183
+ raise RuntimeError.new("Cannot connect to #{url} (OpenSSL is not installed.)")
184
+ end
185
+ when URI::HTTP then
186
+ # OK
187
+ else
188
+ raise RuntimeError.new("Cannot connect to #{url} (Not HTTP.)")
189
+ end
190
+ http
191
+ end
192
+
193
+ NO_PROXY_HOSTS = ['localhost']
194
+
195
+ def no_proxy?(uri)
196
+ if !@proxy or NO_PROXY_HOSTS.include?(uri.host)
197
+ return true
198
+ end
199
+ unless @no_proxy
200
+ return false
201
+ end
202
+ @no_proxy.scan(/([^:,]+)(?::(\d+))?/) do |host, port|
203
+ if /(\A|\.)#{Regexp.quote(host)}\z/i =~ uri.host &&
204
+ (!port || uri.port == port.to_i)
205
+ return true
206
+ end
207
+ end
208
+ false
209
+ end
210
+
211
+ class SessionManager
212
+ attr_accessor :connect_timeout
213
+ attr_accessor :send_timeout
214
+ attr_accessor :receive_timeout
215
+ end
216
+
217
+ class Response
218
+ attr_reader :status
219
+ attr_reader :reason
220
+ attr_reader :contenttype
221
+ attr_reader :content
222
+
223
+ def initialize(status, reason, contenttype, content)
224
+ @status = status
225
+ @reason = reason
226
+ @contenttype = contenttype
227
+ @content = content
228
+ end
229
+
230
+ def self.from_httpresponse(res)
231
+ status = res.code.to_i
232
+ reason = res.message
233
+ contenttype = res['content-type']
234
+ content = res.body
235
+ new(status, reason, contenttype, content)
236
+ end
237
+ end
238
+ end
239
+
240
+
241
+ end
@@ -0,0 +1,34 @@
1
+ # SOAP4R - SOAP Namespace library
2
+ # Copyright (C) 2000-2007 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/datatypes'
10
+ require 'xsd/ns'
11
+ require 'soap/soap'
12
+
13
+
14
+ module SOAP
15
+
16
+
17
+ class NS < XSD::NS
18
+ KNOWN_TAG = XSD::NS::KNOWN_TAG.dup.update(
19
+ SOAP::EnvelopeNamespace => 'env'
20
+ )
21
+
22
+ def initialize(tag2ns = nil)
23
+ super(tag2ns)
24
+ end
25
+
26
+ private
27
+
28
+ def default_known_tag
29
+ KNOWN_TAG
30
+ end
31
+ end
32
+
33
+
34
+ end
@@ -0,0 +1,252 @@
1
+ # SOAP4R - SOAP XML Instance Parser library.
2
+ # Copyright (C) 2000-2007 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/xmlparser'
10
+ require 'soap/soap'
11
+ require 'soap/ns'
12
+ require 'soap/baseData'
13
+ require 'soap/encodingstyle/handler'
14
+
15
+
16
+ module SOAP
17
+
18
+
19
+ class Parser
20
+ include SOAP
21
+
22
+ class ParseError < Error; end
23
+ class FormatDecodeError < ParseError; end
24
+ class UnexpectedElementError < ParseError; end
25
+
26
+ private
27
+
28
+ class ParseFrame
29
+ attr_reader :node
30
+ attr_reader :name
31
+ attr_reader :ns
32
+ attr_reader :encodingstyle
33
+ attr_reader :handler
34
+
35
+ class NodeContainer
36
+ def initialize(node)
37
+ @node = node
38
+ end
39
+
40
+ def node
41
+ @node
42
+ end
43
+
44
+ def replace_node(node)
45
+ @node = node
46
+ end
47
+ end
48
+
49
+ public
50
+
51
+ def initialize(ns, name, node, encodingstyle, handler)
52
+ @ns = ns
53
+ @name = name
54
+ @node = NodeContainer.new(node)
55
+ @encodingstyle = encodingstyle
56
+ @handler = handler
57
+ end
58
+
59
+ # to avoid memory consumption
60
+ def update(ns, name, node, encodingstyle, handler)
61
+ @ns = ns
62
+ @name = name
63
+ @node.replace_node(node)
64
+ @encodingstyle = encodingstyle
65
+ @handler = handler
66
+ self
67
+ end
68
+ end
69
+
70
+ public
71
+
72
+ attr_accessor :envelopenamespace
73
+ attr_accessor :default_encodingstyle
74
+ attr_accessor :decode_typemap
75
+ attr_accessor :allow_unqualified_element
76
+
77
+ def initialize(opt = {})
78
+ @opt = opt
79
+ @parser = XSD::XMLParser.create_parser(self, opt)
80
+ @parsestack = nil
81
+ @recycleframe = nil
82
+ @lastnode = nil
83
+ @handlers = {}
84
+ @envelopenamespace = opt[:envelopenamespace] || EnvelopeNamespace
85
+ @default_encodingstyle = opt[:default_encodingstyle] || EncodingNamespace
86
+ @decode_typemap = opt[:decode_typemap] || nil
87
+ @allow_unqualified_element = opt[:allow_unqualified_element] || false
88
+ end
89
+
90
+ def charset
91
+ @parser.charset
92
+ end
93
+
94
+ def parse(string_or_readable)
95
+ @parsestack = []
96
+ @lastnode = nil
97
+
98
+ @handlers.each do |uri, handler|
99
+ handler.decode_prologue
100
+ end
101
+
102
+ @parser.do_parse(string_or_readable)
103
+
104
+ unless @parsestack.empty?
105
+ raise FormatDecodeError.new("Unbalanced tag in XML.")
106
+ end
107
+
108
+ @handlers.each do |uri, handler|
109
+ handler.decode_epilogue
110
+ end
111
+
112
+ @lastnode
113
+ end
114
+
115
+ def start_element(name, raw_attrs)
116
+ lastframe = @parsestack.last
117
+ ns = parent = parent_encodingstyle = nil
118
+ if lastframe
119
+ ns = lastframe.ns
120
+ parent = lastframe.node
121
+ parent_encodingstyle = lastframe.encodingstyle
122
+ else
123
+ ns = SOAP::NS.new
124
+ parent = ParseFrame::NodeContainer.new(nil)
125
+ parent_encodingstyle = nil
126
+ end
127
+ # ns might be the same
128
+ ns, raw_attrs = XSD::XMLParser.filter_ns(ns, raw_attrs)
129
+ attrs = decode_attrs(ns, raw_attrs)
130
+ encodingstyle = attrs[AttrEncodingStyleName]
131
+ # Children's encodingstyle is derived from its parent.
132
+ if encodingstyle.nil?
133
+ if parent.node.is_a?(SOAPHeader)
134
+ encodingstyle = LiteralNamespace
135
+ else
136
+ encodingstyle = parent_encodingstyle || @default_encodingstyle
137
+ end
138
+ end
139
+ handler = find_handler(encodingstyle)
140
+ unless handler
141
+ raise FormatDecodeError.new("Unknown encodingStyle: #{ encodingstyle }.")
142
+ end
143
+ node = decode_tag(ns, name, attrs, parent, handler)
144
+ if @recycleframe
145
+ @parsestack << @recycleframe.update(ns, name, node, encodingstyle, handler)
146
+ @recycleframe = nil
147
+ else
148
+ @parsestack << ParseFrame.new(ns, name, node, encodingstyle, handler)
149
+ end
150
+ end
151
+
152
+ def characters(text)
153
+ # Ignore Text outside of SOAP Envelope.
154
+ if lastframe = @parsestack.last
155
+ # Need not to be cloned because character does not have attr.
156
+ decode_text(lastframe.ns, text, lastframe.handler)
157
+ end
158
+ end
159
+
160
+ def end_element(name)
161
+ lastframe = @parsestack.pop
162
+ unless name == lastframe.name
163
+ raise UnexpectedElementError.new("Closing element name '#{ name }' does not match with opening element '#{ lastframe.name }'.")
164
+ end
165
+ decode_tag_end(lastframe.ns, lastframe.node, lastframe.handler)
166
+ @lastnode = lastframe.node.node
167
+ @recycleframe = lastframe
168
+ end
169
+
170
+ private
171
+
172
+ def decode_tag(ns, name, attrs, parent, handler)
173
+ ele = ns.parse(name)
174
+ # Envelope based parsing.
175
+ if ((ele.namespace == @envelopenamespace) ||
176
+ (@allow_unqualified_element && ele.namespace.nil?))
177
+ o = decode_soap_envelope(ns, ele, attrs, parent)
178
+ return o if o
179
+ end
180
+ # Encoding based parsing.
181
+ return handler.decode_tag(ns, ele, attrs, parent)
182
+ end
183
+
184
+ def decode_tag_end(ns, node, handler)
185
+ return handler.decode_tag_end(ns, node)
186
+ end
187
+
188
+ def decode_attrs(ns, attrs)
189
+ extraattr = {}
190
+ attrs.each do |key, value|
191
+ qname = ns.parse_local(key)
192
+ extraattr[qname] = value
193
+ end
194
+ extraattr
195
+ end
196
+
197
+ def decode_text(ns, text, handler)
198
+ handler.decode_text(ns, text)
199
+ end
200
+
201
+ def decode_soap_envelope(ns, ele, attrs, parent)
202
+ o = nil
203
+ if ele.name == EleEnvelope
204
+ o = SOAPEnvelope.new
205
+ if ext = @opt[:external_content]
206
+ ext.each do |k, v|
207
+ o.external_content[k] = v
208
+ end
209
+ end
210
+ elsif ele.name == EleHeader
211
+ return nil unless parent.node.is_a?(SOAPEnvelope)
212
+ o = SOAPHeader.new
213
+ parent.node.header = o
214
+ elsif ele.name == EleBody
215
+ return nil unless parent.node.is_a?(SOAPEnvelope)
216
+ o = SOAPBody.new
217
+ parent.node.body = o
218
+ elsif ele.name == EleFault
219
+ if parent.node.is_a?(SOAPBody)
220
+ o = SOAPFault.new
221
+ parent.node.fault = o
222
+ elsif parent.node.is_a?(SOAPEnvelope)
223
+ # live.com server returns SOAPFault as a direct child of SOAPEnvelope.
224
+ # support it even if it's not spec compliant.
225
+ warn("Fault must be a child of Body.")
226
+ body = SOAPBody.new
227
+ parent.node.body = body
228
+ o = SOAPFault.new
229
+ body.fault = o
230
+ else
231
+ return nil
232
+ end
233
+ end
234
+ o.extraattr.update(attrs) if o
235
+ o
236
+ end
237
+
238
+ def find_handler(encodingstyle)
239
+ unless @handlers.key?(encodingstyle)
240
+ handler_factory = SOAP::EncodingStyle::Handler.handler(encodingstyle) ||
241
+ SOAP::EncodingStyle::Handler.handler(EncodingNamespace)
242
+ handler = handler_factory.new(@parser.charset)
243
+ handler.decode_typemap = @decode_typemap
244
+ handler.decode_prologue
245
+ @handlers[encodingstyle] = handler
246
+ end
247
+ @handlers[encodingstyle]
248
+ end
249
+ end
250
+
251
+
252
+ end