soap4r 1.5.5.20061022 → 1.5.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (311) hide show
  1. data/bin/wsdl2ruby.rb +8 -8
  2. data/lib/soap/XMLSchemaDatatypes.rb +1 -1
  3. data/lib/soap/XMLSchemaDatatypes1999.rb +1 -1
  4. data/lib/soap/attachment.rb +1 -1
  5. data/lib/soap/baseData.rb +102 -54
  6. data/lib/soap/cgistub.rb +1 -1
  7. data/lib/soap/charset.rb +1 -1
  8. data/lib/soap/driver.rb +1 -1
  9. data/lib/soap/element.rb +20 -12
  10. data/lib/soap/encodingstyle/aspDotNetHandler.rb +2 -2
  11. data/lib/soap/encodingstyle/handler.rb +1 -1
  12. data/lib/soap/encodingstyle/literalHandler.rb +29 -73
  13. data/lib/soap/encodingstyle/soapHandler.rb +8 -7
  14. data/lib/soap/filter.rb +10 -0
  15. data/lib/soap/filter/filterchain.rb +51 -0
  16. data/lib/soap/filter/handler.rb +31 -0
  17. data/lib/soap/generator.rb +11 -3
  18. data/lib/soap/header/handler.rb +6 -5
  19. data/lib/soap/header/handlerset.rb +7 -7
  20. data/lib/soap/header/simplehandler.rb +1 -1
  21. data/lib/soap/httpconfigloader.rb +7 -2
  22. data/lib/soap/mapping.rb +1 -1
  23. data/lib/soap/mapping/encodedregistry.rb +36 -26
  24. data/lib/soap/mapping/encodedregistry.rb~ +531 -0
  25. data/lib/soap/mapping/factory.rb +2 -2
  26. data/lib/soap/mapping/literalregistry.rb +107 -67
  27. data/lib/soap/mapping/mapping.rb +92 -112
  28. data/lib/soap/mapping/registry.rb +25 -8
  29. data/lib/soap/mapping/rubytypeFactory.rb +1 -1
  30. data/lib/soap/mapping/schemadefinition.rb +163 -0
  31. data/lib/soap/mapping/typeMap.rb +7 -1
  32. data/lib/soap/mapping/wsdlencodedregistry.rb +2 -2
  33. data/lib/soap/mapping/wsdlliteralregistry.rb +14 -23
  34. data/lib/soap/mappingRegistry.rb +1 -1
  35. data/lib/soap/marshal.rb +1 -1
  36. data/lib/soap/namespace.rb +1 -1
  37. data/lib/soap/netHttpClient.rb +43 -13
  38. data/lib/soap/parser.rb +40 -42
  39. data/lib/soap/processor.rb +1 -1
  40. data/lib/soap/property.rb +7 -7
  41. data/lib/soap/proxy.rb +1 -1
  42. data/lib/soap/qname.rb +1 -1
  43. data/lib/soap/rpc/cgistub.rb +34 -1
  44. data/lib/soap/rpc/driver.rb +2 -1
  45. data/lib/soap/rpc/element.rb +42 -15
  46. data/lib/soap/rpc/httpserver.rb +13 -1
  47. data/lib/soap/rpc/proxy.rb +51 -41
  48. data/lib/soap/rpc/router.rb +88 -33
  49. data/lib/soap/rpc/rpc.rb +1 -1
  50. data/lib/soap/rpc/soaplet.rb +51 -3
  51. data/lib/soap/rpc/standaloneServer.rb +1 -1
  52. data/lib/soap/rpcRouter.rb +1 -1
  53. data/lib/soap/rpcUtils.rb +1 -1
  54. data/lib/soap/server.rb +1 -1
  55. data/lib/soap/soap.rb +2 -2
  56. data/lib/soap/standaloneServer.rb +1 -1
  57. data/lib/soap/streamHandler.rb +13 -4
  58. data/lib/soap/wsdlDriver.rb +11 -15
  59. data/lib/tags +5144 -0
  60. data/lib/wsdl/binding.rb +1 -1
  61. data/lib/wsdl/data.rb +1 -1
  62. data/lib/wsdl/definitions.rb +1 -1
  63. data/lib/wsdl/documentation.rb +1 -1
  64. data/lib/wsdl/import.rb +1 -1
  65. data/lib/wsdl/importer.rb +1 -1
  66. data/lib/wsdl/info.rb +1 -1
  67. data/lib/wsdl/message.rb +1 -1
  68. data/lib/wsdl/operation.rb +10 -7
  69. data/lib/wsdl/operationBinding.rb +19 -5
  70. data/lib/wsdl/param.rb +11 -3
  71. data/lib/wsdl/parser.rb +4 -3
  72. data/lib/wsdl/part.rb +1 -1
  73. data/lib/wsdl/port.rb +1 -1
  74. data/lib/wsdl/portType.rb +1 -1
  75. data/lib/wsdl/service.rb +1 -1
  76. data/lib/wsdl/soap/address.rb +1 -1
  77. data/lib/wsdl/soap/binding.rb +1 -1
  78. data/lib/wsdl/soap/body.rb +3 -1
  79. data/lib/wsdl/soap/cgiStubCreator.rb +1 -1
  80. data/lib/wsdl/soap/classDefCreator.rb +78 -14
  81. data/lib/wsdl/soap/classDefCreatorSupport.rb +28 -11
  82. data/lib/wsdl/soap/clientSkeltonCreator.rb +3 -2
  83. data/lib/wsdl/soap/complexType.rb +8 -11
  84. data/lib/wsdl/soap/data.rb +1 -1
  85. data/lib/wsdl/soap/definitions.rb +49 -4
  86. data/lib/wsdl/soap/driverCreator.rb +1 -1
  87. data/lib/wsdl/soap/element.rb +3 -2
  88. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +1 -1
  89. data/lib/wsdl/soap/fault.rb +1 -1
  90. data/lib/wsdl/soap/header.rb +1 -1
  91. data/lib/wsdl/soap/headerfault.rb +1 -1
  92. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +41 -21
  93. data/lib/wsdl/soap/mappingRegistryCreator.rb +2 -1
  94. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +45 -19
  95. data/lib/wsdl/soap/methodDefCreator.rb +28 -17
  96. data/lib/wsdl/soap/operation.rb +11 -11
  97. data/lib/wsdl/soap/servantSkeltonCreator.rb +3 -2
  98. data/lib/wsdl/soap/standaloneServerStubCreator.rb +1 -1
  99. data/lib/wsdl/soap/wsdl2ruby.rb +8 -2
  100. data/lib/wsdl/types.rb +1 -1
  101. data/lib/wsdl/wsdl.rb +1 -1
  102. data/lib/wsdl/xmlSchema/all.rb +1 -1
  103. data/lib/wsdl/xmlSchema/annotation.rb +1 -1
  104. data/lib/wsdl/xmlSchema/any.rb +10 -5
  105. data/lib/wsdl/xmlSchema/attribute.rb +1 -1
  106. data/lib/wsdl/xmlSchema/choice.rb +1 -1
  107. data/lib/wsdl/xmlSchema/complexContent.rb +11 -2
  108. data/lib/wsdl/xmlSchema/complexExtension.rb +8 -1
  109. data/lib/wsdl/xmlSchema/complexRestriction.rb +6 -2
  110. data/lib/wsdl/xmlSchema/complexType.rb +9 -1
  111. data/lib/wsdl/xmlSchema/content.rb +26 -5
  112. data/lib/wsdl/xmlSchema/data.rb +4 -1
  113. data/lib/wsdl/xmlSchema/element.rb +12 -9
  114. data/lib/wsdl/xmlSchema/enumeration.rb +1 -1
  115. data/lib/wsdl/xmlSchema/import.rb +1 -1
  116. data/lib/wsdl/xmlSchema/importer.rb +9 -6
  117. data/lib/wsdl/xmlSchema/include.rb +1 -1
  118. data/lib/wsdl/xmlSchema/length.rb +1 -1
  119. data/lib/wsdl/xmlSchema/list.rb +1 -1
  120. data/lib/wsdl/xmlSchema/maxlength.rb +1 -1
  121. data/lib/wsdl/xmlSchema/minlength.rb +1 -1
  122. data/lib/wsdl/xmlSchema/parser.rb +4 -3
  123. data/lib/wsdl/xmlSchema/pattern.rb +1 -1
  124. data/lib/wsdl/xmlSchema/schema.rb +1 -1
  125. data/lib/wsdl/xmlSchema/sequence.rb +1 -1
  126. data/lib/wsdl/xmlSchema/simpleContent.rb +1 -1
  127. data/lib/wsdl/xmlSchema/simpleExtension.rb +1 -1
  128. data/lib/wsdl/xmlSchema/simpleRestriction.rb +1 -1
  129. data/lib/wsdl/xmlSchema/simpleType.rb +8 -1
  130. data/lib/wsdl/xmlSchema/union.rb +35 -0
  131. data/lib/wsdl/xmlSchema/unique.rb +1 -1
  132. data/lib/wsdl/xmlSchema/xsd2ruby.rb +6 -1
  133. data/lib/xsd/charset.rb +1 -1
  134. data/lib/xsd/classloader.rb +26 -0
  135. data/lib/xsd/codegen.rb +1 -1
  136. data/lib/xsd/codegen/classdef.rb +1 -1
  137. data/lib/xsd/codegen/commentdef.rb +1 -1
  138. data/lib/xsd/codegen/gensupport.rb +119 -14
  139. data/lib/xsd/codegen/methoddef.rb +1 -1
  140. data/lib/xsd/codegen/moduledef.rb +1 -1
  141. data/lib/xsd/datatypes.rb +52 -13
  142. data/lib/xsd/datatypes1999.rb +1 -1
  143. data/lib/xsd/iconvcharset.rb +1 -1
  144. data/lib/xsd/mapping.rb +1 -1
  145. data/lib/xsd/namedelements.rb +1 -1
  146. data/lib/xsd/ns.rb +2 -2
  147. data/lib/xsd/qname.rb +1 -1
  148. data/lib/xsd/xmlparser.rb +16 -3
  149. data/lib/xsd/xmlparser/parser.rb +6 -2
  150. data/lib/xsd/xmlparser/rexmlparser.rb +5 -1
  151. data/lib/xsd/xmlparser/xmlparser.rb +1 -1
  152. data/lib/xsd/xmlparser/xmlscanner.rb +4 -2
  153. data/test/interopR2/InteropTest.rb +83 -0
  154. data/test/interopR2/InteropTest.wsdl +315 -0
  155. data/test/interopR2/InteropTestC.wsdl +208 -0
  156. data/test/interopR2/InteropTestDriver.rb +328 -0
  157. data/test/interopR2/SOAP4R_SOAPBuildersInteropTest_R2.wsdl +461 -0
  158. data/test/interopR2/SOAP4R_SOAPBuildersInteropTest_R2GroupB.wsdl +20 -0
  159. data/test/interopR2/SOAP4R_SOAPBuildersInteropTest_R2GroupCClient.rb +178 -0
  160. data/test/interopR2/SOAPBuildersInterop_R2GrC.wsdl +17 -0
  161. data/test/interopR2/clientBase.rb +0 -3
  162. data/test/interopR2/groupc.wsdl +17 -0
  163. data/test/interopR2/result_client.NetRemoting.txt +0 -4593
  164. data/test/interopR2/test.sh +9 -9
  165. data/test/runner.rb +1 -3
  166. data/test/soap/asp.net/test_aspdotnet.rb +20 -9
  167. data/test/soap/case/test_mapping.rb +57 -0
  168. data/test/soap/filter/test_filter.rb +146 -0
  169. data/test/soap/literalArrayMapping/test_definedarray.rb +7 -9
  170. data/test/soap/marshal/marshaltestlib.rb +1 -1
  171. data/test/soap/ssl/test_ssl.rb +0 -10
  172. data/test/soap/struct/test_struct.rb +2 -9
  173. data/test/soap/test_basetype.rb +114 -0
  174. data/test/soap/test_empty.rb +26 -2
  175. data/test/soap/test_envelopenamespace.rb +2 -9
  176. data/test/soap/test_extraattr.rb +55 -0
  177. data/test/soap/test_httpconfigloader.rb +17 -0
  178. data/test/soap/test_property.rb +4 -1
  179. data/test/soap/test_response_as_xml.rb +31 -9
  180. data/test/soap/test_soapelement.rb +21 -3
  181. data/test/soap/test_streamhandler.rb +3 -10
  182. data/test/soap/test_styleuse.rb +2 -9
  183. data/test/soap/wsdlDriver/test_calc.rb +3 -20
  184. data/test/soap/wsdlDriver/test_document.rb +2 -9
  185. data/test/soap/wsdlDriver/test_simpletype.rb +2 -9
  186. data/test/testutil.rb +54 -0
  187. data/test/wsdl/abstract/abstract.wsdl +82 -3
  188. data/test/wsdl/abstract/test_abstract.rb +48 -19
  189. data/test/wsdl/any/any.wsdl +63 -0
  190. data/test/wsdl/any/expectedDriver.rb +22 -1
  191. data/test/wsdl/any/expectedEcho.rb +19 -0
  192. data/test/wsdl/any/expectedService.rb +29 -4
  193. data/test/wsdl/any/test_any.rb +36 -31
  194. data/test/wsdl/choice/choice.wsdl +37 -0
  195. data/test/wsdl/choice/test_choice.rb +66 -17
  196. data/test/wsdl/complexcontent/test_echo.rb +7 -18
  197. data/test/wsdl/document/array/test_array.rb +8 -18
  198. data/test/wsdl/document/ping_nosoapaction.wsdl +1 -1
  199. data/test/wsdl/document/test_nosoapaction.rb +2 -9
  200. data/test/wsdl/document/test_number.rb +3 -10
  201. data/test/wsdl/document/test_rpc.rb +96 -21
  202. data/test/wsdl/fault/fault.wsdl +79 -0
  203. data/test/wsdl/fault/multifault.wsdl +96 -0
  204. data/test/wsdl/fault/test_fault.rb +119 -0
  205. data/test/wsdl/fault/test_multifault.rb +134 -0
  206. data/test/wsdl/list/test_list.rb +6 -16
  207. data/test/wsdl/marshal/test_wsdlmarshal.rb +10 -13
  208. data/test/wsdl/oneway/oneway.wsdl +36 -0
  209. data/test/wsdl/oneway/test_oneway.rb +108 -0
  210. data/test/wsdl/overload/test_overload.rb +3 -10
  211. data/test/wsdl/qualified/test_qualified.rb +9 -17
  212. data/test/wsdl/qualified/test_unqualified.rb +14 -21
  213. data/test/wsdl/ref/expectedDriver.rb +51 -0
  214. data/test/wsdl/ref/expectedProduct.rb +71 -71
  215. data/test/wsdl/ref/test_ref.rb +13 -35
  216. data/test/wsdl/rpc/rpc.wsdl +27 -1
  217. data/test/wsdl/rpc/test-rpc-lit-qualified.wsdl +74 -0
  218. data/test/wsdl/rpc/test-rpc-lit.wsdl +11 -4
  219. data/test/wsdl/rpc/test-rpc-lit12.wsdl +455 -0
  220. data/test/wsdl/rpc/test_rpc.rb +20 -19
  221. data/test/wsdl/rpc/test_rpc_lit.rb +82 -29
  222. data/test/wsdl/simplecontent/simplecontent.wsdl +1 -0
  223. data/test/wsdl/simplecontent/test_simplecontent.rb +5 -19
  224. data/test/wsdl/simpletype/rpc/expectedDriver.rb +6 -4
  225. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +15 -0
  226. data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +64 -0
  227. data/test/wsdl/simpletype/rpc/expectedService.rb +6 -4
  228. data/test/wsdl/simpletype/rpc/rpc.wsdl +18 -0
  229. data/test/wsdl/simpletype/rpc/test_rpc.rb +6 -16
  230. data/test/wsdl/simpletype/simpletype.wsdl +19 -0
  231. data/test/wsdl/simpletype/test_simpletype.rb +2 -9
  232. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +6 -4
  233. data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +40 -0
  234. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +6 -4
  235. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +6 -4
  236. data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +5 -6
  237. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +3 -16
  238. data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +9 -17
  239. data/test/wsdl/soaptype/test_soaptype.rb +29 -11
  240. data/test/xsd/test_xsd.rb +115 -1
  241. metadata +421 -454
  242. data/test/interopR2/client.NetRemoting.rb.result +0 -3410
  243. data/test/interopR2/client.NetRemoting_Base.log +0 -6279
  244. data/test/interopR2/client.NetRemoting_GroupB.log +0 -1188
  245. data/test/interopR2/client4S4C2_Base.log +0 -4955
  246. data/test/interopR2/client4S4C2_GroupB.log +0 -1000
  247. data/test/interopR2/client4S4C_Base.log +0 -4635
  248. data/test/interopR2/client4S4C_GroupB.log +0 -900
  249. data/test/interopR2/clientASP.NET_Base.log +0 -5468
  250. data/test/interopR2/clientASP.NET_GroupB.log +0 -977
  251. data/test/interopR2/clientApacheAxis_Base.log +0 -3171
  252. data/test/interopR2/clientApacheAxis_GroupB.log +0 -498
  253. data/test/interopR2/clientApacheSOAP_Base.log +0 -3171
  254. data/test/interopR2/clientBEAWebLogic_Base.log +0 -3171
  255. data/test/interopR2/clientBEAWebLogic_GroupB.log +0 -498
  256. data/test/interopR2/clientCapeConnect_Base.log +0 -2126
  257. data/test/interopR2/clientDelphi_Base.log +0 -0
  258. data/test/interopR2/clientEasySoap_Base.log +0 -6187
  259. data/test/interopR2/clientEasySoap_GroupB.log +0 -1076
  260. data/test/interopR2/clientFrontier_Base.log +0 -5188
  261. data/test/interopR2/clientHP_Base.log +0 -3171
  262. data/test/interopR2/clientHP_GroupB.log +0 -498
  263. data/test/interopR2/clientJSOAP_Base.log +0 -4465
  264. data/test/interopR2/clientJSOAP_GroupB.log +0 -824
  265. data/test/interopR2/clientKafkaXSLT_Base.log +0 -10299
  266. data/test/interopR2/clientKafkaXSLT_GroupB.log +0 -1739
  267. data/test/interopR2/clientMSSOAPToolkit2.0_Base.log +0 -4805
  268. data/test/interopR2/clientMSSOAPToolkit2.0_GroupB.log +0 -871
  269. data/test/interopR2/clientMSSOAPToolkit3.0_Base.log +0 -5076
  270. data/test/interopR2/clientMSSOAPToolkit3.0_GroupB.log +0 -908
  271. data/test/interopR2/clientNuSOAP_Base.log +0 -5076
  272. data/test/interopR2/clientNuSOAP_GroupB.log +0 -958
  273. data/test/interopR2/clientNuWave_Base.log +0 -2019
  274. data/test/interopR2/clientOpenLink_Base.log +0 -6171
  275. data/test/interopR2/clientOpenLink_GroupB.log +0 -1094
  276. data/test/interopR2/clientOracle_Base.log +0 -5594
  277. data/test/interopR2/clientPEAR_Base.log +0 -6261
  278. data/test/interopR2/clientPEAR_GroupB.log +0 -1106
  279. data/test/interopR2/clientPhalanx_Base.log +0 -41036
  280. data/test/interopR2/clientPhalanx_GroupB.log +0 -6519
  281. data/test/interopR2/clientSIMACE_Base.log +0 -6171
  282. data/test/interopR2/clientSIMACE_GroupB.log +0 -1093
  283. data/test/interopR2/clientSOAP4R.rb.result +0 -3409
  284. data/test/interopR2/clientSOAP4R_Base.log +0 -6366
  285. data/test/interopR2/clientSOAP4R_GroupB.log +0 -1112
  286. data/test/interopR2/clientSQLData_Base.log +0 -4857
  287. data/test/interopR2/clientSQLData_GroupB.log +0 -770
  288. data/test/interopR2/clientSilverStream_Base.log +0 -3171
  289. data/test/interopR2/clientSpray2001_Base.log +0 -8187
  290. data/test/interopR2/clientSpray2001_GroupB.log +0 -1408
  291. data/test/interopR2/clientSun_Base.log +0 -4641
  292. data/test/interopR2/clientSun_GroupB.log +0 -856
  293. data/test/interopR2/clientVWOpentalkSoap_Base.log +0 -5402
  294. data/test/interopR2/clientVWOpentalkSoap_GroupB.log +0 -972
  295. data/test/interopR2/clientWASPC_Base.log +0 -4187
  296. data/test/interopR2/clientWASPC_GroupB.log +0 -763
  297. data/test/interopR2/clientWASP_Base.log +0 -5414
  298. data/test/interopR2/clientWASP_GroupB.log +0 -970
  299. data/test/interopR2/clientWebMethods_Base.log +0 -3075
  300. data/test/interopR2/clientWebMethods_GroupB.log +0 -483
  301. data/test/interopR2/clientWhiteMesa_Base.log +0 -4359
  302. data/test/interopR2/clientWhiteMesa_GroupB.log +0 -808
  303. data/test/interopR2/clientWingfoot_Base.log +0 -4445
  304. data/test/interopR2/clientWingfoot_GroupB.log +0 -848
  305. data/test/interopR2/clientXMLBus_Base.log +0 -3075
  306. data/test/interopR2/clientXMLBus_GroupB.log +0 -483
  307. data/test/interopR2/clientXSOAP_Base.log +0 -4445
  308. data/test/interopR2/clienteSOAP_Base.log +0 -8728
  309. data/test/interopR2/clientgSOAP_Base.log +0 -4689
  310. data/test/interopR2/clientgSOAP_GroupB.log +0 -1014
  311. data/test/interopR2/clientkSOAP_Base.log +0 -5625
