soap4r-ruby1.9 1.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 (647) hide show
  1. data/COPYING +7 -0
  2. data/GPL +340 -0
  3. data/Gemfile +13 -0
  4. data/Gemfile.lock +20 -0
  5. data/README.rdoc +35 -0
  6. data/RELEASE_en.html +1900 -0
  7. data/RUBYS +56 -0
  8. data/Rakefile +53 -0
  9. data/VERSION +1 -0
  10. data/bin/wsdl2ruby.rb +137 -0
  11. data/bin/xsd2ruby.rb +90 -0
  12. data/lib/soap/attachment.rb +108 -0
  13. data/lib/soap/attrproxy.rb +34 -0
  14. data/lib/soap/baseData.rb +1094 -0
  15. data/lib/soap/element.rb +277 -0
  16. data/lib/soap/encodingstyle/aspDotNetHandler.rb +207 -0
  17. data/lib/soap/encodingstyle/handler.rb +120 -0
  18. data/lib/soap/encodingstyle/literalHandler.rb +195 -0
  19. data/lib/soap/encodingstyle/soapHandler.rb +559 -0
  20. data/lib/soap/filter.rb +13 -0
  21. data/lib/soap/filter/filterchain.rb +51 -0
  22. data/lib/soap/filter/handler.rb +31 -0
  23. data/lib/soap/filter/streamhandler.rb +29 -0
  24. data/lib/soap/generator.rb +299 -0
  25. data/lib/soap/header/handler.rb +61 -0
  26. data/lib/soap/header/handlerset.rb +70 -0
  27. data/lib/soap/header/mappinghandler.rb +47 -0
  28. data/lib/soap/header/simplehandler.rb +44 -0
  29. data/lib/soap/httpconfigloader.rb +139 -0
  30. data/lib/soap/mapping.rb +12 -0
  31. data/lib/soap/mapping/encodedregistry.rb +537 -0
  32. data/lib/soap/mapping/factory.rb +388 -0
  33. data/lib/soap/mapping/literalregistry.rb +391 -0
  34. data/lib/soap/mapping/mapping.rb +577 -0
  35. data/lib/soap/mapping/registry.rb +295 -0
  36. data/lib/soap/mapping/rubytypeFactory.rb +446 -0
  37. data/lib/soap/mapping/schemadefinition.rb +170 -0
  38. data/lib/soap/mapping/typeMap.rb +105 -0
  39. data/lib/soap/mapping/wsdlencodedregistry.rb +211 -0
  40. data/lib/soap/mapping/wsdlliteralregistry.rb +248 -0
  41. data/lib/soap/marshal.rb +59 -0
  42. data/lib/soap/mimemessage.rb +241 -0
  43. data/lib/soap/nestedexception.rb +42 -0
  44. data/lib/soap/netHttpClient.rb +241 -0
  45. data/lib/soap/ns.rb +34 -0
  46. data/lib/soap/parser.rb +252 -0
  47. data/lib/soap/processor.rb +66 -0
  48. data/lib/soap/property.rb +333 -0
  49. data/lib/soap/proxy.rb +14 -0
  50. data/lib/soap/rpc/cgistub.rb +247 -0
  51. data/lib/soap/rpc/driver.rb +221 -0
  52. data/lib/soap/rpc/element.rb +374 -0
  53. data/lib/soap/rpc/element.rb.orig +374 -0
  54. data/lib/soap/rpc/httpserver.rb +142 -0
  55. data/lib/soap/rpc/methodDef.rb +68 -0
  56. data/lib/soap/rpc/proxy.rb +572 -0
  57. data/lib/soap/rpc/router.rb +662 -0
  58. data/lib/soap/rpc/rpc.rb +25 -0
  59. data/lib/soap/rpc/soaplet.rb +200 -0
  60. data/lib/soap/rpc/standaloneServer.rb +43 -0
  61. data/lib/soap/ruby18ext.rb +13 -0
  62. data/lib/soap/soap.rb +151 -0
  63. data/lib/soap/streamHandler.rb +301 -0
  64. data/lib/soap/wsdlDriver.rb +164 -0
  65. data/lib/wsdl/binding.rb +65 -0
  66. data/lib/wsdl/data.rb +64 -0
  67. data/lib/wsdl/definitions.rb +236 -0
  68. data/lib/wsdl/documentation.rb +32 -0
  69. data/lib/wsdl/import.rb +80 -0
  70. data/lib/wsdl/importer.rb +38 -0
  71. data/lib/wsdl/info.rb +50 -0
  72. data/lib/wsdl/message.rb +54 -0
  73. data/lib/wsdl/operation.rb +151 -0
  74. data/lib/wsdl/operationBinding.rb +240 -0
  75. data/lib/wsdl/param.rb +93 -0
  76. data/lib/wsdl/parser.rb +164 -0
  77. data/lib/wsdl/part.rb +52 -0
  78. data/lib/wsdl/port.rb +66 -0
  79. data/lib/wsdl/portType.rb +75 -0
  80. data/lib/wsdl/service.rb +61 -0
  81. data/lib/wsdl/soap/address.rb +40 -0
  82. data/lib/wsdl/soap/binding.rb +49 -0
  83. data/lib/wsdl/soap/body.rb +58 -0
  84. data/lib/wsdl/soap/cgiStubCreator.rb +92 -0
  85. data/lib/wsdl/soap/classDefCreator.rb +433 -0
  86. data/lib/wsdl/soap/classDefCreatorSupport.rb +240 -0
  87. data/lib/wsdl/soap/classNameCreator.rb +54 -0
  88. data/lib/wsdl/soap/clientSkeltonCreator.rb +104 -0
  89. data/lib/wsdl/soap/complexType.rb +173 -0
  90. data/lib/wsdl/soap/data.rb +42 -0
  91. data/lib/wsdl/soap/definitions.rb +200 -0
  92. data/lib/wsdl/soap/driverCreator.rb +118 -0
  93. data/lib/wsdl/soap/element.rb +33 -0
  94. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +73 -0
  95. data/lib/wsdl/soap/fault.rb +56 -0
  96. data/lib/wsdl/soap/header.rb +86 -0
  97. data/lib/wsdl/soap/headerfault.rb +56 -0
  98. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +115 -0
  99. data/lib/wsdl/soap/mappingRegistryCreator.rb +58 -0
  100. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +376 -0
  101. data/lib/wsdl/soap/methodDefCreator.rb +199 -0
  102. data/lib/wsdl/soap/operation.rb +112 -0
  103. data/lib/wsdl/soap/servantSkeltonCreator.rb +89 -0
  104. data/lib/wsdl/soap/servletStubCreator.rb +104 -0
  105. data/lib/wsdl/soap/standaloneServerStubCreator.rb +100 -0
  106. data/lib/wsdl/soap/wsdl2ruby.rb +217 -0
  107. data/lib/wsdl/types.rb +44 -0
  108. data/lib/wsdl/wsdl.rb +24 -0
  109. data/lib/wsdl/xmlSchema/all.rb +24 -0
  110. data/lib/wsdl/xmlSchema/annotation.rb +34 -0
  111. data/lib/wsdl/xmlSchema/any.rb +61 -0
  112. data/lib/wsdl/xmlSchema/anyAttribute.rb +48 -0
  113. data/lib/wsdl/xmlSchema/attribute.rb +104 -0
  114. data/lib/wsdl/xmlSchema/attributeGroup.rb +68 -0
  115. data/lib/wsdl/xmlSchema/choice.rb +58 -0
  116. data/lib/wsdl/xmlSchema/complexContent.rb +97 -0
  117. data/lib/wsdl/xmlSchema/complexExtension.rb +119 -0
  118. data/lib/wsdl/xmlSchema/complexRestriction.rb +104 -0
  119. data/lib/wsdl/xmlSchema/complexType.rb +193 -0
  120. data/lib/wsdl/xmlSchema/content.rb +95 -0
  121. data/lib/wsdl/xmlSchema/data.rb +116 -0
  122. data/lib/wsdl/xmlSchema/element.rb +153 -0
  123. data/lib/wsdl/xmlSchema/enumeration.rb +36 -0
  124. data/lib/wsdl/xmlSchema/fractiondigits.rb +37 -0
  125. data/lib/wsdl/xmlSchema/group.rb +100 -0
  126. data/lib/wsdl/xmlSchema/import.rb +53 -0
  127. data/lib/wsdl/xmlSchema/importHandler.rb +45 -0
  128. data/lib/wsdl/xmlSchema/importer.rb +102 -0
  129. data/lib/wsdl/xmlSchema/include.rb +48 -0
  130. data/lib/wsdl/xmlSchema/length.rb +37 -0
  131. data/lib/wsdl/xmlSchema/list.rb +48 -0
  132. data/lib/wsdl/xmlSchema/maxexclusive.rb +37 -0
  133. data/lib/wsdl/xmlSchema/maxinclusive.rb +37 -0
  134. data/lib/wsdl/xmlSchema/maxlength.rb +37 -0
  135. data/lib/wsdl/xmlSchema/minexclusive.rb +37 -0
  136. data/lib/wsdl/xmlSchema/mininclusive.rb +37 -0
  137. data/lib/wsdl/xmlSchema/minlength.rb +37 -0
  138. data/lib/wsdl/xmlSchema/parser.rb +167 -0
  139. data/lib/wsdl/xmlSchema/pattern.rb +36 -0
  140. data/lib/wsdl/xmlSchema/ref.rb +33 -0
  141. data/lib/wsdl/xmlSchema/schema.rb +178 -0
  142. data/lib/wsdl/xmlSchema/sequence.rb +54 -0
  143. data/lib/wsdl/xmlSchema/simpleContent.rb +69 -0
  144. data/lib/wsdl/xmlSchema/simpleExtension.rb +62 -0
  145. data/lib/wsdl/xmlSchema/simpleRestriction.rb +132 -0
  146. data/lib/wsdl/xmlSchema/simpleType.rb +87 -0
  147. data/lib/wsdl/xmlSchema/totaldigits.rb +37 -0
  148. data/lib/wsdl/xmlSchema/union.rb +35 -0
  149. data/lib/wsdl/xmlSchema/unique.rb +34 -0
  150. data/lib/wsdl/xmlSchema/whitespace.rb +37 -0
  151. data/lib/wsdl/xmlSchema/xsd2ruby.rb +174 -0
  152. data/lib/xsd/charset.rb +188 -0
  153. data/lib/xsd/codegen.rb +12 -0
  154. data/lib/xsd/codegen/classdef.rb +208 -0
  155. data/lib/xsd/codegen/commentdef.rb +34 -0
  156. data/lib/xsd/codegen/gensupport.rb +273 -0
  157. data/lib/xsd/codegen/methoddef.rb +70 -0
  158. data/lib/xsd/codegen/moduledef.rb +208 -0
  159. data/lib/xsd/datatypes.rb +1466 -0
  160. data/lib/xsd/datatypes1999.rb +20 -0
  161. data/lib/xsd/iconvcharset.rb +33 -0
  162. data/lib/xsd/mapping.rb +68 -0
  163. data/lib/xsd/namedelements.rb +132 -0
  164. data/lib/xsd/ns.rb +182 -0
  165. data/lib/xsd/qname.rb +79 -0
  166. data/lib/xsd/xmlparser.rb +82 -0
  167. data/lib/xsd/xmlparser.rb.orig +76 -0
  168. data/lib/xsd/xmlparser/libxmlparser.rb +119 -0
  169. data/lib/xsd/xmlparser/parser.rb +100 -0
  170. data/lib/xsd/xmlparser/rexmlparser.rb +58 -0
  171. data/lib/xsd/xmlparser/xmlparser.rb +50 -0
  172. data/lib/xsd/xmlparser/xmlscanner.rb +149 -0
  173. data/rubyStyle.css +104 -0
  174. data/sample/attachment/complexmime/EdmService.rb +124 -0
  175. data/sample/attachment/complexmime/README.txt +3 -0
  176. data/sample/attachment/complexmime/client.rb +57 -0
  177. data/sample/attachment/complexmime/drift.cdf +1 -0
  178. data/sample/attachment/complexmime/plaatje.png +1 -0
  179. data/sample/attachment/complexmime/server.rb +68 -0
  180. data/sample/attachment/swa/client.rb +13 -0
  181. data/sample/attachment/swa/server.rb +23 -0
  182. data/sample/basic/apacheClient.rb +92 -0
  183. data/sample/basic/babelfish.rb +16 -0
  184. data/sample/basic/calc/calc.rb +17 -0
  185. data/sample/basic/calc/calc2.rb +29 -0
  186. data/sample/basic/calc/client.rb +26 -0
  187. data/sample/basic/calc/client2.rb +29 -0
  188. data/sample/basic/calc/httpd.rb +20 -0
  189. data/sample/basic/calc/samplehttpd.conf +2 -0
  190. data/sample/basic/calc/server.cgi +15 -0
  191. data/sample/basic/calc/server.fcgi +22 -0
  192. data/sample/basic/calc/server.rb +21 -0
  193. data/sample/basic/calc/server2.rb +24 -0
  194. data/sample/basic/exchange/client.rb +19 -0
  195. data/sample/basic/exchange/exchange.rb +17 -0
  196. data/sample/basic/exchange/httpd.rb +20 -0
  197. data/sample/basic/exchange/samplehttpd.conf +2 -0
  198. data/sample/basic/exchange/server.cgi +14 -0
  199. data/sample/basic/exchange/server.rb +20 -0
  200. data/sample/basic/flickr.rb +26 -0
  201. data/sample/basic/helloworld/client.rb +6 -0
  202. data/sample/basic/helloworld/server.rb +20 -0
  203. data/sample/basic/sampleStruct/client.rb +16 -0
  204. data/sample/basic/sampleStruct/httpd.rb +20 -0
  205. data/sample/basic/sampleStruct/iSampleStruct.rb +22 -0
  206. data/sample/basic/sampleStruct/sampleStruct.rb +13 -0
  207. data/sample/basic/sampleStruct/samplehttpd.conf +2 -0
  208. data/sample/basic/sampleStruct/server.cgi +14 -0
  209. data/sample/basic/sampleStruct/server.rb +20 -0
  210. data/sample/basic/whois.rb +14 -0
  211. data/sample/basic/wsdl_helloworld/README +15 -0
  212. data/sample/basic/wsdl_helloworld/client/default.rb +1 -0
  213. data/sample/basic/wsdl_helloworld/client/defaultDriver.rb +47 -0
  214. data/sample/basic/wsdl_helloworld/client/hws.wsdl +46 -0
  215. data/sample/basic/wsdl_helloworld/client/hwsClient.rb +22 -0
  216. data/sample/basic/wsdl_helloworld/server/hw_s.rb +25 -0
  217. data/sample/basic/wsdl_helloworld/server/hws.wsdl +46 -0
  218. data/sample/basic/yahooNewsSearch.rb +36 -0
  219. data/sample/howto/as_xml/client.rb +22 -0
  220. data/sample/howto/as_xml/server.rb +22 -0
  221. data/sample/howto/base64/client.rb +17 -0
  222. data/sample/howto/base64/server.rb +30 -0
  223. data/sample/howto/custom_ns/client.rb +37 -0
  224. data/sample/howto/custom_ns/server.rb +42 -0
  225. data/sample/howto/documentliteral/README.txt +19 -0
  226. data/sample/howto/documentliteral/client.rb +11 -0
  227. data/sample/howto/documentliteral/echo.wsdl +66 -0
  228. data/sample/howto/documentliteral/servant.rb +11 -0
  229. data/sample/howto/filter/client.rb +42 -0
  230. data/sample/howto/filter/server.rb +67 -0
  231. data/sample/howto/scopesample/client.rb +34 -0
  232. data/sample/howto/scopesample/httpd.rb +22 -0
  233. data/sample/howto/scopesample/samplehttpd.conf +2 -0
  234. data/sample/howto/scopesample/servant.rb +18 -0
  235. data/sample/howto/scopesample/server.cgi +29 -0
  236. data/sample/howto/scopesample/server.rb +20 -0
  237. data/sample/howto/styleuse/client.rb +21 -0
  238. data/sample/howto/styleuse/server.rb +86 -0
  239. data/sample/howto/wsdl_fault/README.txt +11 -0
  240. data/sample/howto/wsdl_fault/fault/AddClient.rb +24 -0
  241. data/sample/howto/wsdl_fault/fault/AddServer.rb +15 -0
  242. data/sample/howto/wsdl_fault/fault/AddServiceImpl.rb +18 -0
  243. data/sample/howto/wsdl_fault/fault/fault.wsdl +79 -0
  244. data/sample/howto/wsdl_fault/multifault/AddClient.rb +28 -0
  245. data/sample/howto/wsdl_fault/multifault/AddServer.rb +15 -0
  246. data/sample/howto/wsdl_fault/multifault/AddServiceImpl.rb +24 -0
  247. data/sample/howto/wsdl_fault/multifault/fault.wsdl +96 -0
  248. data/sample/howto/wsdl_hash/client.rb +11 -0
  249. data/sample/howto/wsdl_hash/hash.wsdl +69 -0
  250. data/sample/howto/wsdl_hash/server.rb +17 -0
  251. data/sample/marshal/customfactory.rb +97 -0
  252. data/sample/marshal/customregistry.rb +17 -0
  253. data/sample/marshal/digraph.rb +43 -0
  254. data/sample/marshal/enum/README.txt +6 -0
  255. data/sample/marshal/enum/enum.xsd +23 -0
  256. data/sample/marshal/enum/enumsample.rb +20 -0
  257. data/sample/marshal/enum/enumsample_mapper.rb +7 -0
  258. data/sample/marshal/enum/enumsample_mapping_registry.rb +23 -0
  259. data/sample/marshal/enum/marshal.rb +9 -0
  260. data/sample/payload/basicauth/client.rb +10 -0
  261. data/sample/payload/basicauth/htpasswd +2 -0
  262. data/sample/payload/basicauth/server.rb +43 -0
  263. data/sample/payload/cookies/calc.rb +52 -0
  264. data/sample/payload/cookies/client.rb +30 -0
  265. data/sample/payload/cookies/filterclient.rb +52 -0
  266. data/sample/payload/cookies/server.rb +24 -0
  267. data/sample/payload/gzipped/client.rb +8 -0
  268. data/sample/payload/gzipped/server.rb +21 -0
  269. data/sample/payload/ssl/files/README +1 -0
  270. data/sample/payload/ssl/files/ca.cert +23 -0
  271. data/sample/payload/ssl/files/client.cert +19 -0
  272. data/sample/payload/ssl/files/client.key +15 -0
  273. data/sample/payload/ssl/files/server.cert +19 -0
  274. data/sample/payload/ssl/files/server.key +15 -0
  275. data/sample/payload/ssl/files/sslclient.properties +5 -0
  276. data/sample/payload/ssl/files/sslclient_require_noserverauth.properties +2 -0
  277. data/sample/payload/ssl/files/sslclient_with_clientauth.properties +9 -0
  278. data/sample/payload/ssl/files/subca.cert +21 -0
  279. data/sample/payload/ssl/sslclient.rb +12 -0
  280. data/sample/payload/ssl/sslclient_require_noserverauth.rb +12 -0
  281. data/sample/payload/ssl/sslclient_with_clientauth.rb +12 -0
  282. data/sample/payload/ssl/sslserver.rb +49 -0
  283. data/sample/payload/ssl/sslserver_noauth.rb +45 -0
  284. data/sample/payload/ssl/sslserver_require_clientauth.rb +50 -0
  285. data/sample/showcase/soap/hippo5tq/hippo5tq.rb +41 -0
  286. data/sample/showcase/soap/hippo5tq/hippo5tq2.rb +99 -0
  287. data/sample/showcase/soap/hippo5tq/hippoClient.rb +106 -0
  288. data/sample/showcase/soap/icd/IICD.rb +17 -0
  289. data/sample/showcase/soap/icd/icd.rb +46 -0
  290. data/sample/showcase/soap/mssoap/README.txt +62 -0
  291. data/sample/showcase/soap/mssoap/client.vba +19 -0
  292. data/sample/showcase/soap/mssoap/stockQuoteService.cgi +44 -0
  293. data/sample/showcase/soap/mssoap/stockQuoteService.rb +9 -0
  294. data/sample/showcase/soap/mssoap/stockQuoteService.wsdl +47 -0
  295. data/sample/showcase/soap/mssoap/stockQuoteServiceClient.rb +26 -0
  296. data/sample/showcase/soap/mssoap/stockQuoteServiceClient.xls +0 -0
  297. data/sample/showcase/soap/mssoap/stockQuoteServicePortTypeDriver.rb +46 -0
  298. data/sample/showcase/soap/netDicV06/INetDicV06.rb +36 -0
  299. data/sample/showcase/soap/netDicV06/netDicV06.rb +16 -0
  300. data/sample/showcase/soap/raa/SOAP__Lite.pl +15 -0
  301. data/sample/showcase/soap/raa/pocketSOAP.js +33 -0
  302. data/sample/showcase/soap/raa2.4/raa.rb +332 -0
  303. data/sample/showcase/soap/raa2.4/raa.wsdl +644 -0
  304. data/sample/showcase/soap/raa2.4/raaDriver.rb +255 -0
  305. data/sample/showcase/soap/raa2.4/raaServiceClient.rb +354 -0
  306. data/sample/showcase/soap/raa2.4/sample.rb +115 -0
  307. data/sample/showcase/soap/rwiki/rwikiClient.rb +29 -0
  308. data/sample/showcase/soap/rwiki/rwikiServer.cgi +44 -0
  309. data/sample/showcase/soap/soapbox/ContactsDataSet.xml +37 -0
  310. data/sample/showcase/soap/soapbox/ExceptionDataSet.xml +23 -0
  311. data/sample/showcase/soap/soapbox/MessageDataSet.xml +8 -0
  312. data/sample/showcase/soap/soapbox/SoapBoxWebService.wsdl +1233 -0
  313. data/sample/showcase/soap/soapbox/SoapBoxWebServiceWithRawXML.wsdl +1226 -0
  314. data/sample/showcase/soap/soapbox/wsdlDriver.rb +23 -0
  315. data/sample/showcase/wsdl/PayPalSvc/client.rb +36 -0
  316. data/sample/showcase/wsdl/amazon/AmazonSearch.rb +3160 -0
  317. data/sample/showcase/wsdl/amazon/AmazonSearchDriver.rb +546 -0
  318. data/sample/showcase/wsdl/amazon/sampleClient.rb +37 -0
  319. data/sample/showcase/wsdl/amazon/wsdlDriver.rb +52 -0
  320. data/sample/showcase/wsdl/amazonEC/client.rb +13 -0
  321. data/sample/showcase/wsdl/eBaySvc/sampleclient.rb +60 -0
  322. data/sample/showcase/wsdl/googleAdwords/CampaignService.wsdl +785 -0
  323. data/sample/showcase/wsdl/googleAdwords/ca.pem +19 -0
  324. data/sample/showcase/wsdl/googleAdwords/client.rb +40 -0
  325. data/sample/showcase/wsdl/googleAdwords/soap/property +1 -0
  326. data/sample/showcase/wsdl/googleSearch/GoogleSearch.rb +97 -0
  327. data/sample/showcase/wsdl/googleSearch/GoogleSearchDriver.rb +102 -0
  328. data/sample/showcase/wsdl/googleSearch/README +6 -0
  329. data/sample/showcase/wsdl/googleSearch/httpd.rb +20 -0
  330. data/sample/showcase/wsdl/googleSearch/sampleClient.rb +56 -0
  331. data/sample/showcase/wsdl/googleSearch/samplehttpd.conf +2 -0
  332. data/sample/showcase/wsdl/googleSearch/sjissearch.sh +3 -0
  333. data/sample/showcase/wsdl/googleSearch/wsdlDriver.rb +29 -0
  334. data/sample/showcase/wsdl/noaa/README.txt +5 -0
  335. data/sample/showcase/wsdl/noaa/client.rb +44 -0
  336. data/sample/showcase/wsdl/noaa/default.rb +46 -0
  337. data/sample/showcase/wsdl/noaa/defaultDriver.rb +66 -0
  338. data/sample/showcase/wsdl/noaa/defaultMappingRegistry.rb +74 -0
  339. data/sample/showcase/wsdl/noaa/ndfdXMLClient.rb +43 -0
  340. data/sample/showcase/wsdl/raa2.4/raa.rb +134 -0
  341. data/sample/showcase/wsdl/raa2.4/raa.wsdl +644 -0
  342. data/sample/showcase/wsdl/raa2.4/wsdlDriver.rb +117 -0
  343. data/sample/showcase/wsdl/rnn/client.rb +59 -0
  344. data/sample/showcase/wsdl/rnn/post.rb +27 -0
  345. data/sample/showcase/wsdl/rnn/rnn-hash.wsdl +282 -0
  346. data/sample/showcase/wsdl/rnn/rnn.wsdl +310 -0
  347. data/sample/showcase/wsdl/rnn/submit.rb +63 -0
  348. data/sample/showcase/wsdl/salesforce/SforceServiceClient.rb +280 -0
  349. data/sample/showcase/wsdl/salesforce/ca.pem +35 -0
  350. data/sample/showcase/wsdl/salesforce/client.rb +156 -0
  351. data/sample/showcase/wsdl/salesforce/default.rb +1740 -0
  352. data/sample/showcase/wsdl/salesforce/defaultDriver.rb +165 -0
  353. data/sample/showcase/wsdl/salesforce/soap/property +1 -0
  354. data/sample/soapheader/authheader/authmgr.rb +41 -0
  355. data/sample/soapheader/authheader/client.rb +40 -0
  356. data/sample/soapheader/authheader/client2.rb +42 -0
  357. data/sample/soapheader/authheader/server.rb +73 -0
  358. data/sample/soapheader/authheader/server2.rb +83 -0
  359. data/sample/soapheader/soapext_basicauth/client.rb +25 -0
  360. data/sample/soapheader/soapext_basicauth/mms_MizGIS.rb +701 -0
  361. data/sample/soapheader/soapext_basicauth/mms_MizGIS.wsdl +1007 -0
  362. data/sample/soapheader/soapext_basicauth/mms_MizGISClient.rb +231 -0
  363. data/sample/soapheader/soapext_basicauth/mms_MizGISDriver.rb +210 -0
  364. data/sample/soapheader/soapext_basicauth/mms_MizGISMappingRegistry.rb +1232 -0
  365. data/setup.rb +1585 -0
  366. data/soap4r-ruby1.9.gemspec +907 -0
  367. data/test/16runner.rb +68 -0
  368. data/test/interopR2/README.txt +2 -0
  369. data/test/interopR2/SOAPBuildersInterop_R2.wsdl +461 -0
  370. data/test/interopR2/SOAPBuildersInterop_R2GrB.wsdl +19 -0
  371. data/test/interopR2/base.rb +288 -0
  372. data/test/interopR2/client.NetRemoting.rb +17 -0
  373. data/test/interopR2/client.rb +1234 -0
  374. data/test/interopR2/client4S4C.rb +15 -0
  375. data/test/interopR2/client4S4C2.rb +14 -0
  376. data/test/interopR2/clientASP.NET.rb +17 -0
  377. data/test/interopR2/clientApacheAxis.rb +16 -0
  378. data/test/interopR2/clientApacheSOAP.rb +17 -0
  379. data/test/interopR2/clientBEAWebLogic.rb +17 -0
  380. data/test/interopR2/clientBase.rb +1967 -0
  381. data/test/interopR2/clientCapeConnect.rb +18 -0
  382. data/test/interopR2/clientDelphi.rb +19 -0
  383. data/test/interopR2/clientEasySoap.rb +14 -0
  384. data/test/interopR2/clientFrontier.rb +25 -0
  385. data/test/interopR2/clientGLUE.rb +32 -0
  386. data/test/interopR2/clientHP.rb +13 -0
  387. data/test/interopR2/clientJAX-RPC.rb +19 -0
  388. data/test/interopR2/clientJSOAP.rb +14 -0
  389. data/test/interopR2/clientKafkaXSLT.rb +15 -0
  390. data/test/interopR2/clientMSSOAPToolkit2.0.rb +17 -0
  391. data/test/interopR2/clientMSSOAPToolkit3.0.rb +17 -0
  392. data/test/interopR2/clientNuSOAP.rb +19 -0
  393. data/test/interopR2/clientNuWave.rb +15 -0
  394. data/test/interopR2/clientOpenLink.rb +15 -0
  395. data/test/interopR2/clientOracle.rb +15 -0
  396. data/test/interopR2/clientPEAR.rb +18 -0
  397. data/test/interopR2/clientPhalanx.rb +18 -0
  398. data/test/interopR2/clientSIMACE.rb +18 -0
  399. data/test/interopR2/clientSOAP4R.rb +18 -0
  400. data/test/interopR2/clientSOAP__Lite.rb +14 -0
  401. data/test/interopR2/clientSQLData.rb +18 -0
  402. data/test/interopR2/clientSilverStream.rb +17 -0
  403. data/test/interopR2/clientSpray2001.rb +17 -0
  404. data/test/interopR2/clientSun.rb +19 -0
  405. data/test/interopR2/clientVWOpentalkSoap.rb +19 -0
  406. data/test/interopR2/clientWASP.rb +19 -0
  407. data/test/interopR2/clientWASPC.rb +18 -0
  408. data/test/interopR2/clientWebMethods.rb +15 -0
  409. data/test/interopR2/clientWhiteMesa.rb +28 -0
  410. data/test/interopR2/clientWingfoot.rb +15 -0
  411. data/test/interopR2/clientXMLBus.rb +19 -0
  412. data/test/interopR2/clientXMLRPC-EPI.rb +17 -0
  413. data/test/interopR2/clientXSOAP.rb +14 -0
  414. data/test/interopR2/clientZSI.rb +19 -0
  415. data/test/interopR2/clienteSOAP.rb +18 -0
  416. data/test/interopR2/clientgSOAP.rb +18 -0
  417. data/test/interopR2/clientkSOAP.rb +17 -0
  418. data/test/interopR2/iSimonReg.rb +112 -0
  419. data/test/interopR2/interopResultBase.rb +114 -0
  420. data/test/interopR2/interopService.rb +247 -0
  421. data/test/interopR2/rwikiInteropService.rb +105 -0
  422. data/test/interopR2/server.cgi +270 -0
  423. data/test/interopR2/server.rb +275 -0
  424. data/test/interopR2/simonReg.rb +123 -0
  425. data/test/interopR2/test.sh +49 -0
  426. data/test/interopR4/client.rb +112 -0
  427. data/test/results +4810 -0
  428. data/test/runner.rb +7 -0
  429. data/test/sm11/classDef.rb +156 -0
  430. data/test/sm11/client.rb +542 -0
  431. data/test/sm11/driver.rb +183 -0
  432. data/test/sm11/servant.rb +1067 -0
  433. data/test/sm11/server.rb +25 -0
  434. data/test/soap/asp.net/hello.wsdl +96 -0
  435. data/test/soap/asp.net/test_aspdotnet.rb +123 -0
  436. data/test/soap/auth/htdigest +2 -0
  437. data/test/soap/auth/htpasswd +2 -0
  438. data/test/soap/auth/test_basic.rb +117 -0
  439. data/test/soap/auth/test_digest.rb +118 -0
  440. data/test/soap/calc/calc.rb +17 -0
  441. data/test/soap/calc/calc2.rb +29 -0
  442. data/test/soap/calc/server.cgi +13 -0
  443. data/test/soap/calc/server.rb +17 -0
  444. data/test/soap/calc/server2.rb +20 -0
  445. data/test/soap/calc/test_calc.rb +51 -0
  446. data/test/soap/calc/test_calc2.rb +55 -0
  447. data/test/soap/calc/test_calc_cgi.rb +71 -0
  448. data/test/soap/case/test_mapping.rb +57 -0
  449. data/test/soap/fault/test_customfault.rb +60 -0
  450. data/test/soap/fault/test_fault.rb +46 -0
  451. data/test/soap/fault/test_soaparray.rb +35 -0
  452. data/test/soap/filter/test_filter.rb +146 -0
  453. data/test/soap/header/server.cgi +119 -0
  454. data/test/soap/header/session.pstoredb +0 -0
  455. data/test/soap/header/test_authheader.rb +240 -0
  456. data/test/soap/header/test_authheader_cgi.rb +121 -0
  457. data/test/soap/header/test_simplehandler.rb +116 -0
  458. data/test/soap/helloworld/hw_s.rb +16 -0
  459. data/test/soap/helloworld/test_helloworld.rb +43 -0
  460. data/test/soap/htpasswd +2 -0
  461. data/test/soap/literalArrayMapping/amazonEc.rb +4778 -0
  462. data/test/soap/literalArrayMapping/amazonEcDriver.rb +172 -0
  463. data/test/soap/literalArrayMapping/amazonresponse.xml +100 -0
  464. data/test/soap/literalArrayMapping/test_definedarray.rb +34 -0
  465. data/test/soap/marshal/marshaltestlib.rb +494 -0
  466. data/test/soap/marshal/test_digraph.rb +56 -0
  467. data/test/soap/marshal/test_marshal.rb +26 -0
  468. data/test/soap/marshal/test_struct.rb +47 -0
  469. data/test/soap/ssl/README +1 -0
  470. data/test/soap/ssl/ca.cert +23 -0
  471. data/test/soap/ssl/client.cert +19 -0
  472. data/test/soap/ssl/client.key +15 -0
  473. data/test/soap/ssl/server.cert +19 -0
  474. data/test/soap/ssl/server.key +15 -0
  475. data/test/soap/ssl/sslsvr.rb +57 -0
  476. data/test/soap/ssl/subca.cert +21 -0
  477. data/test/soap/ssl/test_ssl.rb +235 -0
  478. data/test/soap/struct/test_struct.rb +70 -0
  479. data/test/soap/styleuse/client.rb +20 -0
  480. data/test/soap/styleuse/server.rb +86 -0
  481. data/test/soap/swa/test_file.rb +75 -0
  482. data/test/soap/test_basetype.rb +1090 -0
  483. data/test/soap/test_cookie.rb +112 -0
  484. data/test/soap/test_custom_ns.rb +105 -0
  485. data/test/soap/test_custommap.rb +110 -0
  486. data/test/soap/test_empty.rb +105 -0
  487. data/test/soap/test_envelopenamespace.rb +85 -0
  488. data/test/soap/test_extraattr.rb +54 -0
  489. data/test/soap/test_generator.rb +27 -0
  490. data/test/soap/test_httpconfigloader.rb +71 -0
  491. data/test/soap/test_mapping.rb +131 -0
  492. data/test/soap/test_nestedexception.rb +56 -0
  493. data/test/soap/test_nil.rb +57 -0
  494. data/test/soap/test_no_indent.rb +88 -0
  495. data/test/soap/test_property.rb +428 -0
  496. data/test/soap/test_response_as_xml.rb +117 -0
  497. data/test/soap/test_soapelement.rb +138 -0
  498. data/test/soap/test_streamhandler.rb +270 -0
  499. data/test/soap/test_styleuse.rb +326 -0
  500. data/test/soap/wsdlDriver/README.txt +2 -0
  501. data/test/soap/wsdlDriver/calc.wsdl +126 -0
  502. data/test/soap/wsdlDriver/document.wsdl +54 -0
  503. data/test/soap/wsdlDriver/echo_version.rb +29 -0
  504. data/test/soap/wsdlDriver/simpletype.wsdl +63 -0
  505. data/test/soap/wsdlDriver/test_calc.rb +71 -0
  506. data/test/soap/wsdlDriver/test_document.rb +71 -0
  507. data/test/soap/wsdlDriver/test_simpletype.rb +80 -0
  508. data/test/testutil.rb +54 -0
  509. data/test/wsdl/abstract/abstract.wsdl +176 -0
  510. data/test/wsdl/abstract/test_abstract.rb +159 -0
  511. data/test/wsdl/anonymous/expectedClassDef.rb +128 -0
  512. data/test/wsdl/anonymous/expectedDriver.rb +59 -0
  513. data/test/wsdl/anonymous/expectedMappingRegistry.rb +176 -0
  514. data/test/wsdl/anonymous/lp.wsdl +147 -0
  515. data/test/wsdl/anonymous/test_anonymous.rb +130 -0
  516. data/test/wsdl/any/any.wsdl +114 -0
  517. data/test/wsdl/any/expectedDriver.rb +68 -0
  518. data/test/wsdl/any/expectedEcho.rb +57 -0
  519. data/test/wsdl/any/expectedMappingRegistry.rb +63 -0
  520. data/test/wsdl/any/expectedService.rb +69 -0
  521. data/test/wsdl/any/test_any.rb +193 -0
  522. data/test/wsdl/axisArray/axisArray.wsdl +87 -0
  523. data/test/wsdl/axisArray/test_axisarray.rb +124 -0
  524. data/test/wsdl/choice/choice.wsdl +167 -0
  525. data/test/wsdl/choice/test_choice.rb +310 -0
  526. data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
  527. data/test/wsdl/complexcontent/test_echo.rb +90 -0
  528. data/test/wsdl/datetime/DatetimeService.rb +44 -0
  529. data/test/wsdl/datetime/datetime.rb +0 -0
  530. data/test/wsdl/datetime/datetime.wsdl +45 -0
  531. data/test/wsdl/datetime/datetimeServant.rb +22 -0
  532. data/test/wsdl/datetime/test_datetime.rb +86 -0
  533. data/test/wsdl/document/array/double.wsdl +161 -0
  534. data/test/wsdl/document/array/test_array.rb +201 -0
  535. data/test/wsdl/document/document.wsdl +76 -0
  536. data/test/wsdl/document/number.wsdl +54 -0
  537. data/test/wsdl/document/ping_nosoapaction.wsdl +66 -0
  538. data/test/wsdl/document/test_nosoapaction.rb +102 -0
  539. data/test/wsdl/document/test_number.rb +92 -0
  540. data/test/wsdl/document/test_rpc.rb +355 -0
  541. data/test/wsdl/emptycomplextype.wsdl +31 -0
  542. data/test/wsdl/fault/fault.wsdl +79 -0
  543. data/test/wsdl/fault/multifault.wsdl +96 -0
  544. data/test/wsdl/fault/test_fault.rb +119 -0
  545. data/test/wsdl/fault/test_multifault.rb +134 -0
  546. data/test/wsdl/group/expectedClassdef.rb +58 -0
  547. data/test/wsdl/group/expectedDriver.rb +51 -0
  548. data/test/wsdl/group/expectedMappingRegistry.rb +67 -0
  549. data/test/wsdl/group/group.wsdl +88 -0
  550. data/test/wsdl/group/test_rpc.rb +145 -0
  551. data/test/wsdl/list/list.wsdl +93 -0
  552. data/test/wsdl/list/test_list.rb +124 -0
  553. data/test/wsdl/map/map.wsdl +92 -0
  554. data/test/wsdl/map/map.xml +43 -0
  555. data/test/wsdl/map/test_map.rb +99 -0
  556. data/test/wsdl/marshal/Person.rb +1 -0
  557. data/test/wsdl/marshal/person.wsdl +21 -0
  558. data/test/wsdl/marshal/person_org.rb +23 -0
  559. data/test/wsdl/marshal/test_wsdlmarshal.rb +76 -0
  560. data/test/wsdl/multiplefault.wsdl +75 -0
  561. data/test/wsdl/oneway/oneway.wsdl +36 -0
  562. data/test/wsdl/oneway/test_oneway.rb +108 -0
  563. data/test/wsdl/overload/expectedClient.rb +37 -0
  564. data/test/wsdl/overload/expectedDriver.rb +61 -0
  565. data/test/wsdl/overload/expectedServant.rb +35 -0
  566. data/test/wsdl/overload/overload.wsdl +70 -0
  567. data/test/wsdl/overload/test_overload.rb +131 -0
  568. data/test/wsdl/qualified/lp.wsdl +47 -0
  569. data/test/wsdl/qualified/lp.xsd +26 -0
  570. data/test/wsdl/qualified/np.wsdl +51 -0
  571. data/test/wsdl/qualified/test_qualified.rb +137 -0
  572. data/test/wsdl/qualified/test_unqualified.rb +138 -0
  573. data/test/wsdl/raa/RAAService.rb +125 -0
  574. data/test/wsdl/raa/README.txt +8 -0
  575. data/test/wsdl/raa/expectedClassDef.rb +100 -0
  576. data/test/wsdl/raa/expectedDriver.rb +96 -0
  577. data/test/wsdl/raa/expectedMappingRegistry.rb +121 -0
  578. data/test/wsdl/raa/raa.wsdl +264 -0
  579. data/test/wsdl/raa/test_raa.rb +126 -0
  580. data/test/wsdl/ref/expectedDriver.rb +51 -0
  581. data/test/wsdl/ref/expectedProduct.rb +243 -0
  582. data/test/wsdl/ref/product.wsdl +147 -0
  583. data/test/wsdl/ref/test_ref.rb +268 -0
  584. data/test/wsdl/rpc/rpc.wsdl +109 -0
  585. data/test/wsdl/rpc/test-rpc-lit.wsdl +371 -0
  586. data/test/wsdl/rpc/test_rpc.rb +176 -0
  587. data/test/wsdl/rpc/test_rpc_lit.rb +470 -0
  588. data/test/wsdl/simplecontent/simplecontent.wsdl +84 -0
  589. data/test/wsdl/simplecontent/test_simplecontent.rb +102 -0
  590. data/test/wsdl/simpletype/rpc/echo_version.rb +1 -0
  591. data/test/wsdl/simpletype/rpc/echo_versionDriver.rb +10 -0
  592. data/test/wsdl/simpletype/rpc/echo_versionMappingRegistry.rb +4 -0
  593. data/test/wsdl/simpletype/rpc/echo_versionServant.rb +3 -0
  594. data/test/wsdl/simpletype/rpc/echo_version_service.rb +3 -0
  595. data/test/wsdl/simpletype/rpc/echo_version_serviceClient.rb +34 -0
  596. data/test/wsdl/simpletype/rpc/expectedClient.rb +34 -0
  597. data/test/wsdl/simpletype/rpc/expectedDriver.rb +58 -0
  598. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +36 -0
  599. data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +57 -0
  600. data/test/wsdl/simpletype/rpc/expectedServant.rb +32 -0
  601. data/test/wsdl/simpletype/rpc/expectedService.rb +55 -0
  602. data/test/wsdl/simpletype/rpc/rpc.wsdl +98 -0
  603. data/test/wsdl/simpletype/rpc/test_rpc.rb +52 -0
  604. data/test/wsdl/simpletype/simpletype.wsdl +114 -0
  605. data/test/wsdl/simpletype/test_simpletype.rb +92 -0
  606. data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
  607. data/test/wsdl/soap/test_soapbodyparts.rb +79 -0
  608. data/test/wsdl/soap/wsdl2ruby/echo_version.rb +1 -0
  609. data/test/wsdl/soap/wsdl2ruby/echo_versionDriver.rb +10 -0
  610. data/test/wsdl/soap/wsdl2ruby/echo_versionMappingRegistry.rb +4 -0
  611. data/test/wsdl/soap/wsdl2ruby/echo_versionServant.rb +3 -0
  612. data/test/wsdl/soap/wsdl2ruby/echo_version_service.cgi +3 -0
  613. data/test/wsdl/soap/wsdl2ruby/echo_version_service.rb +7 -0
  614. data/test/wsdl/soap/wsdl2ruby/echo_version_serviceClient.rb +34 -0
  615. data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +21 -0
  616. data/test/wsdl/soap/wsdl2ruby/expectedClient.rb +34 -0
  617. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +58 -0
  618. data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +36 -0
  619. data/test/wsdl/soap/wsdl2ruby/expectedServant.rb +32 -0
  620. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +48 -0
  621. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +55 -0
  622. data/test/wsdl/soap/wsdl2ruby/rpc.wsdl +80 -0
  623. data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +37 -0
  624. data/test/wsdl/soap/wsdl2ruby/section/section.xsd +31 -0
  625. data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +53 -0
  626. data/test/wsdl/soap/wsdl2ruby/soapenc/soapenc.wsdl +64 -0
  627. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +83 -0
  628. data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +102 -0
  629. data/test/wsdl/soaptype/soaptype.wsdl +61 -0
  630. data/test/wsdl/soaptype/test_soaptype.rb +178 -0
  631. data/test/wsdl/test_emptycomplextype.rb +21 -0
  632. data/test/wsdl/test_fault.rb +50 -0
  633. data/test/wsdl/test_multiplefault.rb +41 -0
  634. data/test/xsd/codegen/test_classdef.rb +244 -0
  635. data/test/xsd/noencoding.xml +4 -0
  636. data/test/xsd/test_noencoding.rb +32 -0
  637. data/test/xsd/test_ns.rb +41 -0
  638. data/test/xsd/test_xmlschemaparser.rb +22 -0
  639. data/test/xsd/test_xsd.rb +1638 -0
  640. data/test/xsd/xmllang.xml +43 -0
  641. data/test/xsd/xmlschema.xml +12 -0
  642. data/test/xsd/xsd2ruby/expected_mysample.rb +65 -0
  643. data/test/xsd/xsd2ruby/expected_mysample_mapper.rb +11 -0
  644. data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +51 -0
  645. data/test/xsd/xsd2ruby/section.xsd +49 -0
  646. data/test/xsd/xsd2ruby/test_xsd2ruby.rb +90 -0
  647. metadata +958 -0
