rtiss_soap4r 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. data/bin/wsdl2ruby.rb +139 -0
  2. data/bin/xsd2ruby.rb +91 -0
  3. data/lib/soap/attachment.rb +109 -0
  4. data/lib/soap/attrproxy.rb +35 -0
  5. data/lib/soap/baseData.rb +1095 -0
  6. data/lib/soap/element.rb +278 -0
  7. data/lib/soap/encodingstyle/aspDotNetHandler.rb +208 -0
  8. data/lib/soap/encodingstyle/handler.rb +121 -0
  9. data/lib/soap/encodingstyle/literalHandler.rb +196 -0
  10. data/lib/soap/encodingstyle/soapHandler.rb +560 -0
  11. data/lib/soap/filter/filterchain.rb +52 -0
  12. data/lib/soap/filter/handler.rb +32 -0
  13. data/lib/soap/filter/streamhandler.rb +30 -0
  14. data/lib/soap/filter.rb +14 -0
  15. data/lib/soap/generator.rb +299 -0
  16. data/lib/soap/header/handler.rb +62 -0
  17. data/lib/soap/header/handlerset.rb +71 -0
  18. data/lib/soap/header/mappinghandler.rb +48 -0
  19. data/lib/soap/header/simplehandler.rb +45 -0
  20. data/lib/soap/httpconfigloader.rb +140 -0
  21. data/lib/soap/mapping/encodedregistry.rb +539 -0
  22. data/lib/soap/mapping/factory.rb +389 -0
  23. data/lib/soap/mapping/literalregistry.rb +392 -0
  24. data/lib/soap/mapping/mapping.rb +577 -0
  25. data/lib/soap/mapping/registry.rb +296 -0
  26. data/lib/soap/mapping/rubytypeFactory.rb +446 -0
  27. data/lib/soap/mapping/schemadefinition.rb +171 -0
  28. data/lib/soap/mapping/typeMap.rb +107 -0
  29. data/lib/soap/mapping/wsdlencodedregistry.rb +212 -0
  30. data/lib/soap/mapping/wsdlliteralregistry.rb +249 -0
  31. data/lib/soap/mapping.rb +13 -0
  32. data/lib/soap/marshal.rb +60 -0
  33. data/lib/soap/mimemessage.rb +243 -0
  34. data/lib/soap/nestedexception.rb +43 -0
  35. data/lib/soap/netHttpClient.rb +242 -0
  36. data/lib/soap/ns.rb +39 -0
  37. data/lib/soap/parser.rb +253 -0
  38. data/lib/soap/processor.rb +67 -0
  39. data/lib/soap/property.rb +340 -0
  40. data/lib/soap/proxy.rb +15 -0
  41. data/lib/soap/rpc/cgistub.rb +248 -0
  42. data/lib/soap/rpc/driver.rb +222 -0
  43. data/lib/soap/rpc/element.rb +375 -0
  44. data/lib/soap/rpc/httpserver.rb +143 -0
  45. data/lib/soap/rpc/methodDef.rb +69 -0
  46. data/lib/soap/rpc/proxy.rb +573 -0
  47. data/lib/soap/rpc/router.rb +663 -0
  48. data/lib/soap/rpc/rpc.rb +26 -0
  49. data/lib/soap/rpc/soaplet.rb +201 -0
  50. data/lib/soap/rpc/standaloneServer.rb +44 -0
  51. data/lib/soap/soap.rb +154 -0
  52. data/lib/soap/streamHandler.rb +306 -0
  53. data/lib/soap/version.rb +9 -0
  54. data/lib/soap/wsdlDriver.rb +165 -0
  55. data/lib/wsdl/binding.rb +66 -0
  56. data/lib/wsdl/data.rb +65 -0
  57. data/lib/wsdl/definitions.rb +237 -0
  58. data/lib/wsdl/documentation.rb +33 -0
  59. data/lib/wsdl/import.rb +81 -0
  60. data/lib/wsdl/importer.rb +39 -0
  61. data/lib/wsdl/info.rb +51 -0
  62. data/lib/wsdl/message.rb +55 -0
  63. data/lib/wsdl/operation.rb +152 -0
  64. data/lib/wsdl/operationBinding.rb +241 -0
  65. data/lib/wsdl/param.rb +94 -0
  66. data/lib/wsdl/parser.rb +165 -0
  67. data/lib/wsdl/part.rb +53 -0
  68. data/lib/wsdl/port.rb +67 -0
  69. data/lib/wsdl/portType.rb +76 -0
  70. data/lib/wsdl/service.rb +62 -0
  71. data/lib/wsdl/soap/address.rb +41 -0
  72. data/lib/wsdl/soap/binding.rb +50 -0
  73. data/lib/wsdl/soap/body.rb +59 -0
  74. data/lib/wsdl/soap/cgiStubCreator.rb +93 -0
  75. data/lib/wsdl/soap/classDefCreator.rb +434 -0
  76. data/lib/wsdl/soap/classDefCreatorSupport.rb +241 -0
  77. data/lib/wsdl/soap/classNameCreator.rb +55 -0
  78. data/lib/wsdl/soap/clientSkeltonCreator.rb +107 -0
  79. data/lib/wsdl/soap/complexType.rb +174 -0
  80. data/lib/wsdl/soap/data.rb +43 -0
  81. data/lib/wsdl/soap/definitions.rb +201 -0
  82. data/lib/wsdl/soap/driverCreator.rb +121 -0
  83. data/lib/wsdl/soap/element.rb +34 -0
  84. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +74 -0
  85. data/lib/wsdl/soap/fault.rb +57 -0
  86. data/lib/wsdl/soap/header.rb +87 -0
  87. data/lib/wsdl/soap/headerfault.rb +57 -0
  88. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +116 -0
  89. data/lib/wsdl/soap/mappingRegistryCreator.rb +59 -0
  90. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +377 -0
  91. data/lib/wsdl/soap/methodDefCreator.rb +200 -0
  92. data/lib/wsdl/soap/operation.rb +113 -0
  93. data/lib/wsdl/soap/servantSkeltonCreator.rb +92 -0
  94. data/lib/wsdl/soap/servletStubCreator.rb +105 -0
  95. data/lib/wsdl/soap/standaloneServerStubCreator.rb +101 -0
  96. data/lib/wsdl/soap/wsdl2ruby.rb +226 -0
  97. data/lib/wsdl/types.rb +45 -0
  98. data/lib/wsdl/wsdl.rb +25 -0
  99. data/lib/wsdl/xmlSchema/all.rb +25 -0
  100. data/lib/wsdl/xmlSchema/annotation.rb +35 -0
  101. data/lib/wsdl/xmlSchema/any.rb +62 -0
  102. data/lib/wsdl/xmlSchema/anyAttribute.rb +49 -0
  103. data/lib/wsdl/xmlSchema/attribute.rb +105 -0
  104. data/lib/wsdl/xmlSchema/attributeGroup.rb +69 -0
  105. data/lib/wsdl/xmlSchema/choice.rb +59 -0
  106. data/lib/wsdl/xmlSchema/complexContent.rb +98 -0
  107. data/lib/wsdl/xmlSchema/complexExtension.rb +120 -0
  108. data/lib/wsdl/xmlSchema/complexRestriction.rb +105 -0
  109. data/lib/wsdl/xmlSchema/complexType.rb +194 -0
  110. data/lib/wsdl/xmlSchema/content.rb +96 -0
  111. data/lib/wsdl/xmlSchema/data.rb +117 -0
  112. data/lib/wsdl/xmlSchema/element.rb +154 -0
  113. data/lib/wsdl/xmlSchema/enumeration.rb +37 -0
  114. data/lib/wsdl/xmlSchema/fractiondigits.rb +38 -0
  115. data/lib/wsdl/xmlSchema/group.rb +101 -0
  116. data/lib/wsdl/xmlSchema/import.rb +54 -0
  117. data/lib/wsdl/xmlSchema/importHandler.rb +46 -0
  118. data/lib/wsdl/xmlSchema/importer.rb +103 -0
  119. data/lib/wsdl/xmlSchema/include.rb +49 -0
  120. data/lib/wsdl/xmlSchema/length.rb +38 -0
  121. data/lib/wsdl/xmlSchema/list.rb +49 -0
  122. data/lib/wsdl/xmlSchema/maxexclusive.rb +38 -0
  123. data/lib/wsdl/xmlSchema/maxinclusive.rb +38 -0
  124. data/lib/wsdl/xmlSchema/maxlength.rb +38 -0
  125. data/lib/wsdl/xmlSchema/minexclusive.rb +38 -0
  126. data/lib/wsdl/xmlSchema/mininclusive.rb +38 -0
  127. data/lib/wsdl/xmlSchema/minlength.rb +38 -0
  128. data/lib/wsdl/xmlSchema/parser.rb +168 -0
  129. data/lib/wsdl/xmlSchema/pattern.rb +37 -0
  130. data/lib/wsdl/xmlSchema/ref.rb +34 -0
  131. data/lib/wsdl/xmlSchema/schema.rb +179 -0
  132. data/lib/wsdl/xmlSchema/sequence.rb +55 -0
  133. data/lib/wsdl/xmlSchema/simpleContent.rb +70 -0
  134. data/lib/wsdl/xmlSchema/simpleExtension.rb +63 -0
  135. data/lib/wsdl/xmlSchema/simpleRestriction.rb +133 -0
  136. data/lib/wsdl/xmlSchema/simpleType.rb +88 -0
  137. data/lib/wsdl/xmlSchema/totaldigits.rb +38 -0
  138. data/lib/wsdl/xmlSchema/union.rb +36 -0
  139. data/lib/wsdl/xmlSchema/unique.rb +35 -0
  140. data/lib/wsdl/xmlSchema/whitespace.rb +38 -0
  141. data/lib/wsdl/xmlSchema/xsd2ruby.rb +176 -0
  142. data/lib/xsd/charset.rb +190 -0
  143. data/lib/xsd/codegen/classdef.rb +209 -0
  144. data/lib/xsd/codegen/commentdef.rb +35 -0
  145. data/lib/xsd/codegen/gensupport.rb +277 -0
  146. data/lib/xsd/codegen/methoddef.rb +71 -0
  147. data/lib/xsd/codegen/moduledef.rb +209 -0
  148. data/lib/xsd/codegen.rb +13 -0
  149. data/lib/xsd/datatypes.rb +1466 -0
  150. data/lib/xsd/datatypes1999.rb +21 -0
  151. data/lib/xsd/iconvcharset.rb +34 -0
  152. data/lib/xsd/mapping.rb +69 -0
  153. data/lib/xsd/namedelements.rb +133 -0
  154. data/lib/xsd/ns.rb +183 -0
  155. data/lib/xsd/qname.rb +80 -0
  156. data/lib/xsd/xmlparser/libxmlparser.rb +116 -0
  157. data/lib/xsd/xmlparser/parser.rb +101 -0
  158. data/lib/xsd/xmlparser/rexmlparser.rb +59 -0
  159. data/lib/xsd/xmlparser/xmlparser.rb +51 -0
  160. data/lib/xsd/xmlparser/xmlscanner.rb +150 -0
  161. data/lib/xsd/xmlparser.rb +77 -0
  162. data/test/16runner.rb +69 -0
  163. data/test/helper.rb +7 -0
  164. data/test/interopR2/README.txt +2 -0
  165. data/test/interopR2/SOAPBuildersInterop_R2.wsdl +461 -0
  166. data/test/interopR2/SOAPBuildersInterop_R2GrB.wsdl +19 -0
  167. data/test/interopR2/base.rb +289 -0
  168. data/test/interopR2/client.NetRemoting.rb +18 -0
  169. data/test/interopR2/client.rb +1235 -0
  170. data/test/interopR2/client4S4C.rb +16 -0
  171. data/test/interopR2/client4S4C2.rb +15 -0
  172. data/test/interopR2/clientASP.NET.rb +18 -0
  173. data/test/interopR2/clientApacheAxis.rb +17 -0
  174. data/test/interopR2/clientApacheSOAP.rb +18 -0
  175. data/test/interopR2/clientBEAWebLogic.rb +18 -0
  176. data/test/interopR2/clientBase.rb +1968 -0
  177. data/test/interopR2/clientCapeConnect.rb +19 -0
  178. data/test/interopR2/clientDelphi.rb +20 -0
  179. data/test/interopR2/clientEasySoap.rb +15 -0
  180. data/test/interopR2/clientFrontier.rb +26 -0
  181. data/test/interopR2/clientGLUE.rb +33 -0
  182. data/test/interopR2/clientHP.rb +14 -0
  183. data/test/interopR2/clientJAX-RPC.rb +20 -0
  184. data/test/interopR2/clientJSOAP.rb +15 -0
  185. data/test/interopR2/clientKafkaXSLT.rb +16 -0
  186. data/test/interopR2/clientMSSOAPToolkit2.0.rb +18 -0
  187. data/test/interopR2/clientMSSOAPToolkit3.0.rb +18 -0
  188. data/test/interopR2/clientNuSOAP.rb +20 -0
  189. data/test/interopR2/clientNuWave.rb +16 -0
  190. data/test/interopR2/clientOpenLink.rb +16 -0
  191. data/test/interopR2/clientOracle.rb +16 -0
  192. data/test/interopR2/clientPEAR.rb +19 -0
  193. data/test/interopR2/clientPhalanx.rb +19 -0
  194. data/test/interopR2/clientSIMACE.rb +19 -0
  195. data/test/interopR2/clientSOAP4R.rb +19 -0
  196. data/test/interopR2/clientSOAP__Lite.rb +15 -0
  197. data/test/interopR2/clientSQLData.rb +19 -0
  198. data/test/interopR2/clientSilverStream.rb +18 -0
  199. data/test/interopR2/clientSpray2001.rb +18 -0
  200. data/test/interopR2/clientSun.rb +20 -0
  201. data/test/interopR2/clientVWOpentalkSoap.rb +20 -0
  202. data/test/interopR2/clientWASP.rb +20 -0
  203. data/test/interopR2/clientWASPC.rb +19 -0
  204. data/test/interopR2/clientWebMethods.rb +16 -0
  205. data/test/interopR2/clientWhiteMesa.rb +29 -0
  206. data/test/interopR2/clientWingfoot.rb +16 -0
  207. data/test/interopR2/clientXMLBus.rb +20 -0
  208. data/test/interopR2/clientXMLRPC-EPI.rb +18 -0
  209. data/test/interopR2/clientXSOAP.rb +15 -0
  210. data/test/interopR2/clientZSI.rb +20 -0
  211. data/test/interopR2/clienteSOAP.rb +19 -0
  212. data/test/interopR2/clientgSOAP.rb +19 -0
  213. data/test/interopR2/clientkSOAP.rb +18 -0
  214. data/test/interopR2/iSimonReg.rb +113 -0
  215. data/test/interopR2/interopResultBase.rb +115 -0
  216. data/test/interopR2/interopService.rb +248 -0
  217. data/test/interopR2/rwikiInteropService.rb +106 -0
  218. data/test/interopR2/server.cgi +271 -0
  219. data/test/interopR2/server.rb +276 -0
  220. data/test/interopR2/simonReg.rb +124 -0
  221. data/test/interopR2/test.sh +49 -0
  222. data/test/interopR4/client.rb +113 -0
  223. data/test/runner.rb +8 -0
  224. data/test/sm11/classDef.rb +157 -0
  225. data/test/sm11/client.rb +543 -0
  226. data/test/sm11/driver.rb +184 -0
  227. data/test/sm11/servant.rb +1068 -0
  228. data/test/sm11/server.rb +26 -0
  229. data/test/soap/asp.net/hello.wsdl +96 -0
  230. data/test/soap/asp.net/test_aspdotnet.rb +124 -0
  231. data/test/soap/auth/htdigest +2 -0
  232. data/test/soap/auth/htpasswd +2 -0
  233. data/test/soap/auth/test_basic.rb +118 -0
  234. data/test/soap/auth/test_digest.rb +119 -0
  235. data/test/soap/calc/calc.rb +18 -0
  236. data/test/soap/calc/calc2.rb +30 -0
  237. data/test/soap/calc/server.cgi +16 -0
  238. data/test/soap/calc/server.rb +18 -0
  239. data/test/soap/calc/server2.rb +21 -0
  240. data/test/soap/calc/test_calc.rb +53 -0
  241. data/test/soap/calc/test_calc2.rb +57 -0
  242. data/test/soap/calc/test_calc_cgi.rb +72 -0
  243. data/test/soap/case/test_mapping.rb +58 -0
  244. data/test/soap/fault/test_customfault.rb +61 -0
  245. data/test/soap/fault/test_fault.rb +47 -0
  246. data/test/soap/fault/test_soaparray.rb +36 -0
  247. data/test/soap/filter/test_filter.rb +147 -0
  248. data/test/soap/header/server.cgi +121 -0
  249. data/test/soap/header/test_authheader.rb +241 -0
  250. data/test/soap/header/test_authheader_cgi.rb +122 -0
  251. data/test/soap/header/test_simplehandler.rb +117 -0
  252. data/test/soap/helloworld/hw_s.rb +17 -0
  253. data/test/soap/helloworld/test_helloworld.rb +45 -0
  254. data/test/soap/htpasswd +2 -0
  255. data/test/soap/literalArrayMapping/amazonEc.rb +4779 -0
  256. data/test/soap/literalArrayMapping/amazonEcDriver.rb +173 -0
  257. data/test/soap/literalArrayMapping/amazonresponse.xml +100 -0
  258. data/test/soap/literalArrayMapping/test_definedarray.rb +35 -0
  259. data/test/soap/marshal/marshaltestlib.rb +498 -0
  260. data/test/soap/marshal/test_digraph.rb +57 -0
  261. data/test/soap/marshal/test_marshal.rb +28 -0
  262. data/test/soap/marshal/test_struct.rb +48 -0
  263. data/test/soap/ssl/README +1 -0
  264. data/test/soap/ssl/ca.cert +23 -0
  265. data/test/soap/ssl/client.cert +19 -0
  266. data/test/soap/ssl/client.key +15 -0
  267. data/test/soap/ssl/server.cert +19 -0
  268. data/test/soap/ssl/server.key +15 -0
  269. data/test/soap/ssl/sslsvr.rb +59 -0
  270. data/test/soap/ssl/subca.cert +21 -0
  271. data/test/soap/ssl/test_ssl.rb +236 -0
  272. data/test/soap/struct/test_struct.rb +71 -0
  273. data/test/soap/styleuse/client.rb +21 -0
  274. data/test/soap/styleuse/server.rb +87 -0
  275. data/test/soap/swa/test_file.rb +76 -0
  276. data/test/soap/test_basetype.rb +1091 -0
  277. data/test/soap/test_cookie.rb +113 -0
  278. data/test/soap/test_custom_ns.rb +106 -0
  279. data/test/soap/test_custommap.rb +111 -0
  280. data/test/soap/test_empty.rb +106 -0
  281. data/test/soap/test_envelopenamespace.rb +86 -0
  282. data/test/soap/test_extraattr.rb +55 -0
  283. data/test/soap/test_generator.rb +32 -0
  284. data/test/soap/test_httpconfigloader.rb +72 -0
  285. data/test/soap/test_mapping.rb +132 -0
  286. data/test/soap/test_nestedexception.rb +71 -0
  287. data/test/soap/test_nil.rb +71 -0
  288. data/test/soap/test_no_indent.rb +89 -0
  289. data/test/soap/test_property.rb +429 -0
  290. data/test/soap/test_response_as_xml.rb +118 -0
  291. data/test/soap/test_soapelement.rb +139 -0
  292. data/test/soap/test_streamhandler.rb +271 -0
  293. data/test/soap/test_styleuse.rb +327 -0
  294. data/test/soap/wsdlDriver/README.txt +2 -0
  295. data/test/soap/wsdlDriver/calc.wsdl +126 -0
  296. data/test/soap/wsdlDriver/document.wsdl +54 -0
  297. data/test/soap/wsdlDriver/echo_version.rb +30 -0
  298. data/test/soap/wsdlDriver/simpletype.wsdl +63 -0
  299. data/test/soap/wsdlDriver/test_calc.rb +72 -0
  300. data/test/soap/wsdlDriver/test_document.rb +72 -0
  301. data/test/soap/wsdlDriver/test_simpletype.rb +82 -0
  302. data/test/testutil.rb +55 -0
  303. data/test/wsdl/abstract/abstract.wsdl +176 -0
  304. data/test/wsdl/abstract/test_abstract.rb +160 -0
  305. data/test/wsdl/anonymous/expectedClassDef.rb +129 -0
  306. data/test/wsdl/anonymous/expectedDriver.rb +60 -0
  307. data/test/wsdl/anonymous/expectedMappingRegistry.rb +177 -0
  308. data/test/wsdl/anonymous/lp.wsdl +147 -0
  309. data/test/wsdl/anonymous/test_anonymous.rb +131 -0
  310. data/test/wsdl/any/any.wsdl +114 -0
  311. data/test/wsdl/any/expectedDriver.rb +69 -0
  312. data/test/wsdl/any/expectedEcho.rb +58 -0
  313. data/test/wsdl/any/expectedMappingRegistry.rb +64 -0
  314. data/test/wsdl/any/expectedService.rb +70 -0
  315. data/test/wsdl/any/test_any.rb +194 -0
  316. data/test/wsdl/axisArray/axisArray.wsdl +87 -0
  317. data/test/wsdl/axisArray/test_axisarray.rb +125 -0
  318. data/test/wsdl/choice/choice.wsdl +167 -0
  319. data/test/wsdl/choice/test_choice.rb +311 -0
  320. data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
  321. data/test/wsdl/complexcontent/test_echo.rb +91 -0
  322. data/test/wsdl/datetime/DatetimeService.rb +45 -0
  323. data/test/wsdl/datetime/datetime.rb +0 -0
  324. data/test/wsdl/datetime/datetime.wsdl +45 -0
  325. data/test/wsdl/datetime/datetimeServant.rb +23 -0
  326. data/test/wsdl/datetime/test_datetime.rb +88 -0
  327. data/test/wsdl/document/array/double.wsdl +161 -0
  328. data/test/wsdl/document/array/test_array.rb +202 -0
  329. data/test/wsdl/document/document.wsdl +76 -0
  330. data/test/wsdl/document/number.wsdl +54 -0
  331. data/test/wsdl/document/ping_nosoapaction.wsdl +66 -0
  332. data/test/wsdl/document/test_nosoapaction.rb +103 -0
  333. data/test/wsdl/document/test_number.rb +93 -0
  334. data/test/wsdl/document/test_rpc.rb +356 -0
  335. data/test/wsdl/emptycomplextype.wsdl +31 -0
  336. data/test/wsdl/fault/fault.wsdl +79 -0
  337. data/test/wsdl/fault/multifault.wsdl +96 -0
  338. data/test/wsdl/fault/test_fault.rb +120 -0
  339. data/test/wsdl/fault/test_multifault.rb +135 -0
  340. data/test/wsdl/group/expectedClassdef.rb +59 -0
  341. data/test/wsdl/group/expectedDriver.rb +52 -0
  342. data/test/wsdl/group/expectedMappingRegistry.rb +68 -0
  343. data/test/wsdl/group/group.wsdl +88 -0
  344. data/test/wsdl/group/test_rpc.rb +146 -0
  345. data/test/wsdl/list/list.wsdl +93 -0
  346. data/test/wsdl/list/test_list.rb +125 -0
  347. data/test/wsdl/map/map.wsdl +92 -0
  348. data/test/wsdl/map/map.xml +43 -0
  349. data/test/wsdl/map/test_map.rb +100 -0
  350. data/test/wsdl/marshal/person.wsdl +21 -0
  351. data/test/wsdl/marshal/person_org.rb +24 -0
  352. data/test/wsdl/marshal/test_wsdlmarshal.rb +76 -0
  353. data/test/wsdl/multiplefault.wsdl +75 -0
  354. data/test/wsdl/oneway/oneway.wsdl +36 -0
  355. data/test/wsdl/oneway/test_oneway.rb +109 -0
  356. data/test/wsdl/overload/expectedClient.rb +38 -0
  357. data/test/wsdl/overload/expectedDriver.rb +62 -0
  358. data/test/wsdl/overload/expectedServant.rb +36 -0
  359. data/test/wsdl/overload/overload.wsdl +70 -0
  360. data/test/wsdl/overload/test_overload.rb +132 -0
  361. data/test/wsdl/qualified/lp.wsdl +47 -0
  362. data/test/wsdl/qualified/lp.xsd +26 -0
  363. data/test/wsdl/qualified/np.wsdl +51 -0
  364. data/test/wsdl/qualified/test_qualified.rb +138 -0
  365. data/test/wsdl/qualified/test_unqualified.rb +139 -0
  366. data/test/wsdl/raa/RAAService.rb +126 -0
  367. data/test/wsdl/raa/README.txt +8 -0
  368. data/test/wsdl/raa/expectedClassDef.rb +101 -0
  369. data/test/wsdl/raa/expectedDriver.rb +97 -0
  370. data/test/wsdl/raa/expectedMappingRegistry.rb +122 -0
  371. data/test/wsdl/raa/raa.wsdl +264 -0
  372. data/test/wsdl/raa/test_raa.rb +127 -0
  373. data/test/wsdl/ref/expectedDriver.rb +52 -0
  374. data/test/wsdl/ref/expectedProduct.rb +244 -0
  375. data/test/wsdl/ref/product.wsdl +147 -0
  376. data/test/wsdl/ref/test_ref.rb +269 -0
  377. data/test/wsdl/rpc/rpc.wsdl +109 -0
  378. data/test/wsdl/rpc/test-rpc-lit.wsdl +371 -0
  379. data/test/wsdl/rpc/test_rpc.rb +177 -0
  380. data/test/wsdl/rpc/test_rpc_lit.rb +471 -0
  381. data/test/wsdl/simplecontent/simplecontent.wsdl +84 -0
  382. data/test/wsdl/simplecontent/test_simplecontent.rb +103 -0
  383. data/test/wsdl/simpletype/rpc/expectedClient.rb +35 -0
  384. data/test/wsdl/simpletype/rpc/expectedDriver.rb +59 -0
  385. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +37 -0
  386. data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +58 -0
  387. data/test/wsdl/simpletype/rpc/expectedServant.rb +33 -0
  388. data/test/wsdl/simpletype/rpc/expectedService.rb +56 -0
  389. data/test/wsdl/simpletype/rpc/rpc.wsdl +98 -0
  390. data/test/wsdl/simpletype/rpc/test_rpc.rb +53 -0
  391. data/test/wsdl/simpletype/simpletype.wsdl +114 -0
  392. data/test/wsdl/simpletype/test_simpletype.rb +93 -0
  393. data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
  394. data/test/wsdl/soap/test_soapbodyparts.rb +80 -0
  395. data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +22 -0
  396. data/test/wsdl/soap/wsdl2ruby/expectedClient.rb +35 -0
  397. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +59 -0
  398. data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +37 -0
  399. data/test/wsdl/soap/wsdl2ruby/expectedServant.rb +33 -0
  400. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +49 -0
  401. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +56 -0
  402. data/test/wsdl/soap/wsdl2ruby/rpc.wsdl +80 -0
  403. data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +38 -0
  404. data/test/wsdl/soap/wsdl2ruby/section/section.xsd +31 -0
  405. data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +54 -0
  406. data/test/wsdl/soap/wsdl2ruby/soapenc/soapenc.wsdl +64 -0
  407. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +84 -0
  408. data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +103 -0
  409. data/test/wsdl/soaptype/soaptype.wsdl +61 -0
  410. data/test/wsdl/soaptype/test_soaptype.rb +179 -0
  411. data/test/wsdl/test_emptycomplextype.rb +22 -0
  412. data/test/wsdl/test_fault.rb +51 -0
  413. data/test/wsdl/test_multiplefault.rb +42 -0
  414. data/test/xsd/codegen/test_classdef.rb +245 -0
  415. data/test/xsd/noencoding.xml +4 -0
  416. data/test/xsd/test_noencoding.rb +33 -0
  417. data/test/xsd/test_ns.rb +42 -0
  418. data/test/xsd/test_xmlschemaparser.rb +23 -0
  419. data/test/xsd/test_xsd.rb +1639 -0
  420. data/test/xsd/xmllang.xml +43 -0
  421. data/test/xsd/xmlschema.xml +12 -0
  422. data/test/xsd/xsd2ruby/expected_mysample.rb +66 -0
  423. data/test/xsd/xsd2ruby/expected_mysample_mapper.rb +12 -0
  424. data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +52 -0
  425. data/test/xsd/xsd2ruby/section.xsd +49 -0
  426. data/test/xsd/xsd2ruby/test_xsd2ruby.rb +91 -0
  427. metadata +489 -0
