soap4r-sgonyea 1.5.9

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