soap5r 2.0.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 (628) hide show
  1. data/.gitignore +1 -0
  2. data/COPYING +7 -0
  3. data/GPL +340 -0
  4. data/RELEASE_en.html +1900 -0
  5. data/RUBYS +56 -0
  6. data/Rakefile +38 -0
  7. data/bin/wsdl2ruby.rb +139 -0
  8. data/bin/xsd2ruby.rb +91 -0
  9. data/install.rb +91 -0
  10. data/lib/soap/attachment.rb +109 -0
  11. data/lib/soap/attrproxy.rb +35 -0
  12. data/lib/soap/baseData.rb +1095 -0
  13. data/lib/soap/ci.rake +31 -0
  14. data/lib/soap/element.rb +278 -0
  15. data/lib/soap/encodingstyle/aspDotNetHandler.rb +208 -0
  16. data/lib/soap/encodingstyle/handler.rb +121 -0
  17. data/lib/soap/encodingstyle/literalHandler.rb +196 -0
  18. data/lib/soap/encodingstyle/soapHandler.rb +560 -0
  19. data/lib/soap/filter/filterchain.rb +52 -0
  20. data/lib/soap/filter/handler.rb +32 -0
  21. data/lib/soap/filter/streamhandler.rb +30 -0
  22. data/lib/soap/filter.rb +14 -0
  23. data/lib/soap/generator.rb +299 -0
  24. data/lib/soap/header/handler.rb +62 -0
  25. data/lib/soap/header/handlerset.rb +71 -0
  26. data/lib/soap/header/mappinghandler.rb +48 -0
  27. data/lib/soap/header/simplehandler.rb +45 -0
  28. data/lib/soap/httpconfigloader.rb +140 -0
  29. data/lib/soap/mapping/encodedregistry.rb +539 -0
  30. data/lib/soap/mapping/factory.rb +389 -0
  31. data/lib/soap/mapping/literalregistry.rb +392 -0
  32. data/lib/soap/mapping/mapping.rb +577 -0
  33. data/lib/soap/mapping/registry.rb +296 -0
  34. data/lib/soap/mapping/rubytypeFactory.rb +446 -0
  35. data/lib/soap/mapping/schemadefinition.rb +171 -0
  36. data/lib/soap/mapping/typeMap.rb +107 -0
  37. data/lib/soap/mapping/wsdlencodedregistry.rb +212 -0
  38. data/lib/soap/mapping/wsdlliteralregistry.rb +249 -0
  39. data/lib/soap/mapping.rb +13 -0
  40. data/lib/soap/marshal.rb +60 -0
  41. data/lib/soap/mimemessage.rb +243 -0
  42. data/lib/soap/nestedexception.rb +43 -0
  43. data/lib/soap/netHttpClient.rb +242 -0
  44. data/lib/soap/ns.rb +39 -0
  45. data/lib/soap/parser.rb +253 -0
  46. data/lib/soap/processor.rb +67 -0
  47. data/lib/soap/property.rb +340 -0
  48. data/lib/soap/proxy.rb +15 -0
  49. data/lib/soap/rpc/cgistub.rb +248 -0
  50. data/lib/soap/rpc/driver.rb +222 -0
  51. data/lib/soap/rpc/element.rb +375 -0
  52. data/lib/soap/rpc/httpserver.rb +143 -0
  53. data/lib/soap/rpc/methodDef.rb +69 -0
  54. data/lib/soap/rpc/proxy.rb +573 -0
  55. data/lib/soap/rpc/router.rb +663 -0
  56. data/lib/soap/rpc/rpc.rb +26 -0
  57. data/lib/soap/rpc/soaplet.rb +201 -0
  58. data/lib/soap/rpc/standaloneServer.rb +44 -0
  59. data/lib/soap/soap.rb +154 -0
  60. data/lib/soap/streamHandler.rb +302 -0
  61. data/lib/soap/version.rb +9 -0
  62. data/lib/soap/wsdlDriver.rb +165 -0
  63. data/lib/wsdl/binding.rb +66 -0
  64. data/lib/wsdl/data.rb +65 -0
  65. data/lib/wsdl/definitions.rb +237 -0
  66. data/lib/wsdl/documentation.rb +33 -0
  67. data/lib/wsdl/import.rb +81 -0
  68. data/lib/wsdl/importer.rb +39 -0
  69. data/lib/wsdl/info.rb +51 -0
  70. data/lib/wsdl/message.rb +55 -0
  71. data/lib/wsdl/operation.rb +152 -0
  72. data/lib/wsdl/operationBinding.rb +241 -0
  73. data/lib/wsdl/param.rb +94 -0
  74. data/lib/wsdl/parser.rb +165 -0
  75. data/lib/wsdl/part.rb +53 -0
  76. data/lib/wsdl/port.rb +67 -0
  77. data/lib/wsdl/portType.rb +76 -0
  78. data/lib/wsdl/service.rb +62 -0
  79. data/lib/wsdl/soap/address.rb +41 -0
  80. data/lib/wsdl/soap/binding.rb +50 -0
  81. data/lib/wsdl/soap/body.rb +59 -0
  82. data/lib/wsdl/soap/cgiStubCreator.rb +93 -0
  83. data/lib/wsdl/soap/classDefCreator.rb +434 -0
  84. data/lib/wsdl/soap/classDefCreatorSupport.rb +241 -0
  85. data/lib/wsdl/soap/classNameCreator.rb +55 -0
  86. data/lib/wsdl/soap/clientSkeltonCreator.rb +107 -0
  87. data/lib/wsdl/soap/complexType.rb +174 -0
  88. data/lib/wsdl/soap/data.rb +43 -0
  89. data/lib/wsdl/soap/definitions.rb +201 -0
  90. data/lib/wsdl/soap/driverCreator.rb +121 -0
  91. data/lib/wsdl/soap/element.rb +34 -0
  92. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +74 -0
  93. data/lib/wsdl/soap/fault.rb +57 -0
  94. data/lib/wsdl/soap/header.rb +87 -0
  95. data/lib/wsdl/soap/headerfault.rb +57 -0
  96. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +116 -0
  97. data/lib/wsdl/soap/mappingRegistryCreator.rb +59 -0
  98. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +377 -0
  99. data/lib/wsdl/soap/methodDefCreator.rb +200 -0
  100. data/lib/wsdl/soap/operation.rb +113 -0
  101. data/lib/wsdl/soap/servantSkeltonCreator.rb +92 -0
  102. data/lib/wsdl/soap/servletStubCreator.rb +105 -0
  103. data/lib/wsdl/soap/standaloneServerStubCreator.rb +101 -0
  104. data/lib/wsdl/soap/wsdl2ruby.rb +226 -0
  105. data/lib/wsdl/types.rb +45 -0
  106. data/lib/wsdl/wsdl.rb +25 -0
  107. data/lib/wsdl/xmlSchema/all.rb +25 -0
  108. data/lib/wsdl/xmlSchema/annotation.rb +35 -0
  109. data/lib/wsdl/xmlSchema/any.rb +62 -0
  110. data/lib/wsdl/xmlSchema/anyAttribute.rb +49 -0
  111. data/lib/wsdl/xmlSchema/attribute.rb +105 -0
  112. data/lib/wsdl/xmlSchema/attributeGroup.rb +69 -0
  113. data/lib/wsdl/xmlSchema/choice.rb +59 -0
  114. data/lib/wsdl/xmlSchema/complexContent.rb +98 -0
  115. data/lib/wsdl/xmlSchema/complexExtension.rb +120 -0
  116. data/lib/wsdl/xmlSchema/complexRestriction.rb +105 -0
  117. data/lib/wsdl/xmlSchema/complexType.rb +194 -0
  118. data/lib/wsdl/xmlSchema/content.rb +96 -0
  119. data/lib/wsdl/xmlSchema/data.rb +117 -0
  120. data/lib/wsdl/xmlSchema/element.rb +154 -0
  121. data/lib/wsdl/xmlSchema/enumeration.rb +37 -0
  122. data/lib/wsdl/xmlSchema/fractiondigits.rb +38 -0
  123. data/lib/wsdl/xmlSchema/group.rb +101 -0
  124. data/lib/wsdl/xmlSchema/import.rb +54 -0
  125. data/lib/wsdl/xmlSchema/importHandler.rb +46 -0
  126. data/lib/wsdl/xmlSchema/importer.rb +103 -0
  127. data/lib/wsdl/xmlSchema/include.rb +49 -0
  128. data/lib/wsdl/xmlSchema/length.rb +38 -0
  129. data/lib/wsdl/xmlSchema/list.rb +49 -0
  130. data/lib/wsdl/xmlSchema/maxexclusive.rb +38 -0
  131. data/lib/wsdl/xmlSchema/maxinclusive.rb +38 -0
  132. data/lib/wsdl/xmlSchema/maxlength.rb +38 -0
  133. data/lib/wsdl/xmlSchema/minexclusive.rb +38 -0
  134. data/lib/wsdl/xmlSchema/mininclusive.rb +38 -0
  135. data/lib/wsdl/xmlSchema/minlength.rb +38 -0
  136. data/lib/wsdl/xmlSchema/parser.rb +168 -0
  137. data/lib/wsdl/xmlSchema/pattern.rb +37 -0
  138. data/lib/wsdl/xmlSchema/ref.rb +34 -0
  139. data/lib/wsdl/xmlSchema/schema.rb +179 -0
  140. data/lib/wsdl/xmlSchema/sequence.rb +55 -0
  141. data/lib/wsdl/xmlSchema/simpleContent.rb +70 -0
  142. data/lib/wsdl/xmlSchema/simpleExtension.rb +63 -0
  143. data/lib/wsdl/xmlSchema/simpleRestriction.rb +133 -0
  144. data/lib/wsdl/xmlSchema/simpleType.rb +88 -0
  145. data/lib/wsdl/xmlSchema/totaldigits.rb +38 -0
  146. data/lib/wsdl/xmlSchema/union.rb +36 -0
  147. data/lib/wsdl/xmlSchema/unique.rb +35 -0
  148. data/lib/wsdl/xmlSchema/whitespace.rb +38 -0
  149. data/lib/wsdl/xmlSchema/xsd2ruby.rb +176 -0
  150. data/lib/xsd/charset.rb +190 -0
  151. data/lib/xsd/codegen/classdef.rb +209 -0
  152. data/lib/xsd/codegen/commentdef.rb +35 -0
  153. data/lib/xsd/codegen/gensupport.rb +277 -0
  154. data/lib/xsd/codegen/methoddef.rb +71 -0
  155. data/lib/xsd/codegen/moduledef.rb +209 -0
  156. data/lib/xsd/codegen.rb +13 -0
  157. data/lib/xsd/datatypes.rb +1466 -0
  158. data/lib/xsd/datatypes1999.rb +21 -0
  159. data/lib/xsd/iconvcharset.rb +34 -0
  160. data/lib/xsd/mapping.rb +69 -0
  161. data/lib/xsd/namedelements.rb +133 -0
  162. data/lib/xsd/ns.rb +183 -0
  163. data/lib/xsd/qname.rb +80 -0
  164. data/lib/xsd/xmlparser/libxmlparser.rb +116 -0
  165. data/lib/xsd/xmlparser/parser.rb +101 -0
  166. data/lib/xsd/xmlparser/rexmlparser.rb +59 -0
  167. data/lib/xsd/xmlparser/xmlparser.rb +51 -0
  168. data/lib/xsd/xmlparser/xmlscanner.rb +150 -0
  169. data/lib/xsd/xmlparser.rb +77 -0
  170. data/rubyStyle.css +104 -0
  171. data/sample/attachment/complexmime/EdmService.rb +125 -0
  172. data/sample/attachment/complexmime/README.txt +3 -0
  173. data/sample/attachment/complexmime/client.rb +58 -0
  174. data/sample/attachment/complexmime/drift.cdf +1 -0
  175. data/sample/attachment/complexmime/plaatje.png +1 -0
  176. data/sample/attachment/complexmime/server.rb +69 -0
  177. data/sample/attachment/swa/client.rb +14 -0
  178. data/sample/attachment/swa/server.rb +24 -0
  179. data/sample/basic/apacheClient.rb +93 -0
  180. data/sample/basic/babelfish.rb +17 -0
  181. data/sample/basic/calc/calc.rb +18 -0
  182. data/sample/basic/calc/calc2.rb +30 -0
  183. data/sample/basic/calc/client.rb +27 -0
  184. data/sample/basic/calc/client2.rb +30 -0
  185. data/sample/basic/calc/httpd.rb +21 -0
  186. data/sample/basic/calc/samplehttpd.conf +2 -0
  187. data/sample/basic/calc/server.cgi +16 -0
  188. data/sample/basic/calc/server.fcgi +22 -0
  189. data/sample/basic/calc/server.rb +22 -0
  190. data/sample/basic/calc/server2.rb +25 -0
  191. data/sample/basic/exchange/client.rb +20 -0
  192. data/sample/basic/exchange/exchange.rb +18 -0
  193. data/sample/basic/exchange/httpd.rb +21 -0
  194. data/sample/basic/exchange/samplehttpd.conf +2 -0
  195. data/sample/basic/exchange/server.cgi +15 -0
  196. data/sample/basic/exchange/server.rb +21 -0
  197. data/sample/basic/flickr.rb +27 -0
  198. data/sample/basic/helloworld/client.rb +7 -0
  199. data/sample/basic/helloworld/server.rb +21 -0
  200. data/sample/basic/sampleStruct/client.rb +17 -0
  201. data/sample/basic/sampleStruct/httpd.rb +21 -0
  202. data/sample/basic/sampleStruct/iSampleStruct.rb +23 -0
  203. data/sample/basic/sampleStruct/sampleStruct.rb +14 -0
  204. data/sample/basic/sampleStruct/samplehttpd.conf +2 -0
  205. data/sample/basic/sampleStruct/server.cgi +15 -0
  206. data/sample/basic/sampleStruct/server.rb +21 -0
  207. data/sample/basic/whois.rb +15 -0
  208. data/sample/basic/wsdl_helloworld/README +15 -0
  209. data/sample/basic/wsdl_helloworld/client/default.rb +2 -0
  210. data/sample/basic/wsdl_helloworld/client/defaultDriver.rb +48 -0
  211. data/sample/basic/wsdl_helloworld/client/hws.wsdl +46 -0
  212. data/sample/basic/wsdl_helloworld/client/hwsClient.rb +23 -0
  213. data/sample/basic/wsdl_helloworld/server/hw_s.rb +26 -0
  214. data/sample/basic/wsdl_helloworld/server/hws.wsdl +46 -0
  215. data/sample/basic/yahooNewsSearch.rb +37 -0
  216. data/sample/howto/as_xml/client.rb +23 -0
  217. data/sample/howto/as_xml/server.rb +23 -0
  218. data/sample/howto/base64/client.rb +18 -0
  219. data/sample/howto/base64/server.rb +31 -0
  220. data/sample/howto/custom_ns/client.rb +38 -0
  221. data/sample/howto/custom_ns/server.rb +43 -0
  222. data/sample/howto/documentliteral/README.txt +19 -0
  223. data/sample/howto/documentliteral/client.rb +12 -0
  224. data/sample/howto/documentliteral/echo.wsdl +66 -0
  225. data/sample/howto/documentliteral/servant.rb +12 -0
  226. data/sample/howto/filter/client.rb +43 -0
  227. data/sample/howto/filter/server.rb +68 -0
  228. data/sample/howto/scopesample/client.rb +35 -0
  229. data/sample/howto/scopesample/httpd.rb +23 -0
  230. data/sample/howto/scopesample/samplehttpd.conf +2 -0
  231. data/sample/howto/scopesample/servant.rb +19 -0
  232. data/sample/howto/scopesample/server.cgi +30 -0
  233. data/sample/howto/scopesample/server.rb +21 -0
  234. data/sample/howto/styleuse/client.rb +22 -0
  235. data/sample/howto/styleuse/server.rb +87 -0
  236. data/sample/howto/wsdl_fault/README.txt +11 -0
  237. data/sample/howto/wsdl_fault/fault/AddClient.rb +25 -0
  238. data/sample/howto/wsdl_fault/fault/AddServer.rb +16 -0
  239. data/sample/howto/wsdl_fault/fault/AddServiceImpl.rb +19 -0
  240. data/sample/howto/wsdl_fault/fault/fault.wsdl +79 -0
  241. data/sample/howto/wsdl_fault/multifault/AddClient.rb +29 -0
  242. data/sample/howto/wsdl_fault/multifault/AddServer.rb +16 -0
  243. data/sample/howto/wsdl_fault/multifault/AddServiceImpl.rb +25 -0
  244. data/sample/howto/wsdl_fault/multifault/fault.wsdl +96 -0
  245. data/sample/howto/wsdl_hash/client.rb +12 -0
  246. data/sample/howto/wsdl_hash/hash.wsdl +69 -0
  247. data/sample/howto/wsdl_hash/server.rb +18 -0
  248. data/sample/marshal/customfactory.rb +98 -0
  249. data/sample/marshal/customregistry.rb +18 -0
  250. data/sample/marshal/digraph.rb +44 -0
  251. data/sample/marshal/enum/README.txt +6 -0
  252. data/sample/marshal/enum/enum.xsd +23 -0
  253. data/sample/marshal/enum/enumsample.rb +21 -0
  254. data/sample/marshal/enum/enumsample_mapper.rb +8 -0
  255. data/sample/marshal/enum/enumsample_mapping_registry.rb +24 -0
  256. data/sample/marshal/enum/marshal.rb +10 -0
  257. data/sample/payload/basicauth/client.rb +11 -0
  258. data/sample/payload/basicauth/htpasswd +2 -0
  259. data/sample/payload/basicauth/server.rb +44 -0
  260. data/sample/payload/cookies/calc.rb +53 -0
  261. data/sample/payload/cookies/client.rb +31 -0
  262. data/sample/payload/cookies/filterclient.rb +53 -0
  263. data/sample/payload/cookies/server.rb +25 -0
  264. data/sample/payload/gzipped/client.rb +9 -0
  265. data/sample/payload/gzipped/server.rb +22 -0
  266. data/sample/payload/ssl/files/README +1 -0
  267. data/sample/payload/ssl/files/ca.cert +23 -0
  268. data/sample/payload/ssl/files/client.cert +19 -0
  269. data/sample/payload/ssl/files/client.key +15 -0
  270. data/sample/payload/ssl/files/server.cert +19 -0
  271. data/sample/payload/ssl/files/server.key +15 -0
  272. data/sample/payload/ssl/files/sslclient.properties +5 -0
  273. data/sample/payload/ssl/files/sslclient_require_noserverauth.properties +2 -0
  274. data/sample/payload/ssl/files/sslclient_with_clientauth.properties +9 -0
  275. data/sample/payload/ssl/files/subca.cert +21 -0
  276. data/sample/payload/ssl/sslclient.rb +13 -0
  277. data/sample/payload/ssl/sslclient_require_noserverauth.rb +13 -0
  278. data/sample/payload/ssl/sslclient_with_clientauth.rb +13 -0
  279. data/sample/payload/ssl/sslserver.rb +50 -0
  280. data/sample/payload/ssl/sslserver_noauth.rb +46 -0
  281. data/sample/payload/ssl/sslserver_require_clientauth.rb +51 -0
  282. data/sample/showcase/soap/hippo5tq/hippo5tq.rb +42 -0
  283. data/sample/showcase/soap/hippo5tq/hippo5tq2.rb +100 -0
  284. data/sample/showcase/soap/hippo5tq/hippoClient.rb +107 -0
  285. data/sample/showcase/soap/icd/IICD.rb +18 -0
  286. data/sample/showcase/soap/icd/icd.rb +47 -0
  287. data/sample/showcase/soap/mssoap/README.txt +62 -0
  288. data/sample/showcase/soap/mssoap/client.vba +19 -0
  289. data/sample/showcase/soap/mssoap/stockQuoteService.cgi +45 -0
  290. data/sample/showcase/soap/mssoap/stockQuoteService.rb +10 -0
  291. data/sample/showcase/soap/mssoap/stockQuoteService.wsdl +47 -0
  292. data/sample/showcase/soap/mssoap/stockQuoteServiceClient.rb +27 -0
  293. data/sample/showcase/soap/mssoap/stockQuoteServiceClient.xls +0 -0
  294. data/sample/showcase/soap/mssoap/stockQuoteServicePortTypeDriver.rb +47 -0
  295. data/sample/showcase/soap/netDicV06/INetDicV06.rb +37 -0
  296. data/sample/showcase/soap/netDicV06/netDicV06.rb +17 -0
  297. data/sample/showcase/soap/raa/SOAP__Lite.pl +15 -0
  298. data/sample/showcase/soap/raa/pocketSOAP.js +33 -0
  299. data/sample/showcase/soap/raa2.4/raa.rb +333 -0
  300. data/sample/showcase/soap/raa2.4/raa.wsdl +644 -0
  301. data/sample/showcase/soap/raa2.4/raaDriver.rb +256 -0
  302. data/sample/showcase/soap/raa2.4/raaServiceClient.rb +355 -0
  303. data/sample/showcase/soap/raa2.4/sample.rb +116 -0
  304. data/sample/showcase/soap/rwiki/rwikiClient.rb +30 -0
  305. data/sample/showcase/soap/rwiki/rwikiServer.cgi +45 -0
  306. data/sample/showcase/soap/soapbox/ContactsDataSet.xml +37 -0
  307. data/sample/showcase/soap/soapbox/ExceptionDataSet.xml +23 -0
  308. data/sample/showcase/soap/soapbox/MessageDataSet.xml +8 -0
  309. data/sample/showcase/soap/soapbox/SoapBoxWebService.wsdl +1233 -0
  310. data/sample/showcase/soap/soapbox/SoapBoxWebServiceWithRawXML.wsdl +1226 -0
  311. data/sample/showcase/soap/soapbox/wsdlDriver.rb +24 -0
  312. data/sample/showcase/wsdl/PayPalSvc/client.rb +37 -0
  313. data/sample/showcase/wsdl/amazon/AmazonSearch.rb +3161 -0
  314. data/sample/showcase/wsdl/amazon/AmazonSearchDriver.rb +547 -0
  315. data/sample/showcase/wsdl/amazon/sampleClient.rb +38 -0
  316. data/sample/showcase/wsdl/amazon/wsdlDriver.rb +53 -0
  317. data/sample/showcase/wsdl/amazonEC/client.rb +14 -0
  318. data/sample/showcase/wsdl/eBaySvc/sampleclient.rb +61 -0
  319. data/sample/showcase/wsdl/googleAdwords/CampaignService.wsdl +785 -0
  320. data/sample/showcase/wsdl/googleAdwords/ca.pem +19 -0
  321. data/sample/showcase/wsdl/googleAdwords/client.rb +41 -0
  322. data/sample/showcase/wsdl/googleAdwords/soap/property +1 -0
  323. data/sample/showcase/wsdl/googleSearch/GoogleSearch.rb +98 -0
  324. data/sample/showcase/wsdl/googleSearch/GoogleSearchDriver.rb +103 -0
  325. data/sample/showcase/wsdl/googleSearch/README +6 -0
  326. data/sample/showcase/wsdl/googleSearch/httpd.rb +21 -0
  327. data/sample/showcase/wsdl/googleSearch/sampleClient.rb +57 -0
  328. data/sample/showcase/wsdl/googleSearch/samplehttpd.conf +2 -0
  329. data/sample/showcase/wsdl/googleSearch/sjissearch.sh +3 -0
  330. data/sample/showcase/wsdl/googleSearch/wsdlDriver.rb +30 -0
  331. data/sample/showcase/wsdl/noaa/README.txt +5 -0
  332. data/sample/showcase/wsdl/noaa/client.rb +45 -0
  333. data/sample/showcase/wsdl/noaa/default.rb +47 -0
  334. data/sample/showcase/wsdl/noaa/defaultDriver.rb +67 -0
  335. data/sample/showcase/wsdl/noaa/defaultMappingRegistry.rb +75 -0
  336. data/sample/showcase/wsdl/noaa/ndfdXMLClient.rb +44 -0
  337. data/sample/showcase/wsdl/raa2.4/raa.rb +135 -0
  338. data/sample/showcase/wsdl/raa2.4/raa.wsdl +644 -0
  339. data/sample/showcase/wsdl/raa2.4/wsdlDriver.rb +118 -0
  340. data/sample/showcase/wsdl/rnn/client.rb +60 -0
  341. data/sample/showcase/wsdl/rnn/post.rb +28 -0
  342. data/sample/showcase/wsdl/rnn/rnn-hash.wsdl +282 -0
  343. data/sample/showcase/wsdl/rnn/rnn.wsdl +310 -0
  344. data/sample/showcase/wsdl/rnn/submit.rb +64 -0
  345. data/sample/showcase/wsdl/salesforce/SforceServiceClient.rb +281 -0
  346. data/sample/showcase/wsdl/salesforce/ca.pem +35 -0
  347. data/sample/showcase/wsdl/salesforce/client.rb +157 -0
  348. data/sample/showcase/wsdl/salesforce/default.rb +1741 -0
  349. data/sample/showcase/wsdl/salesforce/defaultDriver.rb +166 -0
  350. data/sample/showcase/wsdl/salesforce/soap/property +1 -0
  351. data/sample/soapheader/authheader/authmgr.rb +42 -0
  352. data/sample/soapheader/authheader/client.rb +41 -0
  353. data/sample/soapheader/authheader/client2.rb +43 -0
  354. data/sample/soapheader/authheader/server.rb +74 -0
  355. data/sample/soapheader/authheader/server2.rb +84 -0
  356. data/sample/soapheader/soapext_basicauth/client.rb +26 -0
  357. data/sample/soapheader/soapext_basicauth/mms_MizGIS.rb +702 -0
  358. data/sample/soapheader/soapext_basicauth/mms_MizGIS.wsdl +1007 -0
  359. data/sample/soapheader/soapext_basicauth/mms_MizGISClient.rb +232 -0
  360. data/sample/soapheader/soapext_basicauth/mms_MizGISDriver.rb +211 -0
  361. data/sample/soapheader/soapext_basicauth/mms_MizGISMappingRegistry.rb +1233 -0
  362. data/soap5r.gemspec +30 -0
  363. data/test/16runner.rb +69 -0
  364. data/test/helper.rb +7 -0
  365. data/test/interopR2/README.txt +2 -0
  366. data/test/interopR2/SOAPBuildersInterop_R2.wsdl +461 -0
  367. data/test/interopR2/SOAPBuildersInterop_R2GrB.wsdl +19 -0
  368. data/test/interopR2/base.rb +289 -0
  369. data/test/interopR2/client.NetRemoting.rb +18 -0
  370. data/test/interopR2/client.rb +1235 -0
  371. data/test/interopR2/client4S4C.rb +16 -0
  372. data/test/interopR2/client4S4C2.rb +15 -0
  373. data/test/interopR2/clientASP.NET.rb +18 -0
  374. data/test/interopR2/clientApacheAxis.rb +17 -0
  375. data/test/interopR2/clientApacheSOAP.rb +18 -0
  376. data/test/interopR2/clientBEAWebLogic.rb +18 -0
  377. data/test/interopR2/clientBase.rb +1968 -0
  378. data/test/interopR2/clientCapeConnect.rb +19 -0
  379. data/test/interopR2/clientDelphi.rb +20 -0
  380. data/test/interopR2/clientEasySoap.rb +15 -0
  381. data/test/interopR2/clientFrontier.rb +26 -0
  382. data/test/interopR2/clientGLUE.rb +33 -0
  383. data/test/interopR2/clientHP.rb +14 -0
  384. data/test/interopR2/clientJAX-RPC.rb +20 -0
  385. data/test/interopR2/clientJSOAP.rb +15 -0
  386. data/test/interopR2/clientKafkaXSLT.rb +16 -0
  387. data/test/interopR2/clientMSSOAPToolkit2.0.rb +18 -0
  388. data/test/interopR2/clientMSSOAPToolkit3.0.rb +18 -0
  389. data/test/interopR2/clientNuSOAP.rb +20 -0
  390. data/test/interopR2/clientNuWave.rb +16 -0
  391. data/test/interopR2/clientOpenLink.rb +16 -0
  392. data/test/interopR2/clientOracle.rb +16 -0
  393. data/test/interopR2/clientPEAR.rb +19 -0
  394. data/test/interopR2/clientPhalanx.rb +19 -0
  395. data/test/interopR2/clientSIMACE.rb +19 -0
  396. data/test/interopR2/clientSOAP4R.rb +19 -0
  397. data/test/interopR2/clientSOAP__Lite.rb +15 -0
  398. data/test/interopR2/clientSQLData.rb +19 -0
  399. data/test/interopR2/clientSilverStream.rb +18 -0
  400. data/test/interopR2/clientSpray2001.rb +18 -0
  401. data/test/interopR2/clientSun.rb +20 -0
  402. data/test/interopR2/clientVWOpentalkSoap.rb +20 -0
  403. data/test/interopR2/clientWASP.rb +20 -0
  404. data/test/interopR2/clientWASPC.rb +19 -0
  405. data/test/interopR2/clientWebMethods.rb +16 -0
  406. data/test/interopR2/clientWhiteMesa.rb +29 -0
  407. data/test/interopR2/clientWingfoot.rb +16 -0
  408. data/test/interopR2/clientXMLBus.rb +20 -0
  409. data/test/interopR2/clientXMLRPC-EPI.rb +18 -0
  410. data/test/interopR2/clientXSOAP.rb +15 -0
  411. data/test/interopR2/clientZSI.rb +20 -0
  412. data/test/interopR2/clienteSOAP.rb +19 -0
  413. data/test/interopR2/clientgSOAP.rb +19 -0
  414. data/test/interopR2/clientkSOAP.rb +18 -0
  415. data/test/interopR2/iSimonReg.rb +113 -0
  416. data/test/interopR2/interopResultBase.rb +115 -0
  417. data/test/interopR2/interopService.rb +248 -0
  418. data/test/interopR2/rwikiInteropService.rb +106 -0
  419. data/test/interopR2/server.cgi +271 -0
  420. data/test/interopR2/server.rb +276 -0
  421. data/test/interopR2/simonReg.rb +124 -0
  422. data/test/interopR2/test.sh +49 -0
  423. data/test/interopR4/client.rb +113 -0
  424. data/test/runner.rb +8 -0
  425. data/test/sm11/classDef.rb +157 -0
  426. data/test/sm11/client.rb +543 -0
  427. data/test/sm11/driver.rb +184 -0
  428. data/test/sm11/servant.rb +1068 -0
  429. data/test/sm11/server.rb +26 -0
  430. data/test/soap/asp.net/hello.wsdl +96 -0
  431. data/test/soap/asp.net/test_aspdotnet.rb +124 -0
  432. data/test/soap/auth/htdigest +2 -0
  433. data/test/soap/auth/htpasswd +2 -0
  434. data/test/soap/auth/test_basic.rb +118 -0
  435. data/test/soap/auth/test_digest.rb +119 -0
  436. data/test/soap/calc/calc.rb +18 -0
  437. data/test/soap/calc/calc2.rb +30 -0
  438. data/test/soap/calc/server.cgi +16 -0
  439. data/test/soap/calc/server.rb +18 -0
  440. data/test/soap/calc/server2.rb +21 -0
  441. data/test/soap/calc/test_calc.rb +53 -0
  442. data/test/soap/calc/test_calc2.rb +57 -0
  443. data/test/soap/calc/test_calc_cgi.rb +72 -0
  444. data/test/soap/case/test_mapping.rb +58 -0
  445. data/test/soap/fault/test_customfault.rb +61 -0
  446. data/test/soap/fault/test_fault.rb +47 -0
  447. data/test/soap/fault/test_soaparray.rb +36 -0
  448. data/test/soap/filter/test_filter.rb +147 -0
  449. data/test/soap/header/server.cgi +121 -0
  450. data/test/soap/header/test_authheader.rb +241 -0
  451. data/test/soap/header/test_authheader_cgi.rb +122 -0
  452. data/test/soap/header/test_simplehandler.rb +117 -0
  453. data/test/soap/helloworld/hw_s.rb +17 -0
  454. data/test/soap/helloworld/test_helloworld.rb +45 -0
  455. data/test/soap/htpasswd +2 -0
  456. data/test/soap/literalArrayMapping/amazonEc.rb +4779 -0
  457. data/test/soap/literalArrayMapping/amazonEcDriver.rb +173 -0
  458. data/test/soap/literalArrayMapping/amazonresponse.xml +100 -0
  459. data/test/soap/literalArrayMapping/test_definedarray.rb +35 -0
  460. data/test/soap/marshal/marshaltestlib.rb +498 -0
  461. data/test/soap/marshal/test_digraph.rb +57 -0
  462. data/test/soap/marshal/test_marshal.rb +28 -0
  463. data/test/soap/marshal/test_struct.rb +48 -0
  464. data/test/soap/ssl/README +1 -0
  465. data/test/soap/ssl/ca.cert +23 -0
  466. data/test/soap/ssl/client.cert +19 -0
  467. data/test/soap/ssl/client.key +15 -0
  468. data/test/soap/ssl/server.cert +19 -0
  469. data/test/soap/ssl/server.key +15 -0
  470. data/test/soap/ssl/sslsvr.rb +59 -0
  471. data/test/soap/ssl/subca.cert +21 -0
  472. data/test/soap/ssl/test_ssl.rb +236 -0
  473. data/test/soap/struct/test_struct.rb +71 -0
  474. data/test/soap/styleuse/client.rb +21 -0
  475. data/test/soap/styleuse/server.rb +87 -0
  476. data/test/soap/swa/test_file.rb +76 -0
  477. data/test/soap/test_basetype.rb +1091 -0
  478. data/test/soap/test_cookie.rb +113 -0
  479. data/test/soap/test_custom_ns.rb +106 -0
  480. data/test/soap/test_custommap.rb +111 -0
  481. data/test/soap/test_empty.rb +106 -0
  482. data/test/soap/test_envelopenamespace.rb +86 -0
  483. data/test/soap/test_extraattr.rb +55 -0
  484. data/test/soap/test_generator.rb +32 -0
  485. data/test/soap/test_httpconfigloader.rb +72 -0
  486. data/test/soap/test_mapping.rb +132 -0
  487. data/test/soap/test_nestedexception.rb +71 -0
  488. data/test/soap/test_nil.rb +71 -0
  489. data/test/soap/test_no_indent.rb +89 -0
  490. data/test/soap/test_property.rb +429 -0
  491. data/test/soap/test_response_as_xml.rb +118 -0
  492. data/test/soap/test_soapelement.rb +139 -0
  493. data/test/soap/test_streamhandler.rb +271 -0
  494. data/test/soap/test_styleuse.rb +327 -0
  495. data/test/soap/wsdlDriver/README.txt +2 -0
  496. data/test/soap/wsdlDriver/calc.wsdl +126 -0
  497. data/test/soap/wsdlDriver/document.wsdl +54 -0
  498. data/test/soap/wsdlDriver/echo_version.rb +30 -0
  499. data/test/soap/wsdlDriver/simpletype.wsdl +63 -0
  500. data/test/soap/wsdlDriver/test_calc.rb +72 -0
  501. data/test/soap/wsdlDriver/test_document.rb +72 -0
  502. data/test/soap/wsdlDriver/test_simpletype.rb +82 -0
  503. data/test/testutil.rb +55 -0
  504. data/test/wsdl/abstract/abstract.wsdl +176 -0
  505. data/test/wsdl/abstract/test_abstract.rb +160 -0
  506. data/test/wsdl/anonymous/expectedClassDef.rb +129 -0
  507. data/test/wsdl/anonymous/expectedDriver.rb +60 -0
  508. data/test/wsdl/anonymous/expectedMappingRegistry.rb +177 -0
  509. data/test/wsdl/anonymous/lp.wsdl +147 -0
  510. data/test/wsdl/anonymous/test_anonymous.rb +131 -0
  511. data/test/wsdl/any/any.wsdl +114 -0
  512. data/test/wsdl/any/expectedDriver.rb +69 -0
  513. data/test/wsdl/any/expectedEcho.rb +58 -0
  514. data/test/wsdl/any/expectedMappingRegistry.rb +64 -0
  515. data/test/wsdl/any/expectedService.rb +70 -0
  516. data/test/wsdl/any/test_any.rb +194 -0
  517. data/test/wsdl/axisArray/axisArray.wsdl +87 -0
  518. data/test/wsdl/axisArray/test_axisarray.rb +125 -0
  519. data/test/wsdl/choice/choice.wsdl +167 -0
  520. data/test/wsdl/choice/test_choice.rb +311 -0
  521. data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
  522. data/test/wsdl/complexcontent/test_echo.rb +91 -0
  523. data/test/wsdl/datetime/DatetimeService.rb +45 -0
  524. data/test/wsdl/datetime/datetime.rb +0 -0
  525. data/test/wsdl/datetime/datetime.wsdl +45 -0
  526. data/test/wsdl/datetime/datetimeServant.rb +23 -0
  527. data/test/wsdl/datetime/test_datetime.rb +88 -0
  528. data/test/wsdl/document/array/double.wsdl +161 -0
  529. data/test/wsdl/document/array/test_array.rb +202 -0
  530. data/test/wsdl/document/document.wsdl +76 -0
  531. data/test/wsdl/document/number.wsdl +54 -0
  532. data/test/wsdl/document/ping_nosoapaction.wsdl +66 -0
  533. data/test/wsdl/document/test_nosoapaction.rb +103 -0
  534. data/test/wsdl/document/test_number.rb +93 -0
  535. data/test/wsdl/document/test_rpc.rb +356 -0
  536. data/test/wsdl/emptycomplextype.wsdl +31 -0
  537. data/test/wsdl/fault/fault.wsdl +79 -0
  538. data/test/wsdl/fault/multifault.wsdl +96 -0
  539. data/test/wsdl/fault/test_fault.rb +120 -0
  540. data/test/wsdl/fault/test_multifault.rb +135 -0
  541. data/test/wsdl/group/expectedClassdef.rb +59 -0
  542. data/test/wsdl/group/expectedDriver.rb +52 -0
  543. data/test/wsdl/group/expectedMappingRegistry.rb +68 -0
  544. data/test/wsdl/group/group.wsdl +88 -0
  545. data/test/wsdl/group/test_rpc.rb +146 -0
  546. data/test/wsdl/list/list.wsdl +93 -0
  547. data/test/wsdl/list/test_list.rb +125 -0
  548. data/test/wsdl/map/map.wsdl +92 -0
  549. data/test/wsdl/map/map.xml +43 -0
  550. data/test/wsdl/map/test_map.rb +100 -0
  551. data/test/wsdl/marshal/person.wsdl +21 -0
  552. data/test/wsdl/marshal/person_org.rb +24 -0
  553. data/test/wsdl/marshal/test_wsdlmarshal.rb +76 -0
  554. data/test/wsdl/multiplefault.wsdl +75 -0
  555. data/test/wsdl/oneway/oneway.wsdl +36 -0
  556. data/test/wsdl/oneway/test_oneway.rb +109 -0
  557. data/test/wsdl/overload/expectedClient.rb +38 -0
  558. data/test/wsdl/overload/expectedDriver.rb +62 -0
  559. data/test/wsdl/overload/expectedServant.rb +36 -0
  560. data/test/wsdl/overload/overload.wsdl +70 -0
  561. data/test/wsdl/overload/test_overload.rb +132 -0
  562. data/test/wsdl/qualified/lp.wsdl +47 -0
  563. data/test/wsdl/qualified/lp.xsd +26 -0
  564. data/test/wsdl/qualified/np.wsdl +51 -0
  565. data/test/wsdl/qualified/test_qualified.rb +138 -0
  566. data/test/wsdl/qualified/test_unqualified.rb +139 -0
  567. data/test/wsdl/raa/RAAService.rb +126 -0
  568. data/test/wsdl/raa/README.txt +8 -0
  569. data/test/wsdl/raa/expectedClassDef.rb +101 -0
  570. data/test/wsdl/raa/expectedDriver.rb +97 -0
  571. data/test/wsdl/raa/expectedMappingRegistry.rb +122 -0
  572. data/test/wsdl/raa/raa.wsdl +264 -0
  573. data/test/wsdl/raa/test_raa.rb +127 -0
  574. data/test/wsdl/ref/expectedDriver.rb +52 -0
  575. data/test/wsdl/ref/expectedProduct.rb +244 -0
  576. data/test/wsdl/ref/product.wsdl +147 -0
  577. data/test/wsdl/ref/test_ref.rb +269 -0
  578. data/test/wsdl/rpc/rpc.wsdl +109 -0
  579. data/test/wsdl/rpc/test-rpc-lit.wsdl +371 -0
  580. data/test/wsdl/rpc/test_rpc.rb +177 -0
  581. data/test/wsdl/rpc/test_rpc_lit.rb +471 -0
  582. data/test/wsdl/simplecontent/simplecontent.wsdl +84 -0
  583. data/test/wsdl/simplecontent/test_simplecontent.rb +103 -0
  584. data/test/wsdl/simpletype/rpc/expectedClient.rb +35 -0
  585. data/test/wsdl/simpletype/rpc/expectedDriver.rb +59 -0
  586. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +37 -0
  587. data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +58 -0
  588. data/test/wsdl/simpletype/rpc/expectedServant.rb +33 -0
  589. data/test/wsdl/simpletype/rpc/expectedService.rb +56 -0
  590. data/test/wsdl/simpletype/rpc/rpc.wsdl +98 -0
  591. data/test/wsdl/simpletype/rpc/test_rpc.rb +53 -0
  592. data/test/wsdl/simpletype/simpletype.wsdl +114 -0
  593. data/test/wsdl/simpletype/test_simpletype.rb +93 -0
  594. data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
  595. data/test/wsdl/soap/test_soapbodyparts.rb +80 -0
  596. data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +22 -0
  597. data/test/wsdl/soap/wsdl2ruby/expectedClient.rb +35 -0
  598. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +59 -0
  599. data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +37 -0
  600. data/test/wsdl/soap/wsdl2ruby/expectedServant.rb +33 -0
  601. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +49 -0
  602. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +56 -0
  603. data/test/wsdl/soap/wsdl2ruby/rpc.wsdl +80 -0
  604. data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +38 -0
  605. data/test/wsdl/soap/wsdl2ruby/section/section.xsd +31 -0
  606. data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +54 -0
  607. data/test/wsdl/soap/wsdl2ruby/soapenc/soapenc.wsdl +64 -0
  608. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +84 -0
  609. data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +103 -0
  610. data/test/wsdl/soaptype/soaptype.wsdl +61 -0
  611. data/test/wsdl/soaptype/test_soaptype.rb +179 -0
  612. data/test/wsdl/test_emptycomplextype.rb +22 -0
  613. data/test/wsdl/test_fault.rb +51 -0
  614. data/test/wsdl/test_multiplefault.rb +42 -0
  615. data/test/xsd/codegen/test_classdef.rb +245 -0
  616. data/test/xsd/noencoding.xml +4 -0
  617. data/test/xsd/test_noencoding.rb +33 -0
  618. data/test/xsd/test_ns.rb +42 -0
  619. data/test/xsd/test_xmlschemaparser.rb +23 -0
  620. data/test/xsd/test_xsd.rb +1639 -0
  621. data/test/xsd/xmllang.xml +43 -0
  622. data/test/xsd/xmlschema.xml +12 -0
  623. data/test/xsd/xsd2ruby/expected_mysample.rb +66 -0
  624. data/test/xsd/xsd2ruby/expected_mysample_mapper.rb +12 -0
  625. data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +52 -0
  626. data/test/xsd/xsd2ruby/section.xsd +49 -0
  627. data/test/xsd/xsd2ruby/test_xsd2ruby.rb +91 -0
  628. metadata +1033 -0