@@ -0,0 +1,55 @@
1
+ # encoding: ASCII-8BIT
2
+ # WSDL4R - Class name creator.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'soap/mapping/typeMap'
11
+ require 'xsd/codegen/gensupport'
12
+
13
+
14
+ module WSDL
15
+ module SOAP
16
+
17
+
18
+ class ClassNameCreator
19
+ include XSD::CodeGen::GenSupport
20
+
21
+ def initialize
22
+ @classname = {}
23
+ end
24
+
25
+ def assign_name(qname, modulepath = nil)
26
+ key = [modulepath, qname]
27
+ unless @classname.key?(key)
28
+ if klass = ::SOAP::TypeMap[qname]
29
+ name =
30
+ ::SOAP::Mapping::DefaultRegistry.find_mapped_obj_class(klass).name
31
+ else
32
+ name = safeconstname(qname.name)
33
+ if modulepath
34
+ name = [modulepath, name].join('::')
35
+ end
36
+ while @classname.value?(name)
37
+ name += '_'
38
+ end
39
+ check_classname(name)
40
+ end
41
+ @classname[key] = name.freeze
42
+ end
43
+ @classname[key]
44
+ end
45
+
46
+ def check_classname(name)
47
+ if Object.constants.include?(name)
48
+ warn("created definition re-opens an existing toplevel class: #{name}. consider to use --module_path option of wsdl2ruby.rb")
49
+ end
50
+ end
51
+ end
52
+
53
+
54
+ end
55
+ end
@@ -0,0 +1,107 @@
1
+ # encoding: ASCII-8BIT
2
+ # WSDL4R - Creating client skelton code from WSDL.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'wsdl/info'
11
+ require 'wsdl/soap/classDefCreatorSupport'
12
+
13
+
14
+ module WSDL
15
+ module SOAP
16
+
17
+
18
+ class ClientSkeltonCreator
19
+ include ClassDefCreatorSupport
20
+
21
+ attr_reader :definitions
22
+
23
+ def initialize(definitions, name_creator, modulepath = nil)
24
+ @definitions = definitions
25
+ @name_creator = name_creator
26
+ @modulepath = modulepath
27
+ end
28
+
29
+ def dump(service_name)
30
+ services = @definitions.service(service_name)
31
+ unless services
32
+ raise RuntimeError.new("service not defined: #{service_name}")
33
+ end
34
+ result = ""
35
+ if @modulepath
36
+ result << "\n"
37
+ modulepath = @modulepath.respond_to?(:lines) ? @modulepath.lines : @modulepath # RubyJedi: compatible with Ruby 1.8.6 and above
38
+ result << modulepath.collect { |ele| "module #{ele}" }.join("; ")
39
+ result << "\n\n"
40
+ end
41
+ services.ports.each do |port|
42
+ result << dump_porttype(port.porttype)
43
+ result << "\n"
44
+ end
45
+ if @modulepath
46
+ result << "\n\n"
47
+ modulepath = @modulepath.respond_to?(:lines) ? @modulepath.lines : @modulepath # RubyJedi: compatible with Ruby 1.8.6 and above
48
+ result << modulepath.collect { |ele| "end" }.join("; ")
49
+ result << "\n"
50
+ end
51
+ result
52
+ end
53
+
54
+ private
55
+
56
+ def dump_porttype(porttype)
57
+ assigned_method = collect_assigned_method(@definitions, porttype.name, @modulepath)
58
+ drv_name = mapped_class_basename(porttype.name, @modulepath)
59
+
60
+ result = ""
61
+ result << <<__EOD__
62
+ endpoint_url = ARGV.shift
63
+ obj = #{ drv_name }.new(endpoint_url)
64
+
65
+ # run ruby with -d to see SOAP wiredumps.
66
+ obj.wiredump_dev = STDERR if $DEBUG
67
+
68
+ __EOD__
69
+ element_definitions = @definitions.collect_elements
70
+ binding = porttype.find_binding
71
+ if binding
72
+ binding.operations.each do |op_bind|
73
+ operation = op_bind.find_operation
74
+ if operation.nil?
75
+ warn("operation not found for binding: #{op_bind}")
76
+ next
77
+ end
78
+ name = assigned_method[op_bind.boundid] || operation.name
79
+ result << dump_method_signature(name, operation, element_definitions)
80
+ result << dump_input_init(operation.input) << "\n"
81
+ result << dump_operation(name, operation) << "\n\n"
82
+ end
83
+ end
84
+ result
85
+ end
86
+
87
+ def dump_operation(name, operation)
88
+ input = operation.input
89
+ "puts obj.#{ safemethodname(name) }#{ dump_inputparam(input) }"
90
+ end
91
+
92
+ def dump_input_init(input)
93
+ result = input.find_message.parts.collect { |part|
94
+ safevarname(part.name)
95
+ }.join(" = ")
96
+ if result.empty?
97
+ ""
98
+ else
99
+ result << " = nil"
100
+ end
101
+ result
102
+ end
103
+ end
104
+
105
+
106
+ end
107
+ end
@@ -0,0 +1,174 @@
1
+ # encoding: ASCII-8BIT
2
+ # WSDL4R - SOAP complexType definition for WSDL.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'wsdl/xmlSchema/complexType'
11
+ require 'soap/mapping'
12
+
13
+
14
+ module WSDL
15
+ module XMLSchema
16
+
17
+
18
+ class ComplexType < Info
19
+ def compoundtype
20
+ @compoundtype ||= check_type
21
+ end
22
+
23
+ def check_type
24
+ if have_any?
25
+ :TYPE_STRUCT
26
+ elsif content
27
+ if attributes.empty? and map_as_array?
28
+ if name == ::SOAP::Mapping::MapQName
29
+ :TYPE_MAP
30
+ else
31
+ :TYPE_ARRAY
32
+ end
33
+ else
34
+ :TYPE_STRUCT
35
+ end
36
+ elsif complexcontent
37
+ complexcontent.check_type
38
+ elsif simplecontent
39
+ :TYPE_SIMPLE
40
+ elsif !attributes.empty?
41
+ :TYPE_STRUCT
42
+ else # empty complexType definition (seen in partner.wsdl of salesforce)
43
+ :TYPE_EMPTY
44
+ end
45
+ end
46
+
47
+ def child_type(name = nil)
48
+ case compoundtype
49
+ when :TYPE_STRUCT
50
+ if ele = find_element(name)
51
+ ele.type
52
+ elsif ele = find_element_by_name(name.name)
53
+ ele.type
54
+ end
55
+ when :TYPE_ARRAY
56
+ @contenttype ||= content_arytype
57
+ when :TYPE_MAP
58
+ item_ele = find_element_by_name("item") or
59
+ raise RuntimeError.new("'item' element not found in Map definition.")
60
+ content = item_ele.local_complextype or
61
+ raise RuntimeError.new("No complexType definition for 'item'.")
62
+ if ele = content.find_element(name)
63
+ ele.type
64
+ elsif ele = content.find_element_by_name(name.name)
65
+ ele.type
66
+ end
67
+ else
68
+ raise NotImplementedError.new("Unknown kind of complexType.")
69
+ end
70
+ end
71
+
72
+ def child_defined_complextype(name)
73
+ ele = nil
74
+ case compoundtype
75
+ when :TYPE_STRUCT, :TYPE_MAP
76
+ unless ele = find_element(name)
77
+ if name.namespace.nil?
78
+ ele = find_element_by_name(name.name)
79
+ end
80
+ end
81
+ when :TYPE_ARRAY
82
+ e = elements
83
+ if e.size == 1
84
+ ele = e[0]
85
+ else
86
+ raise RuntimeError.new("Assert: must not reach.")
87
+ end
88
+ else
89
+ raise RuntimeError.new("Assert: Not implemented.")
90
+ end
91
+ unless ele
92
+ raise RuntimeError.new("Cannot find #{name} as a children of #{@name}.")
93
+ end
94
+ ele.local_complextype
95
+ end
96
+
97
+ def find_soapenc_arytype
98
+ unless compoundtype == :TYPE_ARRAY
99
+ raise RuntimeError.new("Assert: not for array")
100
+ end
101
+ if complexcontent
102
+ if complexcontent.restriction
103
+ complexcontent.restriction.attributes.each do |attribute|
104
+ if attribute.ref == ::SOAP::AttrArrayTypeName
105
+ return attribute.arytype
106
+ end
107
+ end
108
+ end
109
+ end
110
+ nil
111
+ end
112
+
113
+ def find_arytype
114
+ unless compoundtype == :TYPE_ARRAY
115
+ raise RuntimeError.new("Assert: not for array")
116
+ end
117
+ if arytype = find_soapenc_arytype
118
+ return arytype
119
+ end
120
+ if map_as_array?
121
+ return element_simpletype(elements[0])
122
+ end
123
+ raise RuntimeError.new("Assert: Unknown array definition.")
124
+ end
125
+
126
+ def find_aryelement
127
+ unless compoundtype == :TYPE_ARRAY
128
+ raise RuntimeError.new("Assert: not for array")
129
+ end
130
+ if map_as_array?
131
+ return nested_elements[0]
132
+ end
133
+ nil # use default item name
134
+ end
135
+
136
+ private
137
+
138
+ def element_simpletype(element)
139
+ case element
140
+ when XMLSchema::Element
141
+ if element.type
142
+ element.type
143
+ elsif element.local_simpletype
144
+ element.local_simpletype.base
145
+ else
146
+ # element definition
147
+ nil
148
+ end
149
+ when XMLSchema::Any
150
+ XSD::AnyTypeName
151
+ else
152
+ nil
153
+ end
154
+ end
155
+
156
+ def map_as_array?
157
+ e = nested_elements
158
+ e.size == 1 and e[0].map_as_array?
159
+ end
160
+
161
+ def content_arytype
162
+ if arytype = find_arytype
163
+ ns = arytype.namespace
164
+ name = arytype.name.sub(/\[(?:,)*\]$/, '')
165
+ XSD::QName.new(ns, name)
166
+ else
167
+ nil
168
+ end
169
+ end
170
+ end
171
+
172
+
173
+ end
174
+ end
@@ -0,0 +1,43 @@
1
+ # encoding: ASCII-8BIT
2
+ # WSDL4R - WSDL SOAP binding data definitions.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'xsd/qname'
11
+ require 'wsdl/soap/definitions'
12
+ require 'wsdl/soap/binding'
13
+ require 'wsdl/soap/operation'
14
+ require 'wsdl/soap/body'
15
+ require 'wsdl/soap/element'
16
+ require 'wsdl/soap/header'
17
+ require 'wsdl/soap/headerfault'
18
+ require 'wsdl/soap/fault'
19
+ require 'wsdl/soap/address'
20
+ require 'wsdl/soap/complexType'
21
+
22
+
23
+ module WSDL
24
+ module SOAP
25
+
26
+
27
+ HeaderFaultName = XSD::QName.new(SOAPBindingNamespace, 'headerfault')
28
+
29
+ LocationAttrName = XSD::QName.new(nil, 'location')
30
+ StyleAttrName = XSD::QName.new(nil, 'style')
31
+ TransportAttrName = XSD::QName.new(nil, 'transport')
32
+ UseAttrName = XSD::QName.new(nil, 'use')
33
+ PartsAttrName = XSD::QName.new(nil, 'parts')
34
+ PartAttrName = XSD::QName.new(nil, 'part')
35
+ NameAttrName = XSD::QName.new(nil, 'name')
36
+ MessageAttrName = XSD::QName.new(nil, 'message')
37
+ EncodingStyleAttrName = XSD::QName.new(nil, 'encodingStyle')
38
+ NamespaceAttrName = XSD::QName.new(nil, 'namespace')
39
+ SOAPActionAttrName = XSD::QName.new(nil, 'soapAction')
40
+
41
+
42
+ end
43
+ end
@@ -0,0 +1,201 @@
1
+ # encoding: ASCII-8BIT
2
+ # WSDL4R - WSDL additional definitions for SOAP.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'wsdl/info'
11
+ require 'xsd/namedelements'
12
+ require 'soap/mapping'
13
+
14
+
15
+ module WSDL
16
+
17
+
18
+ class Definitions < Info
19
+ def self.soap_rpc_complextypes
20
+ types = XSD::NamedElements.new
21
+ types << array_complextype
22
+ types << fault_complextype
23
+ types << exception_complextype
24
+ types
25
+ end
26
+
27
+ def self.array_complextype
28
+ type = XMLSchema::ComplexType.new(::SOAP::ValueArrayName)
29
+ type.complexcontent = XMLSchema::ComplexContent.new
30
+ type.complexcontent.restriction = XMLSchema::ComplexRestriction.new
31
+ type.complexcontent.restriction.base = ::SOAP::ValueArrayName
32
+ attr = XMLSchema::Attribute.new
33
+ attr.ref = ::SOAP::AttrArrayTypeName
34
+ anyarray = XSD::QName.new(
35
+ XSD::AnyTypeName.namespace,
36
+ XSD::AnyTypeName.name + '[]')
37
+ attr.arytype = anyarray
38
+ type.complexcontent.restriction.attributes << attr
39
+ type
40
+ end
41
+
42
+ =begin
43
+ <xs:complexType name="Fault" final="extension">
44
+ <xs:sequence>
45
+ <xs:element name="faultcode" type="xs:QName" />
46
+ <xs:element name="faultstring" type="xs:string" />
47
+ <xs:element name="faultactor" type="xs:anyURI" minOccurs="0" />
48
+ <xs:element name="detail" type="tns:detail" minOccurs="0" />
49
+ </xs:sequence>
50
+ </xs:complexType>
51
+ =end
52
+ def self.fault_complextype
53
+ type = XMLSchema::ComplexType.new(::SOAP::EleFaultName)
54
+ faultcode = XMLSchema::Element.new(::SOAP::EleFaultCodeName, XSD::XSDQName::Type)
55
+ faultstring = XMLSchema::Element.new(::SOAP::EleFaultStringName, XSD::XSDString::Type)
56
+ faultactor = XMLSchema::Element.new(::SOAP::EleFaultActorName, XSD::XSDAnyURI::Type)
57
+ faultactor.minoccurs = 0
58
+ detail = XMLSchema::Element.new(::SOAP::EleFaultDetailName, XSD::AnyTypeName)
59
+ detail.minoccurs = 0
60
+ type.all_elements = [faultcode, faultstring, faultactor, detail]
61
+ type.final = 'extension'
62
+ type
63
+ end
64
+
65
+ def self.exception_complextype
66
+ type = XMLSchema::ComplexType.new(XSD::QName.new(
67
+ ::SOAP::Mapping::RubyCustomTypeNamespace, 'SOAPException'))
68
+ excn_name = XMLSchema::Element.new(XSD::QName.new(nil, 'excn_type_name'), XSD::XSDString::Type)
69
+ cause = XMLSchema::Element.new(XSD::QName.new(nil, 'cause'), XSD::AnyTypeName)
70
+ backtrace = XMLSchema::Element.new(XSD::QName.new(nil, 'backtrace'), ::SOAP::ValueArrayName)
71
+ message = XMLSchema::Element.new(XSD::QName.new(nil, 'message'), XSD::XSDString::Type)
72
+ type.all_elements = [excn_name, cause, backtrace, message]
73
+ type
74
+ end
75
+
76
+ def soap_rpc_complextypes(binding)
77
+ types = rpc_operation_complextypes(binding)
78
+ types + self.class.soap_rpc_complextypes
79
+ end
80
+
81
+ def collect_faulttypes
82
+ result = []
83
+ collect_fault_messages.each do |name|
84
+ faultparts = message(name).parts
85
+ if faultparts.size != 1
86
+ raise RuntimeError.new("Expecting fault message \"#{name}\" to have ONE part")
87
+ end
88
+ fault_part = faultparts[0]
89
+ # WS-I Basic Profile Version 1.1 (R2205) requires fault message parts
90
+ # to refer to elements rather than types
91
+ faulttype = fault_part.element
92
+ if not faulttype
93
+ warn("Fault message \"#{name}\" part \"#{fault_part.name}\" must specify an \"element\" attribute")
94
+ faulttype = fault_part.type
95
+ end
96
+ if faulttype and result.index(faulttype).nil?
97
+ result << faulttype
98
+ end
99
+ end
100
+ result
101
+ end
102
+
103
+ private
104
+
105
+ def get_fault_binding(op_binding, fault_name)
106
+ op_binding.fault.each do |fault|
107
+ return fault if fault.name == fault_name
108
+ end
109
+ return nil
110
+ end
111
+
112
+ def op_binding_declares_fault(op_binding, fault_name)
113
+ return get_fault_binding(op_binding, fault_name) != nil
114
+ end
115
+
116
+ def collect_fault_messages
117
+ result = []
118
+ porttypes.each do |porttype|
119
+ port_binding = porttype.find_binding()
120
+ next unless port_binding
121
+ porttype.operations.each do |operation|
122
+ op_binding = port_binding.operations.find { |ele| ele.name == operation.name }
123
+ next unless op_binding
124
+ operation.fault.each do |fault|
125
+ # Make sure the operation fault has a name
126
+ if not fault.name
127
+ warn("Operation \"#{operation.name}\": fault must specify a \"name\" attribute")
128
+ next
129
+ end
130
+ # Make sure that portType fault has a corresponding soap:fault
131
+ # definition in binding section.
132
+ if not op_binding_declares_fault(op_binding, fault.name)
133
+ warn("Operation \"#{operation.name}\", fault \"#{fault.name}\": no corresponding wsdl:fault binding found with a matching \"name\" attribute")
134
+ next
135
+ end
136
+ fault_binding = get_fault_binding(op_binding, fault.name)
137
+ if fault_binding.soapfault.nil?
138
+ warn("WARNING: no soap:fault found for wsdl:fault \"#{fault_binding.name}\" in operation \"#{operation.name}\" \n\n")
139
+ next
140
+ end
141
+ if fault_binding.soapfault.name != fault_binding.name
142
+ warn("WARNING: name of soap:fault \"#{fault_binding.soapfault.name}\" doesn't match the name of wsdl:fault \"#{fault_binding.name}\" in operation \"#{operation.name}\" \n\n")
143
+ next
144
+ end
145
+ # According to WS-I (R2723): if in a wsdl:binding the use attribute
146
+ # on a contained soapbind:fault element is present, its value MUST
147
+ # be "literal".
148
+ if fault_binding.soapfault.use and fault_binding.soapfault.use != "literal"
149
+ warn("Operation \"#{operation.name}\", fault \"#{fault.name}\": soap:fault \"use\" attribute must be \"literal\"")
150
+ end
151
+ if result.index(fault.message).nil?
152
+ result << fault.message
153
+ end
154
+ end
155
+ end
156
+ end
157
+ result
158
+ end
159
+
160
+ def rpc_operation_complextypes(binding)
161
+ types = XSD::NamedElements.new
162
+ binding.operations.each do |op_bind|
163
+ if op_bind_rpc?(op_bind)
164
+ operation = op_bind.find_operation
165
+ if op_bind.input
166
+ type = XMLSchema::ComplexType.new(op_bind.soapoperation_name)
167
+ message = messages[operation.input.message]
168
+ type.sequence_elements = elements_from_message(message)
169
+ types << type
170
+ end
171
+ if op_bind.output
172
+ type = XMLSchema::ComplexType.new(operation.outputname)
173
+ message = messages[operation.output.message]
174
+ type.sequence_elements = elements_from_message(message)
175
+ types << type
176
+ end
177
+ end
178
+ end
179
+ types
180
+ end
181
+
182
+ def op_bind_rpc?(op_bind)
183
+ op_bind.soapoperation_style == :rpc
184
+ end
185
+
186
+ def elements_from_message(message)
187
+ message.parts.collect { |part|
188
+ if part.element
189
+ collect_elements[part.element]
190
+ elsif part.name.nil? or part.type.nil?
191
+ raise RuntimeError.new("part of a message must be an element or typed")
192
+ else
193
+ qname = XSD::QName.new(nil, part.name)
194
+ XMLSchema::Element.new(qname, part.type)
195
+ end
196
+ }
197
+ end
198
+ end
199
+
200
+
201
+ end
@@ -0,0 +1,121 @@
1
+ # encoding: ASCII-8BIT
2
+ # WSDL4R - Creating driver code from WSDL.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'wsdl/info'
11
+ require 'wsdl/soap/mappingRegistryCreator'
12
+ require 'wsdl/soap/methodDefCreator'
13
+ require 'wsdl/soap/classDefCreatorSupport'
14
+ require 'xsd/codegen'
15
+
16
+
17
+ module WSDL
18
+ module SOAP
19
+
20
+
21
+ class DriverCreator
22
+ include ClassDefCreatorSupport
23
+
24
+ attr_reader :definitions
25
+ attr_accessor :drivername_postfix
26
+
27
+ def initialize(definitions, name_creator, modulepath = nil)
28
+ @definitions = definitions
29
+ @name_creator = name_creator
30
+ @modulepath = modulepath
31
+ @drivername_postfix = ''
32
+ end
33
+
34
+ def dump(porttype = nil)
35
+ result = "require 'soap/rpc/driver'\n\n"
36
+ if @modulepath
37
+ modulepath = @modulepath.respond_to?(:lines) ? @modulepath.lines : @modulepath # RubyJedi: compatible with Ruby 1.8.6 and above
38
+ modulepath.each do |name|
39
+ result << "module #{name}\n"
40
+ end
41
+ result << "\n"
42
+ end
43
+ if porttype.nil?
44
+ @definitions.porttypes.each do |type|
45
+ result << dump_porttype(type.name)
46
+ result << "\n"
47
+ end
48
+ else
49
+ result << dump_porttype(porttype)
50
+ end
51
+ if @modulepath
52
+ result << "\n"
53
+ modulepath = @modulepath.respond_to?(:lines) ? @modulepath.lines : @modulepath # RubyJedi: compatible with Ruby 1.8.6 and above
54
+ modulepath.each do |name|
55
+ result << "end\n"
56
+ end
57
+ end
58
+ result
59
+ end
60
+
61
+ private
62
+
63
+ def dump_porttype(porttype)
64
+ drivername = porttype.name + @drivername_postfix
65
+ qname = XSD::QName.new(porttype.namespace, drivername)
66
+ class_name = mapped_class_basename(qname, @modulepath)
67
+ defined_const = {}
68
+ mdcreator = MethodDefCreator.new(@definitions, @name_creator, @modulepath, defined_const)
69
+ methoddef = mdcreator.dump(porttype)
70
+ binding = @definitions.bindings.find { |item| item.type == porttype }
71
+ if binding.nil? or binding.soapbinding.nil?
72
+ # not bound or not a SOAP binding
73
+ return ''
74
+ end
75
+ address = @definitions.porttype(porttype).locations[0]
76
+
77
+ c = XSD::CodeGen::ClassDef.new(class_name, "::SOAP::RPC::Driver")
78
+ c.def_const("DefaultEndpointUrl", ndq(address))
79
+ c.def_code <<-EOD
80
+ Methods = [
81
+ #{methoddef.gsub(/^/, " ")}
82
+ ]
83
+ EOD
84
+ wsdl_name = @definitions.name ? @definitions.name.name : 'default'
85
+ mrname = safeconstname(wsdl_name + 'MappingRegistry')
86
+ c.def_method("initialize", "endpoint_url = nil") do
87
+ %Q[endpoint_url ||= DefaultEndpointUrl\n] +
88
+ %Q[super(endpoint_url, nil)\n] +
89
+ %Q[self.mapping_registry = #{mrname}::EncodedRegistry\n] +
90
+ %Q[self.literal_mapping_registry = #{mrname}::LiteralRegistry\n] +
91
+ %Q[init_methods]
92
+ end
93
+ c.def_privatemethod("init_methods") do
94
+ <<-EOD
95
+ Methods.each do |definitions|
96
+ opt = definitions.last
97
+ if opt[:request_style] == :document
98
+ add_document_operation(*definitions)
99
+ else
100
+ add_rpc_operation(*definitions)
101
+ qname = definitions[0]
102
+ name = definitions[2]
103
+ if qname.name != name and qname.name.capitalize == name.capitalize
104
+ ::SOAP::Mapping.define_singleton_method(self, qname.name) do |*arg|
105
+ __send__(name, *arg)
106
+ end
107
+ end
108
+ end
109
+ end
110
+ EOD
111
+ end
112
+ defined_const.each do |ns, tag|
113
+ c.def_const(tag, dq(ns))
114
+ end
115
+ c.dump
116
+ end
117
+ end
118
+
119
+
120
+ end
121
+ end