@@ -1,5 +1,5 @@
1
1
  # SOAP4R - SOAP EncodingStyle handler library
2
- # Copyright (C) 2001, 2003, 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
3
 
4
4
  # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
5
  # redistribute it and/or modify it under the same terms of Ruby's license;
@@ -72,7 +72,7 @@ class SOAPHandler < Handler
72
72
 
73
73
  def encode_data_end(generator, ns, data, parent)
74
74
  name = generator.encode_name_end(ns, data)
75
- cr = data.is_a?(SOAPCompoundtype)
75
+ cr = (data.is_a?(SOAPCompoundtype) and data.have_member)
76
76
  generator.encode_tag_end(name, cr)
77
77
  end
78
78
 
@@ -186,9 +186,11 @@ class SOAPHandler < Handler
186
186
  end
187
187
 
188
188
  def decode_tag_end(ns, node)
189
+ textbufstr = @textbuf.join
190
+ @textbuf.clear
189
191
  o = node.node
190
192
  if o.is_a?(SOAPUnknown)
191
- newnode = if /\A\s*\z/ =~ @textbuf.join
193
+ newnode = if /\A\s*\z/ =~ textbufstr
192
194
  o.as_struct
193
195
  else
194
196
  o.as_string
@@ -199,7 +201,7 @@ class SOAPHandler < Handler
199
201
  node.replace_node(newnode)