@@ -0,0 +1,68 @@
1
+ # SOAP4R - A method definition
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ module SOAP
10
+ module RPC
11
+
12
+
13
+ class MethodDef
14
+ attr_reader :name
15
+ attr_reader :soapaction
16
+ attr_reader :qname
17
+ attr_accessor :style
18
+ attr_accessor :inputuse
19
+ attr_accessor :outputuse
20
+ attr_reader :parameters
21
+ attr_reader :faults
22
+
23
+ def initialize(name, soapaction, qname)
24
+ @name = name
25
+ @soapaction = soapaction
26
+ @qname = qname
27
+ @style = @inputuse = @outputuse = nil
28
+ @parameters = []
29
+ @faults = {}
30
+ end
31
+
32
+ def add_parameter(io_type, name, qname, mapped_class)
33
+ @parameters << Parameter.new(io_type, name, qname, mapped_class)
34
+ end
35
+
36
+ def self.to_param(param)
37
+ if param.respond_to?(:io_type)
38
+ param
39
+ else
40
+ io_type, name, param_type = param
41
+ mapped_class_str, nsdef, namedef = param_type
42
+ if nsdef && namedef
43
+ qname = XSD::QName.new(nsdef, namedef)
44
+ else
45
+ qname = nil
46
+ end
47
+ MethodDef::Parameter.new(io_type.to_sym, name, qname, mapped_class_str)
48
+ end
49
+ end
50
+
51
+ class Parameter
52
+ attr_reader :io_type
53
+ attr_reader :name
54
+ attr_reader :qname
55
+ attr_reader :mapped_class
56
+
57
+ def initialize(io_type, name, qname, mapped_class)
58
+ @io_type = io_type
59
+ @name = name
60
+ @qname = qname
61
+ @mapped_class = mapped_class
62
+ end
63
+ end
64
+ end
65
+
66
+
67
+ end
68
+ end
@@ -0,0 +1,572 @@
1
+ # SOAP4R - RPC Proxy library.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require 'soap/soap'
10
+ require 'soap/processor'
11
+ require 'soap/mapping'
12
+ require 'soap/mapping/literalregistry'
13
+ require 'soap/rpc/rpc'
14
+ require 'soap/rpc/element'
15
+ require 'soap/header/handlerset'
16
+ require 'soap/filter'
17
+ require 'soap/streamHandler'
18
+ require 'soap/mimemessage'
19
+
20
+
21
+ module SOAP
22
+ module RPC
23
+
24
+
25
+ class Proxy
26
+ include SOAP
27
+
28
+ public
29
+
30
+ attr_accessor :soapaction
31
+ attr_accessor :mandatorycharset
32
+ attr_accessor :allow_unqualified_element
33
+ attr_accessor :default_encodingstyle
34
+ attr_accessor :generate_explicit_type
35
+ attr_accessor :use_default_namespace
36
+ attr_accessor :return_response_as_xml
37
+ attr_reader :headerhandler
38
+ attr_reader :filterchain
39
+ attr_reader :streamhandler
40
+
41
+ attr_accessor :mapping_registry
42
+ attr_accessor :literal_mapping_registry
43
+
44
+ attr_reader :operation
45
+
46
+ def initialize(endpoint_url, soapaction, options)
47
+ @endpoint_url = endpoint_url
48
+ @soapaction = soapaction
49
+ @options = options
50
+ @protocol_option = options["protocol"] ||= ::SOAP::Property.new
51
+ initialize_streamhandler(@protocol_option)
52
+ @operation = {}
53
+ @operation_by_qname = {}
54
+ @operation_by_soapaction = {}
55
+ @mandatorycharset = nil
56
+ # TODO: set to false by default or drop thie option in 1.6.0
57
+ @allow_unqualified_element = true
58
+ @default_encodingstyle = nil
59
+ @generate_explicit_type = nil
60
+ @use_default_namespace = false
61
+ @return_response_as_xml = false
62
+ @headerhandler = Header::HandlerSet.new
63
+ @filterchain = Filter::FilterChain.new
64
+ @mapping_registry = nil
65
+ @literal_mapping_registry = ::SOAP::Mapping::LiteralRegistry.new
66
+ end
67
+
68
+ def inspect
69
+ "#<#{self.class}:#{@endpoint_url}>"
70
+ end
71
+
72
+ def endpoint_url
73
+ @endpoint_url
74
+ end
75
+
76
+ def endpoint_url=(endpoint_url)
77
+ @endpoint_url = endpoint_url
78
+ reset_stream
79
+ end
80
+
81
+ def reset_stream
82
+ @streamhandler.reset(@endpoint_url)
83
+ end
84
+
85
+ def set_wiredump_file_base(wiredump_file_base)
86
+ @streamhandler.wiredump_file_base = wiredump_file_base
87
+ end
88
+
89
+ def test_loopback_response
90
+ @streamhandler.test_loopback_response
91
+ end
92
+
93
+ def add_rpc_operation(qname, soapaction, name, param_def, opt = {})
94
+ ensure_styleuse_option(opt, :rpc, :encoded)
95
+ opt[:request_qname] = qname
96
+ op = Operation.new(soapaction, param_def, opt)
97
+ assign_operation(name, qname, soapaction, op)
98
+ end
99
+
100
+ def add_document_operation(soapaction, name, param_def, opt = {})
101
+ ensure_styleuse_option(opt, :document, :literal)
102
+ op = Operation.new(soapaction, param_def, opt)
103
+ assign_operation(name, nil, soapaction, op)
104
+ end
105
+
106
+ # add_method is for shortcut of typical rpc/encoded method definition.
107
+ alias add_method add_rpc_operation
108
+ alias add_rpc_method add_rpc_operation
109
+ alias add_document_method add_document_operation
110
+
111
+ def invoke(req_header, req_body, opt = nil)
112
+ opt ||= create_encoding_opt
113
+ env = route(req_header, req_body, opt, opt)
114
+ if @return_response_as_xml
115
+ opt[:response_as_xml]
116
+ else
117
+ env
118
+ end
119
+ end
120
+
121
+ def call(name, *params)
122
+ # name must be used only for lookup
123
+ op_info = lookup_operation(name)
124
+ mapping_opt = create_mapping_opt
125
+ req_header = create_request_header
126
+ req_body = SOAPBody.new(
127
+ op_info.request_body(params, @mapping_registry,
128
+ @literal_mapping_registry, mapping_opt)
129
+ )
130
+ reqopt = create_encoding_opt(
131
+ :soapaction => op_info.soapaction || @soapaction,
132
+ :envelopenamespace => @options["soap.envelope.requestnamespace"],
133
+ :default_encodingstyle =>
134
+ @default_encodingstyle || op_info.request_default_encodingstyle,
135
+ :use_default_namespace =>
136
+ op_info.use_default_namespace || @use_default_namespace
137
+ )
138
+ resopt = create_encoding_opt(
139
+ :envelopenamespace => @options["soap.envelope.responsenamespace"],
140
+ :default_encodingstyle =>
141
+ @default_encodingstyle || op_info.response_default_encodingstyle
142
+ )
143
+ if reqopt[:generate_explicit_type].nil?
144
+ reqopt[:generate_explicit_type] = (op_info.request_use == :encoded)
145
+ end
146
+ if resopt[:generate_explicit_type].nil?
147
+ resopt[:generate_explicit_type] = (op_info.response_use == :encoded)
148
+ end
149
+ env = route(req_header, req_body, reqopt, resopt)
150
+ if op_info.response_use.nil?
151
+ return nil
152
+ end
153
+ raise EmptyResponseError unless env
154
+ receive_headers(env.header)
155
+ begin
156
+ check_fault(env.body)
157
+ rescue ::SOAP::FaultError => e
158
+ op_info.raise_fault(e, @mapping_registry, @literal_mapping_registry)
159
+ end
160
+ if @return_response_as_xml
161
+ resopt[:response_as_xml]
162
+ else
163
+ op_info.response_obj(env.body, @mapping_registry,
164
+ @literal_mapping_registry, mapping_opt)
165
+ end
166
+ end
167
+
168
+ def route(req_header, req_body, reqopt, resopt)
169
+ req_env = ::SOAP::SOAPEnvelope.new(req_header, req_body)
170
+ unless reqopt[:envelopenamespace].nil?
171
+ set_envelopenamespace(req_env, reqopt[:envelopenamespace])
172
+ end
173
+ reqopt[:external_content] = nil
174
+ conn_data = marshal(req_env, reqopt)
175
+ if ext = reqopt[:external_content]
176
+ mime = MIMEMessage.new
177
+ ext.each do |k, v|
178
+ mime.add_attachment(v.data)
179
+ end
180
+ mime.add_part(conn_data.send_string + "\r\n")
181
+ mime.close
182
+ conn_data.send_string = mime.content_str
183
+ conn_data.send_contenttype = mime.headers['content-type'].str
184
+ end
185
+ conn_data.soapaction = reqopt[:soapaction]
186
+ conn_data = @streamhandler.send(@endpoint_url, conn_data)
187
+ if conn_data.receive_string.empty?
188
+ return nil
189
+ end
190
+ unmarshal(conn_data, resopt)
191
+ end
192
+
193
+ def check_fault(body)
194
+ if body.fault
195
+ raise SOAP::FaultError.new(body.fault)
196
+ end
197
+ end
198
+
199
+ private
200
+
201
+ def ensure_styleuse_option(opt, style, use)
202
+ if opt[:request_style] || opt[:response_style] || opt[:request_use] || opt[:response_use]
203
+ # do not edit
204
+ else
205
+ opt[:request_style] ||= style
206
+ opt[:response_style] ||= style
207
+ opt[:request_use] ||= use
208
+ opt[:response_use] ||= use
209
+ end
210
+ end
211
+
212
+ def initialize_streamhandler(options)
213
+ value = options["streamhandler"]
214
+ if value and !value.empty?
215
+ factory = Property::Util.const_from_name(value)
216
+ else
217
+ factory = HTTPStreamHandler
218
+ end
219
+ @streamhandler = factory.create(options)
220
+ options.add_hook("streamhandler") do |key, value|
221
+ @streamhandler.reset
222
+ if value.respond_to?(:create)
223
+ factory = value
224
+ elsif value and !value.to_str.empty?
225
+ factory = Property::Util.const_from_name(value.to_str)
226
+ else
227
+ factory = HTTPStreamHandler
228
+ end
229
+ options.unlock(true)
230
+ @streamhandler = factory.create(options)
231
+ end
232
+ end
233
+
234
+ def set_envelopenamespace(env, namespace)
235
+ env.elename = XSD::QName.new(namespace, env.elename.name)
236
+ if env.header
237
+ env.header.elename = XSD::QName.new(namespace, env.header.elename.name)
238
+ end
239
+ if env.body
240
+ env.body.elename = XSD::QName.new(namespace, env.body.elename.name)
241
+ end
242
+ end
243
+
244
+ def create_request_header
245
+ header = ::SOAP::SOAPHeader.new
246
+ items = @headerhandler.on_outbound(header)
247
+ items.each do |item|
248
+ header.add(item.elename.name, item)
249
+ end
250
+ header
251
+ end
252
+
253
+ def receive_headers(header)
254
+ @headerhandler.on_inbound(header) if header
255
+ end
256
+
257
+ def marshal(env, opt)
258
+ @filterchain.each do |filter|
259
+ env = filter.on_outbound(env, opt)
260
+ break unless env
261
+ end
262
+ send_string = Processor.marshal(env, opt)
263
+ StreamHandler::ConnectionData.new(send_string)
264
+ end
265
+
266
+ def unmarshal(conn_data, opt)
267
+ contenttype = conn_data.receive_contenttype
268
+ xml = nil
269
+ if /#{MIMEMessage::MultipartContentType}/i =~ contenttype
270
+ opt[:external_content] = {}
271
+ mime = MIMEMessage.parse("Content-Type: " + contenttype,
272
+ conn_data.receive_string)
273
+ mime.parts.each do |part|
274
+ value = Attachment.new(part.content)
275
+ value.contentid = part.contentid
276
+ obj = SOAPAttachment.new(value)
277
+ opt[:external_content][value.contentid] = obj if value.contentid
278
+ end
279
+ opt[:charset] = @mandatorycharset ||
280
+ StreamHandler.parse_media_type(mime.root.headers['content-type'].str)
281
+ xml = mime.root.content
282
+ else
283
+ opt[:charset] = @mandatorycharset ||
284
+ ::SOAP::StreamHandler.parse_media_type(contenttype)
285
+ xml = conn_data.receive_string
286
+ end
287
+ @filterchain.reverse_each do |filter|
288
+ xml = filter.on_inbound(xml, opt)
289
+ break unless xml
290
+ end
291
+ env = Processor.unmarshal(xml, opt)
292
+ if @return_response_as_xml
293
+ opt[:response_as_xml] = xml
294
+ end
295
+ unless env.is_a?(::SOAP::SOAPEnvelope)
296
+ raise ResponseFormatError.new("response is not a SOAP envelope: #{env}")
297
+ end
298
+ env
299
+ end
300
+
301
+ def create_encoding_opt(hash = nil)
302
+ opt = {}
303
+ opt[:default_encodingstyle] = @default_encodingstyle
304
+ opt[:allow_unqualified_element] = @allow_unqualified_element
305
+ opt[:generate_explicit_type] = @generate_explicit_type
306
+ opt[:no_indent] = @options["soap.envelope.no_indent"]
307
+ opt[:use_numeric_character_reference] =
308
+ @options["soap.envelope.use_numeric_character_reference"]
309
+ opt.update(hash) if hash
310
+ opt
311
+ end
312
+
313
+ def create_mapping_opt(hash = nil)
314
+ opt = {
315
+ :external_ces => @options["soap.mapping.external_ces"]
316
+ }
317
+ opt.update(hash) if hash
318
+ opt
319
+ end
320
+
321
+ def assign_operation(name, qname, soapaction, op)
322
+ assigned = false
323
+ if name and !name.empty?
324
+ @operation[name] = op
325
+ assigned = true
326
+ end
327
+ if qname
328
+ @operation_by_qname[qname] = op
329
+ assigned = true
330
+ end
331
+ if soapaction and !soapaction.empty?
332
+ @operation_by_soapaction[soapaction] = op
333
+ assigned = true
334
+ end
335
+ unless assigned
336
+ raise MethodDefinitionError.new("cannot assign operation")
337
+ end
338
+ end
339
+
340
+ def lookup_operation(name_or_qname_or_soapaction)
341
+ if op = @operation[name_or_qname_or_soapaction]
342
+ return op
343
+ end
344
+ if op = @operation_by_qname[name_or_qname_or_soapaction]
345
+ return op
346
+ end
347
+ if op = @operation_by_soapaction[name_or_qname_or_soapaction]
348
+ return op
349
+ end
350
+ raise MethodDefinitionError.new(
351
+ "operation: #{name_or_qname_or_soapaction} not supported")
352
+ end
353
+
354
+ class Operation
355
+ attr_reader :soapaction
356
+ attr_reader :request_style
357
+ attr_reader :response_style
358
+ attr_reader :request_use
359
+ attr_reader :response_use
360
+ attr_reader :use_default_namespace
361
+
362
+ def initialize(soapaction, param_def, opt)
363
+ @soapaction = soapaction
364
+ @request_style = opt[:request_style]
365
+ @response_style = opt[:response_style]
366
+ @request_use = opt[:request_use]
367
+ @response_use = opt[:response_use]
368
+ @use_default_namespace =
369
+ opt[:use_default_namespace] || opt[:elementformdefault]
370
+ if opt.key?(:elementformdefault)
371
+ warn("option :elementformdefault is deprecated. use :use_default_namespace instead")
372
+ end
373
+ check_style(@request_style)
374
+ check_style(@response_style)
375
+ check_use(@request_use)
376
+ check_use(@response_use)
377
+ if @request_style == :rpc
378
+ @rpc_request_qname = opt[:request_qname]
379
+ if @rpc_request_qname.nil?
380
+ raise MethodDefinitionError.new("rpc_request_qname must be given")
381
+ end
382
+ @rpc_method_factory =
383
+ RPC::SOAPMethodRequest.new(@rpc_request_qname, param_def, @soapaction)
384
+ else
385
+ @doc_request_qnames = []
386
+ @doc_response_qnames = []
387
+ param_def.each do |param|
388
+ param = MethodDef.to_param(param)
389
+ case param.io_type
390
+ when SOAPMethod::IN
391
+ @doc_request_qnames << param.qname
392
+ when SOAPMethod::OUT
393
+ @doc_response_qnames << param.qname
394
+ else
395
+ raise MethodDefinitionError.new(
396
+ "illegal inout definition for document style: #{param.io_type}")
397
+ end
398
+ end
399
+ end
400
+ end
401
+
402
+ def request_default_encodingstyle
403
+ (@request_use == :encoded) ? EncodingNamespace : LiteralNamespace
404
+ end
405
+
406
+ def response_default_encodingstyle
407
+ (@response_use == :encoded) ? EncodingNamespace : LiteralNamespace
408
+ end
409
+
410
+ def request_body(values, mapping_registry, literal_mapping_registry, opt)
411
+ if @request_style == :rpc
412
+ request_rpc(values, mapping_registry, literal_mapping_registry, opt)
413
+ else
414
+ request_doc(values, mapping_registry, literal_mapping_registry, opt)
415
+ end
416
+ end
417
+
418
+ def response_obj(body, mapping_registry, literal_mapping_registry, opt)
419
+ if @response_style == :rpc
420
+ response_rpc(body, mapping_registry, literal_mapping_registry, opt)
421
+ else
422
+ unique_result_for_one_element_array(
423
+ response_doc(body, mapping_registry, literal_mapping_registry, opt))
424
+ end
425
+ end
426
+
427
+ def raise_fault(e, mapping_registry, literal_mapping_registry)
428
+ if @response_style == :rpc
429
+ Mapping.fault2exception(e, mapping_registry)
430
+ else
431
+ Mapping.fault2exception(e, literal_mapping_registry)
432
+ end
433
+ end
434
+
435
+ private
436
+
437
+ # nil for [] / 1 for [1] / [1, 2] for [1, 2]
438
+ def unique_result_for_one_element_array(ary)
439
+ ary.size <= 1 ? ary[0] : ary
440
+ end
441
+
442
+ def check_style(style)
443
+ unless [:rpc, :document].include?(style)
444
+ raise MethodDefinitionError.new("unknown style: #{style}")
445
+ end
446
+ end
447
+
448
+ # nil means oneway
449
+ def check_use(use)
450
+ unless [:encoded, :literal, nil].include?(use)
451
+ raise MethodDefinitionError.new("unknown use: #{use}")
452
+ end
453
+ end
454
+
455
+ def request_rpc(values, mapping_registry, literal_mapping_registry, opt)
456
+ if @request_use == :encoded
457
+ request_rpc_enc(values, mapping_registry, opt)
458
+ else
459
+ request_rpc_lit(values, literal_mapping_registry, opt)
460
+ end
461
+ end
462
+
463
+ def request_doc(values, mapping_registry, literal_mapping_registry, opt)
464
+ if @request_use == :encoded
465
+ request_doc_enc(values, mapping_registry, opt)
466
+ else
467
+ request_doc_lit(values, literal_mapping_registry, opt)
468
+ end
469
+ end
470
+
471
+ def request_rpc_enc(values, mapping_registry, opt)
472
+ method = @rpc_method_factory.dup
473
+ names = method.input_params
474
+ types = method.input_param_types
475
+ ary = Mapping.objs2soap(values, mapping_registry, types, opt)
476
+ soap = {}
477
+ 0.upto(ary.length - 1) do |idx|
478
+ soap[names[idx]] = ary[idx]
479
+ end
480
+ method.set_param(soap)
481
+ method
482
+ end
483
+
484
+ def request_rpc_lit(values, mapping_registry, opt)
485
+ method = @rpc_method_factory.dup
486
+ names = method.input_params
487
+ types = method.get_paramtypes(names)
488
+ params = {}
489
+ idx = 0
490
+ names.each do |name|
491
+ params[name] = Mapping.obj2soap(values[idx], mapping_registry,
492
+ types[idx], opt)
493
+ params[name].elename = XSD::QName.new(nil, name)
494
+ idx += 1
495
+ end
496
+ method.set_param(params)
497
+ method
498
+ end
499
+
500
+ def request_doc_enc(values, mapping_registry, opt)
501
+ (0...values.size).collect { |idx|
502
+ ele = Mapping.obj2soap(values[idx], mapping_registry, nil, opt)
503
+ ele.elename = @doc_request_qnames[idx]
504
+ ele
505
+ }
506
+ end
507
+
508
+ def request_doc_lit(values, mapping_registry, opt)
509
+ (0...values.size).collect { |idx|
510
+ ele = Mapping.obj2soap(values[idx], mapping_registry,
511
+ @doc_request_qnames[idx], opt)
512
+ ele.encodingstyle = LiteralNamespace
513
+ ele
514
+ }
515
+ end
516
+
517
+ def response_rpc(body, mapping_registry, literal_mapping_registry, opt)
518
+ if @response_use == :encoded
519
+ response_rpc_enc(body, mapping_registry, opt)
520
+ else
521
+ response_rpc_lit(body, literal_mapping_registry, opt)
522
+ end
523
+ end
524
+
525
+ def response_doc(body, mapping_registry, literal_mapping_registry, opt)
526
+ if @response_use == :encoded
527
+ response_doc_enc(body, mapping_registry, opt)
528
+ else
529
+ response_doc_lit(body, literal_mapping_registry, opt)
530
+ end
531
+ end
532
+
533
+ def response_rpc_enc(body, mapping_registry, opt)
534
+ ret = nil
535
+ if body.response
536
+ ret = Mapping.soap2obj(body.response, mapping_registry,
537
+ @rpc_method_factory.retval_class_name, opt)
538
+ end
539
+ if body.outparams
540
+ outparams = body.outparams.collect { |outparam|
541
+ Mapping.soap2obj(outparam, mapping_registry, nil, opt)
542
+ }
543
+ [ret].concat(outparams)
544
+ else
545
+ ret
546
+ end
547
+ end
548
+
549
+ def response_rpc_lit(body, mapping_registry, opt)
550
+ body.root_node.collect { |key, value|
551
+ Mapping.soap2obj(value, mapping_registry,
552
+ @rpc_method_factory.retval_class_name, opt)
553
+ }
554
+ end
555
+
556
+ def response_doc_enc(body, mapping_registry, opt)
557
+ body.collect { |key, value|
558
+ Mapping.soap2obj(value, mapping_registry, nil, opt)
559
+ }
560
+ end
561
+
562
+ def response_doc_lit(body, mapping_registry, opt)
563
+ body.collect { |key, value|
564
+ Mapping.soap2obj(value, mapping_registry)
565
+ }
566
+ end
567
+ end
568
+ end
569
+
570
+
571
+ end
572
+ end