@@ -0,0 +1,434 @@
1
+ # encoding: ASCII-8BIT
2
+ # WSDL4R - Creating class definition 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/data'
11
+ require 'wsdl/soap/classDefCreatorSupport'
12
+ require 'xsd/codegen'
13
+ require 'set'
14
+
15
+
16
+ module WSDL
17
+ module SOAP
18
+
19
+
20
+ class ClassDefCreator
21
+ include ClassDefCreatorSupport
22
+ include XSD::CodeGen
23
+
24
+ def initialize(definitions, name_creator, modulepath = nil)
25
+ @definitions = definitions
26
+ @name_creator = name_creator
27
+ @modulepath = modulepath
28
+ @elements = definitions.collect_elements
29
+ @elements.uniq!
30
+ @attributes = definitions.collect_attributes
31
+ @attributes.uniq!
32
+ @simpletypes = definitions.collect_simpletypes
33
+ @simpletypes.uniq!
34
+ @complextypes = definitions.collect_complextypes
35
+ @complextypes.uniq!
36
+ @modelgroups = definitions.collect_modelgroups
37
+ @modelgroups.uniq!
38
+ @faulttypes = nil
39
+ if definitions.respond_to?(:collect_faulttypes)
40
+ @faulttypes = definitions.collect_faulttypes
41
+ end
42
+ @defined_const = {}
43
+ end
44
+
45
+ def dump(type = nil)
46
+ result = "require 'xsd/qname'\n"
47
+ # cannot use @modulepath because of multiple classes
48
+ if @modulepath
49
+ result << "\n"
50
+ result << modulepath_split(@modulepath).collect { |ele| "module #{ele}" }.join("; ")
51
+ result << "\n\n"
52
+ end
53
+ str = dump_group(type)
54
+ unless str.empty?
55
+ result << "\n" unless result.empty?
56
+ result << str
57
+ end
58
+ str = dump_complextype(type)
59
+ unless str.empty?
60
+ result << "\n" unless result.empty?
61
+ result << str
62
+ end
63
+ str = dump_simpletype(type)
64
+ unless str.empty?
65
+ result << "\n" unless result.empty?
66
+ result << str
67
+ end
68
+ str = dump_element(type)
69
+ unless str.empty?
70
+ result << "\n" unless result.empty?
71
+ result << str
72
+ end
73
+ str = dump_attribute(type)
74
+ unless str.empty?
75
+ result << "\n" unless result.empty?
76
+ result << str
77
+ end
78
+ if @modulepath
79
+ result << "\n\n"
80
+ result << modulepath_split(@modulepath).collect { |ele| "end" }.join("; ")
81
+ result << "\n"
82
+ end
83
+ result
84
+ end
85
+
86
+ private
87
+
88
+ def dump_element(target = nil)
89
+ @elements.collect { |ele|
90
+ next if @complextypes[ele.name]
91
+ next if target and target != ele.name
92
+ c = create_elementdef(@modulepath, ele)
93
+ c ? c.dump : nil
94
+ }.compact.join("\n")
95
+ end
96
+
97
+ def dump_attribute(target = nil)
98
+ @attributes.collect { |attribute|
99
+ next if target and target != attribute.name
100
+ if attribute.local_simpletype
101
+ c = create_simpletypedef(@modulepath, attribute.name, attribute.local_simpletype)
102
+ end
103
+ c ? c.dump : nil
104
+ }.compact.join("\n")
105
+ end
106
+
107
+ def dump_simpletype(target = nil)
108
+ @simpletypes.collect { |type|
109
+ next if target and target != type.name
110
+ c = create_simpletypedef(@modulepath, type.name, type)
111
+ c ? c.dump : nil
112
+ }.compact.join("\n")
113
+ end
114
+
115
+ def dump_complextype(target = nil)
116
+ definitions = sort_dependency(@complextypes).collect { |type|
117
+ next if target and target != type.name
118
+ c = create_complextypedef(@modulepath, type.name, type)
119
+ c ? c.dump : nil
120
+ }.compact.join("\n")
121
+ end
122
+
123
+ def dump_group(target = nil)
124
+ definitions = @modelgroups.collect { |group|
125
+ # TODO: not dumped for now but may be useful in the future
126
+ }.compact.join("\n")
127
+ end
128
+
129
+ def create_elementdef(mpath, ele)
130
+ qualified = (ele.elementform == 'qualified')
131
+ if ele.local_complextype
132
+ create_complextypedef(mpath, ele.name, ele.local_complextype, qualified)
133
+ elsif ele.local_simpletype
134
+ create_simpletypedef(mpath, ele.name, ele.local_simpletype, qualified)
135
+ elsif ele.empty?
136
+ create_simpleclassdef(mpath, ele.name, nil)
137
+ else
138
+ # ignores type only element
139
+ nil
140
+ end
141
+ end
142
+
143
+ def create_simpletypedef(mpath, qname, simpletype, qualified = false)
144
+ if simpletype.restriction
145
+ create_simpletypedef_restriction(mpath, qname, simpletype, qualified)
146
+ elsif simpletype.list
147
+ create_simpletypedef_list(mpath, qname, simpletype, qualified)
148
+ elsif simpletype.union
149
+ create_simpletypedef_union(mpath, qname, simpletype, qualified)
150
+ else
151
+ raise RuntimeError.new("unknown kind of simpletype: #{simpletype}")
152
+ end
153
+ end
154
+
155
+ def create_simpletypedef_restriction(mpath, qname, typedef, qualified)
156
+ restriction = typedef.restriction
157
+ unless restriction.enumeration?
158
+ # not supported. minlength?
159
+ return nil
160
+ end
161
+ classname = mapped_class_basename(qname, mpath)
162
+ c = ClassDef.new(classname, '::String')
163
+ c.comment = "#{qname}"
164
+ define_classenum_restriction(c, classname, restriction.enumeration)
165
+ c
166
+ end
167
+
168
+ def create_simpletypedef_list(mpath, qname, typedef, qualified)
169
+ list = typedef.list
170
+ classname = mapped_class_basename(qname, mpath)
171
+ c = ClassDef.new(classname, '::Array')
172
+ c.comment = "#{qname}"
173
+ if simpletype = list.local_simpletype
174
+ if simpletype.restriction.nil?
175
+ raise RuntimeError.new(
176
+ "unknown kind of simpletype: #{simpletype}")
177
+ end
178
+ define_stringenum_restriction(c, simpletype.restriction.enumeration)
179
+ c.comment << "\n contains list of #{classname}::*"
180
+ elsif list.itemtype
181
+ c.comment << "\n contains list of #{mapped_class_basename(list.itemtype, mpath)}::*"
182
+ else
183
+ raise RuntimeError.new("unknown kind of list: #{list}")
184
+ end
185
+ c
186
+ end
187
+
188
+ def create_simpletypedef_union(mpath, qname, typedef, qualified)
189
+ union = typedef.union
190
+ classname = mapped_class_basename(qname, mpath)
191
+ c = ClassDef.new(classname, '::String')
192
+ c.comment = "#{qname}"
193
+ if union.member_types
194
+ # fixme
195
+ c.comment << "\n any of #{union.member_types}"
196
+ end
197
+ c
198
+ end
199
+
200
+ def define_stringenum_restriction(c, enumeration)
201
+ const = {}
202
+ enumeration.each do |value|
203
+ constname = safeconstname(value)
204
+ const[constname] ||= 0
205
+ if (const[constname] += 1) > 1
206
+ constname += "_#{const[constname]}"
207
+ end
208
+ c.def_const(constname, ndq(value))
209
+ end
210
+ end
211
+
212
+ def define_classenum_restriction(c, classname, enumeration)
213
+ const = {}
214
+ enumeration.each do |value|
215
+ constname = safeconstname(value)
216
+ const[constname] ||= 0
217
+ if (const[constname] += 1) > 1
218
+ constname += "_#{const[constname]}"
219
+ end
220
+ c.def_const(constname, "new(#{ndq(value)})")
221
+ end
222
+ end
223
+
224
+ def create_simpleclassdef(mpath, qname, type_or_element)
225
+ classname = mapped_class_basename(qname, mpath)
226
+ c = ClassDef.new(classname, '::String')
227
+ c.comment = "#{qname}"
228
+ init_lines = []
229
+ if type_or_element and !type_or_element.attributes.empty?
230
+ define_attribute(c, type_or_element.attributes)
231
+ init_lines << "@__xmlattr = {}"
232
+ end
233
+ c.def_method('initialize', '*arg') do
234
+ "super\n" + init_lines.join("\n")
235
+ end
236
+ c
237
+ end
238
+
239
+ def create_complextypedef(mpath, qname, type, qualified = false)
240
+ case type.compoundtype
241
+ when :TYPE_STRUCT, :TYPE_EMPTY
242
+ create_structdef(mpath, qname, type, qualified)
243
+ when :TYPE_ARRAY
244
+ create_arraydef(mpath, qname, type)
245
+ when :TYPE_SIMPLE
246
+ create_simpleclassdef(mpath, qname, type)
247
+ when :TYPE_MAP
248
+ # mapped as a general Hash
249
+ nil
250
+ else
251
+ raise RuntimeError.new(
252
+ "unknown kind of complexContent: #{type.compoundtype}")
253
+ end
254
+ end
255
+
256
+ def create_structdef(mpath, qname, typedef, qualified = false)
257
+ classname = mapped_class_basename(qname, mpath)
258
+ baseclassname = nil
259
+ if typedef.complexcontent
260
+ if base = typedef.complexcontent.base
261
+ # :TYPE_ARRAY must not be derived (#424)
262
+ basedef = @complextypes[base]
263
+ if basedef and basedef.compoundtype != :TYPE_ARRAY
264
+ # baseclass should be a toplevel complexType
265
+ baseclassname = mapped_class_basename(base, @modulepath)
266
+ end
267
+ end
268
+ end
269
+ if @faulttypes and @faulttypes.index(qname)
270
+ c = ClassDef.new(classname, '::StandardError')
271
+ else
272
+ c = ClassDef.new(classname, baseclassname)
273
+ end
274
+ c.comment = "#{qname}"
275
+ c.comment << "\nabstract" if typedef.abstract
276
+ parentmodule = mapped_class_name(qname, mpath)
277
+ init_lines, init_params =
278
+ parse_elements(c, typedef.elements, qname.namespace, parentmodule)
279
+ unless typedef.attributes.empty?
280
+ define_attribute(c, typedef.attributes)
281
+ init_lines << "@__xmlattr = {}"
282
+ end
283
+ c.def_method('initialize', *init_params) do
284
+ init_lines.join("\n")
285
+ end
286
+ c
287
+ end
288
+
289
+ def parse_elements(c, elements, base_namespace, mpath, as_array = false)
290
+ init_lines = []
291
+ init_params = []
292
+ any = false
293
+ elements.each do |element|
294
+ case element
295
+ when XMLSchema::Any
296
+ # only 1 <any/> is allowed for now.
297
+ raise RuntimeError.new("duplicated 'any'") if any
298
+ any = true
299
+ attrname = '__xmlele_any'
300
+ c.def_attr(attrname, false, attrname)
301
+ c.def_method('set_any', 'elements') do
302
+ '@__xmlele_any = elements'
303
+ end
304
+ init_lines << "@__xmlele_any = nil"
305
+ when XMLSchema::Element
306
+ next if element.ref == SchemaName
307
+ name = name_element(element).name
308
+ typebase = @modulepath
309
+ if element.anonymous_type?
310
+ inner = create_elementdef(mpath, element)
311
+ unless as_array
312
+ inner.comment = "inner class for member: #{name}\n" + inner.comment
313
+ end
314
+ c.innermodule << inner
315
+ typebase = mpath
316
+ end
317
+ unless as_array
318
+ attrname = safemethodname(name)
319
+ varname = safevarname(name)
320
+ c.def_attr(attrname, true, varname)
321
+ init_lines << "@#{varname} = #{varname}"
322
+ if element.map_as_array?
323
+ init_params << "#{varname} = []"
324
+ else
325
+ init_params << "#{varname} = nil"
326
+ end
327
+ c.comment << "\n #{attrname} - #{create_type_name(typebase, element) || '(any)'}"
328
+ end
329
+ when WSDL::XMLSchema::Sequence
330
+ child_init_lines, child_init_params =
331
+ parse_elements(c, element.elements, base_namespace, mpath, as_array)
332
+ init_lines.concat(child_init_lines)
333
+ init_params.concat(child_init_params)
334
+ when WSDL::XMLSchema::Choice
335
+ child_init_lines, child_init_params =
336
+ parse_elements(c, element.elements, base_namespace, mpath, as_array)
337
+ init_lines.concat(child_init_lines)
338
+ init_params.concat(child_init_params)
339
+ when WSDL::XMLSchema::Group
340
+ if element.content.nil?
341
+ warn("no group definition found: #{element}")
342
+ next
343
+ end
344
+ child_init_lines, child_init_params =
345
+ parse_elements(c, element.content.elements, base_namespace, mpath, as_array)
346
+ init_lines.concat(child_init_lines)
347
+ init_params.concat(child_init_params)
348
+ else
349
+ raise RuntimeError.new("unknown type: #{element}")
350
+ end
351
+ end
352
+ [init_lines, init_params]
353
+ end
354
+
355
+ def define_attribute(c, attributes)
356
+ const = {}
357
+ unless attributes.empty?
358
+ c.def_method("__xmlattr") do <<-__EOD__
359
+ @__xmlattr ||= {}
360
+ __EOD__
361
+ end
362
+ end
363
+ attributes.each do |attribute|
364
+ name = name_attribute(attribute)
365
+ methodname = safemethodname('xmlattr_' + name.name)
366
+ constname = 'Attr' + safeconstname(name.name)
367
+ const[constname] ||= 0
368
+ if (const[constname] += 1) > 1
369
+ constname += "_#{const[constname]}"
370
+ end
371
+ c.def_const(constname, dqname(name))
372
+ c.def_method(methodname) do <<-__EOD__
373
+ __xmlattr[#{constname}]
374
+ __EOD__
375
+ end
376
+ c.def_method(methodname + '=', 'value') do <<-__EOD__
377
+ __xmlattr[#{constname}] = value
378
+ __EOD__
379
+ end
380
+ c.comment << "\n #{methodname} - #{attribute_basetype(attribute) || '(any)'}"
381
+ end
382
+ end
383
+
384
+ def create_arraydef(mpath, qname, typedef)
385
+ classname = mapped_class_basename(qname, mpath)
386
+ c = ClassDef.new(classname, '::Array')
387
+ c.comment = "#{qname}"
388
+ parentmodule = mapped_class_name(qname, mpath)
389
+ parse_elements(c, typedef.elements, qname.namespace, parentmodule, true)
390
+ c
391
+ end
392
+
393
+ def sort_dependency(types)
394
+ dep = {}
395
+ root = []
396
+ types.each do |type|
397
+ if type.complexcontent and (base = type.complexcontent.base)
398
+ dep[base] ||= []
399
+ dep[base] << type
400
+ else
401
+ root << type
402
+ end
403
+ end
404
+ sorted = []
405
+ root.each do |type|
406
+ sorted.concat(collect_dependency(type, dep))
407
+ end
408
+ sorted.concat(dep.values.flatten)
409
+ sorted
410
+ end
411
+
412
+ # removes collected key from dep
413
+ def collect_dependency(type, dep)
414
+ result = [type]
415
+ return result unless dep.key?(type.name)
416
+ dep[type.name].each do |deptype|
417
+ result.concat(collect_dependency(deptype, dep))
418
+ end
419
+ dep.delete(type.name)
420
+ result
421
+ end
422
+
423
+ def modulepath_split(modulepath)
424
+ if modulepath.is_a?(::Array)
425
+ modulepath
426
+ else
427
+ modulepath.to_s.split('::')
428
+ end
429
+ end
430
+ end
431
+
432
+
433
+ end
434
+ end
@@ -0,0 +1,241 @@
1
+ # encoding: ASCII-8BIT
2
+ # WSDL4R - Creating class code support 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 'soap/mapping'
12
+ require 'soap/mapping/typeMap'
13
+ require 'xsd/codegen/gensupport'
14
+
15
+
16
+ module WSDL
17
+ module SOAP
18
+
19
+
20
+ # requires @defined_const, @simpletypes, @name_creator
21
+ module ClassDefCreatorSupport
22
+ include XSD::CodeGen::GenSupport
23
+
24
+ def mapped_class_name(qname, modulepath)
25
+ @name_creator.assign_name(qname, modulepath)
26
+ end
27
+
28
+ def mapped_class_basename(qname, modulepath)
29
+ classname = @name_creator.assign_name(qname, modulepath)
30
+ classname.sub(/\A.*:/, '')
31
+ end
32
+
33
+ def basetype_mapped_class(name)
34
+ ::SOAP::TypeMap[name]
35
+ end
36
+
37
+ def dump_method_signature(name, operation, element_definitions)
38
+ methodname = safemethodname(name)
39
+ input = operation.input
40
+ output = operation.output
41
+ fault = operation.fault
42
+ signature = "#{methodname}#{dump_inputparam(input)}"
43
+ str = <<__EOD__
44
+ # SYNOPSIS
45
+ # #{methodname}#{dump_inputparam(input)}
46
+ #
47
+ # ARGS
48
+ #{dump_inout_type(input, element_definitions).chomp}
49
+ #
50
+ # RETURNS
51
+ #{dump_inout_type(output, element_definitions).chomp}
52
+ #
53
+ __EOD__
54
+ unless fault.empty?
55
+ str += <<__EOD__
56
+ # RAISES
57
+ #{dump_fault_type(fault, element_definitions)}
58
+ #
59
+ __EOD__
60
+ end
61
+ str
62
+ end
63
+
64
+ def dq(ele)
65
+ ele.dump
66
+ end
67
+
68
+ def ndq(ele)
69
+ ele.nil? ? 'nil' : dq(ele)
70
+ end
71
+
72
+ def sym(ele)
73
+ ':' + ele.id2name
74
+ end
75
+
76
+ def nsym(ele)
77
+ ele.nil? ? 'nil' : sym(ele)
78
+ end
79
+
80
+ def dqname(qname)
81
+ if @defined_const.key?(qname.namespace)
82
+ qname.dump(@defined_const[qname.namespace])
83
+ else
84
+ qname.dump
85
+ end
86
+ end
87
+
88
+ def assign_const(value, prefix = '')
89
+ return if value.nil? or @defined_const.key?(value)
90
+ name = value.scan(/[^:\/]+\/?\z/)[0] || 'C'
91
+ tag = prefix + safeconstname(name)
92
+ if @defined_const.value?(tag)
93
+ idx = 0
94
+ while true
95
+ tag = prefix + safeconstname(name + "_#{idx}")
96
+ break unless @defined_const.value?(tag)
97
+ idx += 1
98
+ raise RuntimeError.new("too much similar names") if idx > 100
99
+ end
100
+ end
101
+ @defined_const[value] = tag
102
+ end
103
+
104
+ def create_type_name(modulepath, element)
105
+ if element.type == XSD::AnyTypeName
106
+ # nil means anyType.
107
+ nil
108
+ elsif simpletype = @simpletypes[element.type]
109
+ if simpletype.restriction and simpletype.restriction.enumeration?
110
+ mapped_class_name(element.type, modulepath)
111
+ else
112
+ nil
113
+ end
114
+ elsif klass = element_basetype(element)
115
+ klass.name
116
+ elsif element.type
117
+ mapped_class_name(element.type, modulepath)
118
+ elsif element.ref
119
+ mapped_class_name(element.ref, modulepath)
120
+ elsif element.anonymous_type?
121
+ # inner class
122
+ mapped_class_name(element.name, modulepath)
123
+ else
124
+ nil
125
+ end
126
+ end
127
+
128
+ private
129
+
130
+ def dump_inout_type(param, element_definitions)
131
+ if param
132
+ message = param.find_message
133
+ params = ""
134
+ message.parts.each do |part|
135
+ name = safevarname(part.name)
136
+ if part.type
137
+ typename = safeconstname(part.type.name)
138
+ qname = part.type
139
+ params << add_at("# #{name}", "#{typename} - #{qname}\n", 20)
140
+ elsif part.element
141
+ ele = element_definitions[part.element]
142
+ if ele.type
143
+ typename = safeconstname(ele.type.name)
144
+ qname = ele.type
145
+ else
146
+ typename = safeconstname(ele.name.name)
147
+ qname = ele.name
148
+ end
149
+ params << add_at("# #{name}", "#{typename} - #{qname}\n", 20)
150
+ end
151
+ end
152
+ unless params.empty?
153
+ return params
154
+ end
155
+ end
156
+ "# N/A\n"
157
+ end
158
+
159
+ def dump_inputparam(input)
160
+ message = input.find_message
161
+ params = ""
162
+ message.parts.each do |part|
163
+ params << ", " unless params.empty?
164
+ params << safevarname(part.name)
165
+ end
166
+ if params.empty?
167
+ ""
168
+ else
169
+ "(#{ params })"
170
+ end
171
+ end
172
+
173
+ def add_at(base, str, pos)
174
+ if base.size >= pos
175
+ base + ' ' + str
176
+ else
177
+ base + ' ' * (pos - base.size) + str
178
+ end
179
+ end
180
+
181
+ def dump_fault_type(fault, element_definitions)
182
+ fault.collect { |ele|
183
+ dump_inout_type(ele, element_definitions).chomp
184
+ }.join("\n")
185
+ end
186
+
187
+ def element_basetype(ele)
188
+ if klass = basetype_class(ele.type)
189
+ klass
190
+ elsif ele.local_simpletype
191
+ basetype_class(ele.local_simpletype.base)
192
+ else
193
+ nil
194
+ end
195
+ end
196
+
197
+ def attribute_basetype(attr)
198
+ if klass = basetype_class(attr.type)
199
+ klass
200
+ elsif attr.local_simpletype
201
+ basetype_class(attr.local_simpletype.base)
202
+ else
203
+ nil
204
+ end
205
+ end
206
+
207
+ def basetype_class(type)
208
+ return nil if type.nil?
209
+ if simpletype = @simpletypes[type]
210
+ basetype_mapped_class(simpletype.base)
211
+ else
212
+ basetype_mapped_class(type)
213
+ end
214
+ end
215
+
216
+ def name_element(element)
217
+ return element.name if element.name
218
+ return element.ref if element.ref
219
+ raise RuntimeError.new("cannot define name of #{element}")
220
+ end
221
+
222
+ def name_attribute(attribute)
223
+ return attribute.name if attribute.name
224
+ return attribute.ref if attribute.ref
225
+ raise RuntimeError.new("cannot define name of #{attribute}")
226
+ end
227
+
228
+ # TODO: run MethodDefCreator just once in 1.6.X.
229
+ # MethodDefCreator should return parsed struct, not a String.
230
+ def collect_assigned_method(wsdl, porttypename, modulepath = nil)
231
+ name_creator = WSDL::SOAP::ClassNameCreator.new
232
+ methoddefcreator =
233
+ WSDL::SOAP::MethodDefCreator.new(wsdl, name_creator, modulepath, {})
234
+ methoddefcreator.dump(porttypename)
235
+ methoddefcreator.assigned_method
236
+ end
237
+ end
238
+
239
+
240
+ end
241
+ end