200
202
  o = node.node
201
203
  end
202
- decode_textbuf(o)
204
+ decode_textbuf(o, textbufstr)
203
205
  # unlink definedtype
204
206
  o.definedtype = nil
205
207
  end
@@ -332,6 +334,7 @@ private
332
334
  @decode_typemap.find_name(elename.name)
333
335
  if type
334
336
  o = SOAPStruct.new(elename)
337
+ o.elename = elename
335
338
  o.definedtype = type
336
339
  return o
337
340
  end
@@ -463,8 +466,7 @@ private
463
466
  SOAPUnknown.new(self, elename, type, extraattr)
464
467
  end
465
468
 
466
- def decode_textbuf(node)
467
- textbufstr = @textbuf.join
469
+ def decode_textbuf(node, textbufstr)
468
470
  case node
469
471
  when XSD::XSDHexBinary, XSD::XSDBase64Binary
470
472
  node.set_encoded(textbufstr)
@@ -483,7 +485,6 @@ private
483
485
  else
484
486
  # Nothing to do...
485
487
  end
486
- @textbuf.clear
487
488
  end
488
489
 
489
490
  NilLiteralMap = {
@@ -0,0 +1,10 @@
1
+ # SOAP4R - SOAP envelope filter.
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/filter/filterchain'
10
+ require 'soap/filter/handler'
@@ -0,0 +1,51 @@
1
+ # SOAP4R - SOAP envelope filter handler.
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/filter/handler'
10
+
11
+
12
+ module SOAP
13
+ module Filter
14
+
15
+
16
+ class FilterChain
17
+
18
+ def each
19
+ @array.each do |filter|
20
+ yield filter
21
+ end
22
+ end
23
+
24
+ def reverse_each
25
+ @array.reverse_each do |filter|
26
+ yield filter
27
+ end
28
+ end
29
+
30
+ def initialize
31
+ @array = []
32
+ end
33
+
34
+ def add(filter)
35
+ @array << filter
36
+ end
37
+ alias << add
38
+
39
+ def delete(filter)
40
+ @array.delete(filter)
41
+ end
42
+
43
+ def include?(filter)
44
+ @array.include?(filter)
45
+ end
46
+
47
+ end
48
+
49
+
50
+ end
51
+ end
@@ -0,0 +1,31 @@
1
+ # SOAP4R - SOAP envelope filter base class.
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 Filter
11
+
12
+
13
+ class Handler
14
+
15
+ # should return envelope. opt can be updated for other filters.
16
+ def on_outbound(envelope, opt)
17
+ # do something.
18
+ envelope
19
+ end
20
+
21
+ # should return xml. opt can be updated for other filters.
22
+ def on_inbound(xml, opt)
23
+ # do something.
24
+ xml
25
+ end
26
+
27
+ end
28
+
29
+
30
+ end
31
+ end
@@ -1,5 +1,5 @@
1
1
  # SOAP4R - SOAP XML Instance Generator library.
2
- # Copyright (C) 2001, 2003, 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
3
 
4
4
  # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
5
  # redistribute it and/or modify it under the same terms of Ruby's license;
@@ -10,6 +10,7 @@ require 'xsd/ns'
10
10
  require 'soap/soap'
11
11
  require 'soap/baseData'
12
12
  require 'soap/encodingstyle/handler'
13
+ require 'xsd/codegen/gensupport'
13
14
 
14
15
 
15
16
  module SOAP
@@ -20,6 +21,7 @@ module SOAP
20
21
  #
21
22
  class SOAPGenerator
22
23
  include SOAP
24
+ include XSD::CodeGen::GenSupport
23
25
 
24
26
  class FormatEncodeError < Error; end
25
27
 
@@ -68,7 +70,13 @@ public
68
70
  end
69
71
 
70
72
  def encode_data(ns, obj, parent)
71
- if obj.is_a?(SOAPEnvelopeElement)
73
+ if obj.respond_to?(:to_xmlpart)
74
+ formatted = trim_eol(obj.to_xmlpart)
75
+ formatted = trim_indent(formatted)
76
+ formatted = formatted.gsub(/^/, @indent).sub(/\n+\z/, '')
77
+ @buf << "\n#{formatted}"
78
+ return
79
+ elsif obj.is_a?(SOAPEnvelopeElement)
72
80
  encode_element(ns, obj, parent)
73
81
  return
74
82
  end
@@ -110,7 +118,7 @@ public
110
118
  end
111
119
 
112
120
  def encode_element(ns, obj, parent)
113
- attrs = {}
121
+ attrs = obj.extraattr.dup
114
122
  if obj.is_a?(SOAPBody)
115
123
  @reftarget = obj
116
124
  obj.encode(self, ns, attrs) do |child|
@@ -1,5 +1,5 @@
1
1
  # SOAP4R - SOAP Header handler item
2
- # Copyright (C) 2003, 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
3
 
4
4
  # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
5
  # redistribute it and/or modify it under the same terms of Ruby's license;
@@ -36,8 +36,9 @@ class Handler
36
36
  # do something.
37
37
  end
38
38
 
39
- def on_outbound_headeritem
40
- item = on_outbound
39
+ def on_outbound_headeritem(header)
40
+ arity = self.method(:on_outbound).arity
41
+ item = (arity == 0) ? on_outbound : on_outbound(header)
41
42
  if item.nil?
42
43
  nil
43
44
  elsif item.is_a?(::SOAP::SOAPHeaderItem)
@@ -50,8 +51,8 @@ class Handler
50
51
  end
51
52
  end
52
53
 
53
- def on_inbound_headeritem(header)
54
- on_inbound(header.element, header.mustunderstand)
54
+ def on_inbound_headeritem(header, item)
55
+ on_inbound(item.element, item.mustunderstand)
55
56
  end
56
57
  end
57
58
 
@@ -1,5 +1,5 @@
1
1
  # SOAP4R - SOAP Header handler set
2
- # Copyright (C) 2003, 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
3
 
4
4
  # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
5
  # redistribute it and/or modify it under the same terms of Ruby's license;
@@ -38,20 +38,20 @@ class HandlerSet
38
38
  end
39
39
 
40
40
  # returns: Array of SOAPHeaderItem
41
- def on_outbound
41
+ def on_outbound(header)
42
42
  @store.collect { |handler|
43
- handler.on_outbound_headeritem
43
+ handler.on_outbound_headeritem(header)
44
44
  }.compact
45
45
  end
46
46
 
47
- # headers: SOAPHeaderItem enumerable object
48
- def on_inbound(headers)
49
- headers.each do |name, item|
47
+ # header: SOAPHeaderItem enumerable object
48
+ def on_inbound(header)
49
+ header.each do |name, item|
50
50
  handler = @store.find { |handler|
51
51
  handler.elename == item.element.elename
52
52
  }
53
53
  if handler
54
- handler.on_inbound_headeritem(item)
54
+ handler.on_inbound_headeritem(header, item)
55
55
  elsif item.mustunderstand
56
56
  raise UnhandledMustUnderstandHeaderError.new(item.element.elename.to_s)
57
57
  end
@@ -1,5 +1,5 @@
1
1
  # SOAP4R - SOAP Simple header item handler
2
- # Copyright (C) 2003-2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
3
 
4
4
  # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
5
  # redistribute it and/or modify it under the same terms of Ruby's license;
@@ -1,5 +1,5 @@
1
1
  # SOAP4R - HTTP config loader.
2
- # Copyright (C) 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
3
 
4
4
  # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
5
  # redistribute it and/or modify it under the same terms of Ruby's license;
@@ -52,7 +52,12 @@ module_function
52
52
  end
53
53
 
54
54
  def set_basic_auth(client, basic_auth)
55
- basic_auth.values.each do |url, userid, passwd|
55
+ basic_auth.values.each do |ele|
56
+ if ele.is_a?(::Array)
57
+ url, userid, passwd = ele
58
+ else
59
+ url, userid, passwd = ele[:url], ele[:userid], ele[:password]
60
+ end
56
61
  client.set_basic_auth(url, userid, passwd)
57
62
  end
58
63
  end
@@ -1,5 +1,5 @@
1
1
  # SOAP4R - Ruby type mapping utility.
2
- # Copyright (C) 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
3
 
4
4
  # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
5
  # redistribute it and/or modify it under the same terms of Ruby's license;
@@ -1,5 +1,5 @@
1
1
  # SOAP4R - encoded mapping registry.
2
- # Copyright (C) 2000-2003, 2006 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
3
 
4
4
  # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
5
  # redistribute it and/or modify it under the same terms of Ruby's license;
@@ -295,9 +295,8 @@ class EncodedRegistry
295
295
  end
296
296
  alias set add
297
297
 
298
- # general Registry ignores type_qname
299
298
  def obj2soap(obj, type_qname = nil)
300
- soap = _obj2soap(obj)
299
+ soap = _obj2soap(obj, type_qname)
301
300
  if @allow_original_mapping
302
301
  addextend2soap(soap, obj)
303
302
  end
@@ -323,7 +322,7 @@ class EncodedRegistry
323
322
 
324
323
  private
325
324
 
326
- def _obj2soap(obj)
325
+ def _obj2soap(obj, type_qname = nil)
327
326
  ret = nil
328
327
  if obj.is_a?(SOAPStruct) or obj.is_a?(SOAPArray)
329
328
  obj.replace do |ele|
@@ -332,6 +331,8 @@ private
332
331
  return obj
333
332
  elsif obj.is_a?(SOAPBasetype)
334
333
  return obj
334
+ elsif type_qname && type = TypeMap[type_qname]
335
+ return base2soap(obj, type)
335
336
  end
336
337
  begin
337
338
  if definition = schema_definition_from_class(obj.class)
@@ -353,14 +354,16 @@ private
353
354
 
354
355
  # Might return nil as a mapping result.
355
356
  def _soap2obj(node, klass = nil)
357
+ definition = find_node_definition(node)
356
358
  if klass
357
- definition = schema_definition_from_class(klass)
358
- else
359
- if definition = schema_definition_from_elename(node.elename)
360
- klass = definition.class_for
361
- elsif definition = schema_definition_from_type(node.type)
359
+ klass_definition = schema_definition_from_class(klass)
360
+ if definition and (definition.class_for < klass)
362
361
  klass = definition.class_for
362
+ else
363
+ definition = klass_definition
363
364
  end
365
+ else
366
+ klass = definition.class_for if definition
364
367
  end
365
368
  if definition and node.is_a?(::SOAP::SOAPStruct)
366
369
  return elesoap2stubobj(node, klass, definition)
@@ -369,7 +372,7 @@ private
369
372
  conv, obj = @rubytype_factory.soap2obj(nil, node, nil, self)
370
373
  return obj if conv
371
374
  end
372
- conv, obj = @map.soap2obj(node, klass)
375
+ conv, obj = @map.soap2obj(node)
373
376
  return obj if conv
374
377
  conv, obj = @default_factory.soap2obj(nil, node, nil, self)
375
378
  return obj if conv
@@ -436,11 +439,11 @@ private
436
439
 
437
440
  def array2soap(obj, definition)
438
441
  return SOAPNil.new if obj.nil? # ToDo: check nillable.
439
- arytype = definition.elements[0].elename
440
- soap_obj = SOAPArray.new(ValueArrayName, 1, arytype)
442
+ eledef = definition.elements[0]
443
+ soap_obj = SOAPArray.new(ValueArrayName, 1, eledef.elename)
441
444
  mark_marshalled_obj(obj, soap_obj)
442
445
  obj.each do |item|
443
- soap_obj.add(Mapping._obj2soap(item, self, arytype))
446
+ soap_obj.add(typedobj2soap(item, eledef.mapped_class))
444
447
  end
445
448
  soap_obj
446
449
  end
@@ -457,23 +460,32 @@ private
457
460
  end
458
461
  definition.elements.each do |eledef|
459
462
  name = eledef.elename.name
460
- if child = Mapping.get_attribute(obj, eledef.varname)
461
- if eledef.as_array?
463
+ if obj.respond_to?(:each) and eledef.as_array?
464
+ obj.each do |item|
465
+ ele.add(name, typedobj2soap(item, eledef.mapped_class))
466
+ end
467
+ else
468
+ child = Mapping.get_attribute(obj, eledef.varname)
469
+ if child.respond_to?(:each) and eledef.as_array?
462
470
  child.each do |item|
463
- ele.add(name, Mapping._obj2soap(item, self))
471
+ ele.add(name, typedobj2soap(item, eledef.mapped_class))
464
472
  end
465
473
  else
466
- ele.add(name, Mapping._obj2soap(child, self))
467
- end
468
- elsif obj.respond_to?(:each) and eledef.as_array?
469
- obj.each do |item|
470
- ele.add(name, Mapping._obj2soap(item, self))
474
+ ele.add(name, typedobj2soap(child, eledef.mapped_class))
471
475
  end
472
476
  end
473
477
  end
474
478
  ele
475
479
  end
476
480
 
481
+ def typedobj2soap(value, klass)
482
+ if klass and klass.include?(::SOAP::SOAPBasetype)
483
+ base2soap(value, klass)
484
+ else
485
+ Mapping._obj2soap(value, self)
486
+ end
487
+ end
488
+
477
489
  def elesoap2stubobj(node, obj_class, definition)
478
490
  obj = Mapping.create_empty_object(obj_class)
479
491
  add_elesoap2stubobj(node, obj, definition)
@@ -484,9 +496,7 @@ private
484
496
  def add_elesoap2stubobj(node, obj, definition)
485
497
  vars = {}
486
498
  node.each do |name, value|
487
- item = definition.elements.find { |k, v|
488
- k.elename == value.elename
489
- }
499
+ item = definition.elements.find_element(value.elename)
490
500
  if item
491
501
  child = soap2typedobj(value, item.mapped_class)
492
502
  else
@@ -501,7 +511,7 @@ private
501
511
  vars[name] = child
502
512
  end
503
513
  end
504
- if obj.is_a?(::Array) and vars.keys.size == 1
514
+ if obj.is_a?(::Array) and is_stubobj_elements_for_array(vars)
505
515
  obj.replace(vars.values[0])
506
516
  else
507
517
  Mapping.set_attributes(obj, vars)
@@ -512,7 +522,7 @@ private
512
522
  unless klass
513
523
  raise MappingError.new("unknown class: #{klass}")
514
524
  end
515
- if klass.ancestors.include?(::SOAP::SOAPBasetype)
525
+ if klass.include?(::SOAP::SOAPBasetype)
516
526
  obj = base2obj(value, klass)
517
527
  else
518
528
  obj = Mapping._soap2obj(value, self, klass)