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,56 @@
1
+ # WSDL4R - WSDL SOAP body definition.
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 'wsdl/info'
10
+
11
+
12
+ module WSDL
13
+ module SOAP
14
+
15
+
16
+ class Fault < Info
17
+ attr_reader :name # required
18
+ attr_reader :use # required
19
+ attr_reader :encodingstyle
20
+ attr_reader :namespace
21
+
22
+ def initialize
23
+ super
24
+ @name = nil
25
+ @use = nil
26
+ @encodingstyle = nil
27
+ @namespace = nil
28
+ end
29
+
30
+ def targetnamespace
31
+ parent.targetnamespace
32
+ end
33
+
34
+ def parse_element(element)
35
+ nil
36
+ end
37
+
38
+ def parse_attr(attr, value)
39
+ case attr
40
+ when NameAttrName
41
+ @name = XSD::QName.new(targetnamespace, value.source)
42
+ when UseAttrName
43
+ @use = value.source
44
+ when EncodingStyleAttrName
45
+ @encodingstyle = value.source
46
+ when NamespaceAttrName
47
+ @namespace = value.source
48
+ else
49
+ nil
50
+ end
51
+ end
52
+ end
53
+
54
+
55
+ end
56
+ end
@@ -0,0 +1,86 @@
1
+ # WSDL4R - WSDL SOAP body definition.
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 'wsdl/info'
10
+
11
+
12
+ module WSDL
13
+ module SOAP
14
+
15
+
16
+ class Header < Info
17
+ attr_reader :headerfault
18
+
19
+ attr_reader :message # required
20
+ attr_reader :part # required
21
+ attr_reader :use # required
22
+ attr_reader :encodingstyle
23
+ attr_reader :namespace
24
+
25
+ def initialize
26
+ super
27
+ @message = nil
28
+ @part = nil
29
+ @use = nil
30
+ @encodingstyle = nil
31
+ @namespace = nil
32
+ @headerfault = nil
33
+ end
34
+
35
+ def targetnamespace
36
+ parent.targetnamespace
37
+ end
38
+
39
+ def find_message
40
+ root.message(@message) or raise RuntimeError.new("#{@message} not found")
41
+ end
42
+
43
+ def find_part
44
+ find_message.parts.each do |part|
45
+ if part.name == @part
46
+ return part
47
+ end
48
+ end
49
+ raise RuntimeError.new("#{@part} not found")
50
+ end
51
+
52
+ def parse_element(element)
53
+ case element
54
+ when HeaderFaultName
55
+ o = WSDL::SOAP::HeaderFault.new
56
+ @headerfault = o
57
+ o
58
+ else
59
+ nil
60
+ end
61
+ end
62
+
63
+ def parse_attr(attr, value)
64
+ case attr
65
+ when MessageAttrName
66
+ if value.namespace.nil?
67
+ value = XSD::QName.new(targetnamespace, value.source)
68
+ end
69
+ @message = value
70
+ when PartAttrName
71
+ @part = value.source
72
+ when UseAttrName
73
+ @use = value.source
74
+ when EncodingStyleAttrName
75
+ @encodingstyle = value.source
76
+ when NamespaceAttrName
77
+ @namespace = value.source
78
+ else
79
+ nil
80
+ end
81
+ end
82
+ end
83
+
84
+
85
+ end
86
+ end
@@ -0,0 +1,56 @@
1
+ # WSDL4R - WSDL SOAP body definition.
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 'wsdl/info'
10
+
11
+
12
+ module WSDL
13
+ module SOAP
14
+
15
+
16
+ class HeaderFault < Info
17
+ attr_reader :message # required
18
+ attr_reader :part # required
19
+ attr_reader :use # required
20
+ attr_reader :encodingstyle
21
+ attr_reader :namespace
22
+
23
+ def initialize
24
+ super
25
+ @message = nil
26
+ @part = nil
27
+ @use = nil
28
+ @encodingstyle = nil
29
+ @namespace = nil
30
+ end
31
+
32
+ def parse_element(element)
33
+ nil
34
+ end
35
+
36
+ def parse_attr(attr, value)
37
+ case attr
38
+ when MessageAttrName
39
+ @message = value
40
+ when PartAttrName
41
+ @part = value.source
42
+ when UseAttrName
43
+ @use = value.source
44
+ when EncodingStyleAttrName
45
+ @encodingstyle = value.source
46
+ when NamespaceAttrName
47
+ @namespace = value.source
48
+ else
49
+ nil
50
+ end
51
+ end
52
+ end
53
+
54
+
55
+ end
56
+ end
@@ -0,0 +1,115 @@
1
+ # WSDL4R - Creating LiteralMappingRegistry code from WSDL.
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 'wsdl/info'
10
+ require 'wsdl/soap/mappingRegistryCreatorSupport'
11
+
12
+
13
+ module WSDL
14
+ module SOAP
15
+
16
+
17
+ class LiteralMappingRegistryCreator
18
+ include MappingRegistryCreatorSupport
19
+
20
+ def initialize(definitions, name_creator, modulepath, defined_const)
21
+ @definitions = definitions
22
+ @name_creator = name_creator
23
+ @modulepath = modulepath
24
+ @elements = definitions.collect_elements
25
+ @elements.uniq!
26
+ @attributes = definitions.collect_attributes
27
+ @attributes.uniq!
28
+ @simpletypes = definitions.collect_simpletypes
29
+ @simpletypes.uniq!
30
+ @complextypes = definitions.collect_complextypes
31
+ @complextypes.uniq!
32
+ @varname = nil
33
+ @defined_const = defined_const
34
+ end
35
+
36
+ def dump(varname)
37
+ @varname = varname
38
+ result = ''
39
+ str = dump_complextype
40
+ unless str.empty?
41
+ result << "\n" unless result.empty?
42
+ result << str
43
+ end
44
+ str = dump_simpletype
45
+ unless str.empty?
46
+ result << "\n" unless result.empty?
47
+ result << str
48
+ end
49
+ str = dump_element
50
+ unless str.empty?
51
+ result << "\n" unless result.empty?
52
+ result << str
53
+ end
54
+ str = dump_attribute
55
+ unless str.empty?
56
+ result << "\n" unless result.empty?
57
+ result << str
58
+ end
59
+ result
60
+ end
61
+
62
+ private
63
+
64
+ def dump_element
65
+ @elements.collect { |ele|
66
+ # has the definition different from the complexType of the same name
67
+ next if ele.type.nil? and @complextypes[ele.name]
68
+ dump_with_inner {
69
+ if typedef = ele.local_complextype
70
+ dump_complextypedef(@modulepath, ele.name, typedef)
71
+ elsif typedef = ele.local_simpletype
72
+ dump_simpletypedef(@modulepath, ele.name, typedef)
73
+ elsif ele.type
74
+ if typedef = @complextypes[ele.type]
75
+ dump_complextypedef(@modulepath, ele.type, typedef, ele.name)
76
+ elsif typedef = @simpletypes[ele.type]
77
+ dump_simpletypedef(@modulepath, ele.type, typedef, ele.name)
78
+ end
79
+ end
80
+ }
81
+ }.compact.join("\n")
82
+ end
83
+
84
+ def dump_attribute
85
+ @attributes.collect { |attr|
86
+ if attr.local_simpletype
87
+ dump_with_inner {
88
+ dump_simpletypedef(@modulepath, attr.name, attr.local_simpletype)
89
+ }
90
+ end
91
+ }.compact.join("\n")
92
+ end
93
+
94
+ def dump_simpletype
95
+ @simpletypes.collect { |type|
96
+ dump_with_inner {
97
+ dump_simpletypedef(@modulepath, type.name, type)
98
+ }
99
+ }.compact.join("\n")
100
+ end
101
+
102
+ def dump_complextype
103
+ @complextypes.collect { |type|
104
+ unless type.abstract
105
+ dump_with_inner {
106
+ dump_complextypedef(@modulepath, type.name, type)
107
+ }
108
+ end
109
+ }.compact.join("\n")
110
+ end
111
+ end
112
+
113
+
114
+ end
115
+ end
@@ -0,0 +1,58 @@
1
+ # WSDL4R - Creating MappingRegistry code from WSDL.
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 'wsdl/info'
10
+ require 'wsdl/soap/classDefCreatorSupport'
11
+ require 'wsdl/soap/encodedMappingRegistryCreator'
12
+ require 'wsdl/soap/literalMappingRegistryCreator'
13
+ require 'xsd/codegen/moduledef.rb'
14
+
15
+
16
+ module WSDL
17
+ module SOAP
18
+
19
+
20
+ class MappingRegistryCreator
21
+ include ClassDefCreatorSupport
22
+
23
+ attr_reader :definitions
24
+
25
+ def initialize(definitions, name_creator, modulepath = nil)
26
+ @definitions = definitions
27
+ @name_creator = name_creator
28
+ @modulepath = modulepath
29
+ end
30
+
31
+ def dump
32
+ defined_const = {}
33
+ encoded_creator = EncodedMappingRegistryCreator.new(@definitions, @name_creator, @modulepath, defined_const)
34
+ literal_creator = LiteralMappingRegistryCreator.new(@definitions, @name_creator, @modulepath, defined_const)
35
+ wsdl_name = @definitions.name ? @definitions.name.name : 'default'
36
+ module_name = safeconstname(wsdl_name + 'MappingRegistry')
37
+ if @modulepath
38
+ module_name = [@modulepath, module_name].join('::')
39
+ end
40
+ m = XSD::CodeGen::ModuleDef.new(module_name)
41
+ m.def_require("soap/mapping")
42
+ varname = 'EncodedRegistry'
43
+ m.def_const(varname, '::SOAP::Mapping::EncodedRegistry.new')
44
+ m.def_code(encoded_creator.dump(varname))
45
+ varname = 'LiteralRegistry'
46
+ m.def_const(varname, '::SOAP::Mapping::LiteralRegistry.new')
47
+ m.def_code(literal_creator.dump(varname))
48
+ #
49
+ defined_const.each do |ns, tag|
50
+ m.def_const(tag, dq(ns))
51
+ end
52
+ m.dump
53
+ end
54
+ end
55
+
56
+
57
+ end
58
+ end
@@ -0,0 +1,376 @@
1
+ # WSDL4R - Creating MappingRegistry support.
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 'wsdl/soap/classDefCreatorSupport'
10
+
11
+
12
+ module WSDL
13
+ module SOAP
14
+
15
+
16
+ # requires @defined_const = {}, @dump_with_inner, @modulepath
17
+ module MappingRegistryCreatorSupport
18
+ include ClassDefCreatorSupport
19
+ include XSD::CodeGen
20
+
21
+ def dump_with_inner
22
+ @dump_with_inner = []
23
+ @dump_with_inner.unshift(yield)
24
+ @dump_with_inner.join("\n")
25
+ end
26
+
27
+ def dump_complextypedef(mpath, qname, typedef, as_element = nil, opt = {})
28
+ case typedef.compoundtype
29
+ when :TYPE_STRUCT, :TYPE_EMPTY
30
+ dump_complex_typemap(mpath, qname, typedef, as_element, opt)
31
+ when :TYPE_ARRAY
32
+ dump_array_typemap(mpath, qname, typedef, as_element, opt)
33
+ when :TYPE_SIMPLE
34
+ dump_simple_typemap(mpath, qname, typedef, as_element, opt)
35
+ when :TYPE_MAP
36
+ # mapped as a general Hash
37
+ nil
38
+ else
39
+ raise RuntimeError.new(
40
+ "unknown kind of complexContent: #{typedef.compoundtype}")
41
+ end
42
+ end
43
+
44
+ def dump_array_typemap(mpath, qname, typedef, as_element, opt)
45
+ if typedef.find_soapenc_arytype
46
+ if opt[:encoded]
47
+ dump_encoded_array_typemap(mpath, qname, typedef, as_element, opt)
48
+ end
49
+ else
50
+ dump_literal_array_typemap(mpath, qname, typedef, as_element, opt)
51
+ end
52
+ end
53
+
54
+ def dump_complex_typemap(mpath, qname, typedef, as_element, opt)
55
+ var = {}
56
+ define_dump_class(var, mpath, qname, typedef, as_element, opt)
57
+ schema_ns = (var[:schema_name] || var[:schema_type]).namespace
58
+ if var[:schema_type] and typedef.base
59
+ var[:schema_basetype] = typedef.base
60
+ end
61
+ parentmodule = var[:class]
62
+ parsed_element =
63
+ parse_elements(typedef.elements, qname.namespace, parentmodule, opt)
64
+ if typedef.choice?
65
+ parsed_element.unshift(:choice)
66
+ end
67
+ var[:schema_element] = dump_schema_element_definition(parsed_element, 2)
68
+ unless typedef.attributes.empty?
69
+ var[:schema_attribute] = define_attribute(typedef.attributes)
70
+ end
71
+ assign_const(schema_ns, 'Ns')
72
+ dump_entry(@varname, var)
73
+ end
74
+
75
+ def dump_simple_typemap(mpath, qname, typedef, as_element, opt)
76
+ var = {}
77
+ define_dump_class(var, mpath, qname, typedef, as_element, opt)
78
+ schema_ns = (var[:schema_name] || var[:schema_type]).namespace
79
+ unless typedef.attributes.empty?
80
+ var[:schema_attribute] = define_attribute(typedef.attributes)
81
+ end
82
+ assign_const(schema_ns, 'Ns')
83
+ dump_entry(@varname, var)
84
+ end
85
+
86
+ def dump_schema_element_definition(definition, indent = 0)
87
+ return '[]' if definition.empty?
88
+ sp = ' ' * indent
89
+ if definition[0] == :choice
90
+ definition.shift
91
+ "[ :choice,\n" +
92
+ dump_schema_element(definition, indent + 2) + "\n" + sp + "]"
93
+ elsif definition[0].is_a?(::Array)
94
+ "[\n" +
95
+ dump_schema_element(definition, indent + 2) + "\n" + sp + "]"
96
+ else
97
+ varname, name, type, occurrence = definition
98
+ '[' + [
99
+ varname.dump,
100
+ dump_type(name, type),
101
+ dump_occurrence(occurrence)
102
+ ].compact.join(', ') + ']'
103
+ end
104
+ end
105
+
106
+ def dump_schema_element(schema_element, indent = 0)
107
+ sp = ' ' * indent
108
+ delimiter = ",\n" + sp
109
+ sp + schema_element.collect { |definition|
110
+ dump_schema_element_definition(definition, indent)
111
+ }.join(delimiter)
112
+ end
113
+
114
+ def dump_type(name, type)
115
+ if name
116
+ assign_const(name.namespace, 'Ns')
117
+ '[' + ndq(type) + ', ' + dqname(name) + ']'
118
+ else
119
+ ndq(type)
120
+ end
121
+ end
122
+
123
+ def dump_occurrence(occurrence)
124
+ if occurrence and occurrence != [1, 1] # default
125
+ minoccurs, maxoccurs = occurrence
126
+ maxoccurs ||= 'nil'
127
+ "[#{minoccurs}, #{maxoccurs}]"
128
+ end
129
+ end
130
+
131
+ def parse_elements(elements, base_namespace, mpath, opt)
132
+ schema_element = []
133
+ any = false
134
+ elements.each do |element|
135
+ case element
136
+ when XMLSchema::Any
137
+ # only 1 <any/> is allowed for now.
138
+ raise RuntimeError.new("duplicated 'any'") if any
139
+ any = true
140
+ varname = 'any' # not used
141
+ eleqname = XSD::AnyTypeName
142
+ type = nil
143
+ occurrence = nil
144
+ schema_element << [varname, eleqname, type, occurrence]
145
+ when XMLSchema::Element
146
+ next if element.ref == SchemaName
147
+ typebase = @modulepath
148
+ if element.anonymous_type?
149
+ child_opt = {
150
+ :qualified => (element.elementform == 'qualified'),
151
+ :is_anonymous => true
152
+ }
153
+ @dump_with_inner << dump_complextypedef(mpath, element.name, element.local_complextype, nil, child_opt)
154
+ typebase = mpath
155
+ end
156
+ type = create_type_name(typebase, element)
157
+ name = name_element(element).name
158
+ varname = safevarname(name)
159
+ if element.map_as_array?
160
+ if type
161
+ type += '[]'
162
+ else
163
+ type = '[]'
164
+ end
165
+ end
166
+ # nil means @@schema_ns + varname
167
+ eleqname = element.name || element.ref
168
+ if eleqname && varname == name && eleqname.namespace == base_namespace
169
+ eleqname = nil
170
+ end
171
+ occurrence = [element.minoccurs, element.maxoccurs]
172
+ schema_element << [varname, eleqname, type, occurrence]
173
+ when WSDL::XMLSchema::Sequence
174
+ child_schema_element =
175
+ parse_elements(element.elements, base_namespace, mpath, opt)
176
+ schema_element << child_schema_element
177
+ when WSDL::XMLSchema::Choice
178
+ child_schema_element =
179
+ parse_elements(element.elements, base_namespace, mpath, opt)
180
+ if !element.map_as_array?
181
+ # choice + maxOccurs="unbounded" is treated just as 'all' now.
182
+ child_schema_element.unshift(:choice)
183
+ end
184
+ schema_element << child_schema_element
185
+ when WSDL::XMLSchema::Group
186
+ if element.content.nil?
187
+ warn("no group definition found: #{element}")
188
+ next
189
+ end
190
+ child_schema_element =
191
+ parse_elements(element.content.elements, base_namespace, mpath, opt)
192
+ schema_element.concat(child_schema_element)
193
+ else
194
+ raise RuntimeError.new("unknown type: #{element}")
195
+ end
196
+ end
197
+ schema_element
198
+ end
199
+
200
+ def define_attribute(attributes)
201
+ schema_attribute = []
202
+ attributes.each do |attribute|
203
+ name = name_attribute(attribute)
204
+ if klass = attribute_basetype(attribute)
205
+ type = klass.name
206
+ else
207
+ warn("unresolved attribute type #{attribute.type} for #{name}")
208
+ type = nil
209
+ end
210
+ schema_attribute << [name, type]
211
+ end
212
+ "{\n " +
213
+ schema_attribute.collect { |name, type|
214
+ assign_const(name.namespace, 'Ns')
215
+ dqname(name) + ' => ' + ndq(type)
216
+ }.join(",\n ") +
217
+ "\n }"
218
+ end
219
+
220
+ def dump_entry(regname, var)
221
+ "#{regname}.register(\n " +
222
+ [
223
+ dump_entry_item(var, :class),
224
+ dump_entry_item(var, :soap_class),
225
+ dump_entry_item(var, :schema_name, :qname),
226
+ dump_entry_item(var, :schema_type, :qname),
227
+ dump_entry_item(var, :is_anonymous),
228
+ dump_entry_item(var, :schema_basetype, :qname),
229
+ dump_entry_item(var, :schema_qualified),
230
+ dump_entry_item(var, :schema_element),
231
+ dump_entry_item(var, :schema_attribute)
232
+ ].compact.join(",\n ") +
233
+ "\n)\n"
234
+ end
235
+
236
+ def dump_entry_item(var, key, dump_type = :none)
237
+ if var.key?(key)
238
+ case dump_type
239
+ when :none
240
+ ":#{key} => #{var[key]}"
241
+ when :string
242
+ if @defined_const.key?(var[key])
243
+ ":#{key} => #{@defined_const[var[key]]}"
244
+ else
245
+ ":#{key} => #{ndq(var[key])}"
246
+ end
247
+ when :qname
248
+ qname = var[key]
249
+ if @defined_const.key?(qname.namespace)
250
+ ns = @defined_const[qname.namespace]
251
+ else
252
+ ns = ndq(qname.namespace)
253
+ end
254
+ ":#{key} => XSD::QName.new(#{ns}, #{ndq(qname.name)})"
255
+ else
256
+ raise "Unknown dump type: #{dump_type}"
257
+ end
258
+ end
259
+ end
260
+
261
+ def dump_simpletypedef(mpath, qname, simpletype, as_element = nil, opt = {})
262
+ if simpletype.restriction
263
+ dump_simpletypedef_restriction(mpath, qname, simpletype, as_element, opt)
264
+ elsif simpletype.list
265
+ dump_simpletypedef_list(mpath, qname, simpletype, as_element, opt)
266
+ elsif simpletype.union
267
+ dump_simpletypedef_union(mpath, qname, simpletype, as_element, opt)
268
+ else
269
+ raise RuntimeError.new("unknown kind of simpletype: #{simpletype}")
270
+ end
271
+ end
272
+
273
+ def dump_simpletypedef_restriction(mpath, qname, typedef, as_element, opt)
274
+ restriction = typedef.restriction
275
+ unless restriction.enumeration?
276
+ # not supported. minlength?
277
+ return nil
278
+ end
279
+ var = {}
280
+ define_dump_class(var, mpath, qname, typedef, as_element, opt)
281
+ schema_ns = (var[:schema_name] || var[:schema_type]).namespace
282
+ assign_const(schema_ns, 'Ns')
283
+ dump_entry(@varname, var)
284
+ end
285
+
286
+ def dump_simpletypedef_list(mpath, qname, typedef, as_element, opt)
287
+ nil
288
+ end
289
+
290
+ def dump_simpletypedef_union(mpath, qname, typedef, as_element, opt)
291
+ nil
292
+ end
293
+
294
+ DEFAULT_ITEM_NAME = XSD::QName.new(nil, 'item')
295
+
296
+ def dump_literal_array_typemap(mpath, qname, typedef, as_element, opt)
297
+ var = {}
298
+ define_dump_class(var, mpath, qname, typedef, as_element, opt)
299
+ schema_ns = (var[:schema_name] || var[:schema_type]).namespace
300
+ parsed_element =
301
+ parse_elements(typedef.elements, qname.namespace, var[:class], opt)
302
+ if parsed_element.empty?
303
+ parsed_element = [create_array_element_definition(typedef, mpath)]
304
+ end
305
+ var[:schema_element] = dump_schema_element_definition(parsed_element, 2)
306
+ assign_const(schema_ns, 'Ns')
307
+ dump_entry(@varname, var)
308
+ end
309
+
310
+ def dump_encoded_array_typemap(mpath, qname, typedef, as_element, opt)
311
+ arytype = typedef.find_arytype || XSD::AnyTypeName
312
+ type = XSD::QName.new(arytype.namespace, arytype.name.sub(/\[(?:,)*\]$/, ''))
313
+ return <<__EOD__
314
+ #{@varname}.set(
315
+ #{mapped_class_name(qname, mpath)},
316
+ ::SOAP::SOAPArray,
317
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
318
+ { :type => #{dqname(type)} }
319
+ )
320
+ __EOD__
321
+ end
322
+
323
+ # used when "soapenc:arrayType" definition
324
+ def create_array_element_definition(typedef, mpath)
325
+ child_type = typedef.child_type
326
+ child_element = typedef.find_aryelement
327
+ if child_type == XSD::AnyTypeName
328
+ type = nil
329
+ elsif child_element
330
+ if klass = element_basetype(child_element)
331
+ type = klass.name
332
+ else
333
+ typename = child_element.type || child_element.name
334
+ type = mapped_class_name(typename, mpath)
335
+ end
336
+ elsif child_type
337
+ type = mapped_class_name(child_type, mpath)
338
+ else
339
+ type = nil
340
+ end
341
+ occurrence = [0, nil]
342
+ if child_element and child_element.name
343
+ if child_element.map_as_array?
344
+ type << '[]' if type
345
+ occurrence = [child_element.minoccurs, child_element.maxoccurs]
346
+ end
347
+ child_element_name = child_element.name
348
+ else
349
+ child_element_name = DEFAULT_ITEM_NAME
350
+ end
351
+ [child_element_name.name, child_element_name, type, occurrence]
352
+ end
353
+
354
+ def define_dump_class(var, mpath, qname, typedef, as_element, opt)
355
+ var[:class] = mapped_class_name(qname, mpath)
356
+ if as_element
357
+ var[:schema_name] = as_element
358
+ schema_ns = as_element.namespace
359
+ elsif typedef.name.nil?
360
+ var[:schema_name] = qname
361
+ schema_ns = qname.namespace
362
+ else
363
+ var[:schema_type] = qname
364
+ schema_ns = qname.namespace
365
+ end
366
+ var[:is_anonymous] = opt[:is_anonymous] if opt.key?(:is_anonymous)
367
+ # true, false, or nil
368
+ if opt.key?(:qualified)
369
+ var[:schema_qualified] = opt[:qualified].to_s
370
+ end
371
+ end
372
+ end
373
+
374
+
375
+ end
376
+ end