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
  # WSDL4R - Creating class code support from WSDL.
2
- # Copyright (C) 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;
@@ -36,7 +36,7 @@ module ClassDefCreatorSupport
36
36
  ::SOAP::TypeMap[name]
37
37
  end
38
38
 
39
- def dump_method_signature(operation)
39
+ def dump_method_signature(operation, element_definitions)
40
40
  name = operation.name
41
41
  input = operation.input
42
42
  output = operation.output
@@ -47,17 +47,16 @@ module ClassDefCreatorSupport
47
47
  # #{name}#{dump_inputparam(input)}
48
48
  #
49
49
  # ARGS
50
- #{dump_inout_type(input).chomp}
50
+ #{dump_inout_type(input, element_definitions).chomp}
51
51
  #
52
52
  # RETURNS
53
- #{dump_inout_type(output).chomp}
53
+ #{dump_inout_type(output, element_definitions).chomp}
54
54
  #
55
55
  __EOD__
56
56
  unless fault.empty?
57
- faultstr = (fault.collect { |f| dump_inout_type(f).chomp }).join(', ')
58
57
  str <<<<__EOD__
59
58
  # RAISES
60
- # #{faultstr}
59
+ #{dump_fault_type(fault, element_definitions)}
61
60
  #
62
61
  __EOD__
63
62
  end
@@ -73,7 +72,11 @@ __EOD__
73
72
  end
74
73
 
75
74
  def sym(ele)
76
- ':' + ele
75
+ ':' + ele.id2name
76
+ end
77
+
78
+ def nsym(ele)
79
+ ele.nil? ? 'nil' : sym(ele)
77
80
  end
78
81
 
79
82
  def dqname(qname)
@@ -82,7 +85,7 @@ __EOD__
82
85
 
83
86
  private
84
87
 
85
- def dump_inout_type(param)
88
+ def dump_inout_type(param, element_definitions)
86
89
  if param
87
90
  message = param.find_message
88
91
  params = ""
@@ -90,10 +93,18 @@ private
90
93
  name = safevarname(part.name)
91
94
  if part.type
92
95
  typename = safeconstname(part.type.name)
93
- params << add_at("# #{name}", "#{typename} - #{part.type}\n", 20)
96
+ qname = part.type
97
+ params << add_at("# #{name}", "#{typename} - #{qname}\n", 20)
94
98
  elsif part.element
95
- typename = safeconstname(part.element.name)
96
- params << add_at("# #{name}", "#{typename} - #{part.element}\n", 20)
99
+ ele = element_definitions[part.element]
100
+ if ele.type
101
+ typename = safeconstname(ele.type.name)
102
+ qname = ele.type
103
+ else
104
+ typename = safeconstname(ele.name.name)
105
+ qname = ele.name
106
+ end
107
+ params << add_at("# #{name}", "#{typename} - #{qname}\n", 20)
97
108
  end
98
109
  end
99
110
  unless params.empty?
@@ -124,6 +135,12 @@ private
124
135
  base + ' ' * (pos - base.size) + str
125
136
  end
126
137
  end
138
+
139
+ def dump_fault_type(fault, element_definitions)
140
+ fault.collect { |ele|
141
+ dump_inout_type(ele, element_definitions).chomp
142
+ }.join("\n")
143
+ end
127
144
  end
128
145
 
129
146
 
@@ -1,5 +1,5 @@
1
1
  # WSDL4R - Creating client skelton code from WSDL.
2
- # Copyright (C) 2002, 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;
@@ -61,8 +61,9 @@ obj = #{ drv_name }.new(endpoint_url)
61
61
  obj.wiredump_dev = STDERR if $DEBUG
62
62
 
63
63
  __EOD__
64
+ element_definitions = @definitions.collect_elements
64
65
  @definitions.porttype(name).operations.each do |operation|
65
- result << dump_method_signature(operation)
66
+ result << dump_method_signature(operation, element_definitions)
66
67
  result << dump_input_init(operation.input) << "\n"
67
68
  result << dump_operation(operation) << "\n\n"
68
69
  end
@@ -1,5 +1,5 @@
1
1
  # WSDL4R - SOAP complexType definition for WSDL.
2
- # Copyright (C) 2002, 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;
@@ -23,8 +23,7 @@ class ComplexType < Info
23
23
  if have_any?
24
24
  :TYPE_STRUCT
25
25
  elsif content
26
- e = elements
27
- if attributes.empty? and e.size == 1 and e[0].maxoccurs != '1'
26
+ if attributes.empty? and map_as_array?
28
27
  if name == ::SOAP::Mapping::MapQName
29
28
  :TYPE_MAP
30
29
  else
@@ -107,7 +106,7 @@ class ComplexType < Info
107
106
  end
108
107
  end
109
108
  end
110
- if check_array_content
109
+ if map_as_array?
111
110
  return element_simpletype(elements[0])
112
111
  end
113
112
  raise RuntimeError.new("Assert: Unknown array definition.")
@@ -117,8 +116,8 @@ class ComplexType < Info
117
116
  unless compoundtype == :TYPE_ARRAY
118
117
  raise RuntimeError.new("Assert: not for array")
119
118
  end
120
- if check_array_content
121
- return elements[0]
119
+ if map_as_array?
120
+ return nested_elements[0]
122
121
  end
123
122
  nil # use default item name
124
123
  end
@@ -143,11 +142,9 @@ private
143
142
  end
144
143
  end
145
144
 
146
- def check_array_content
147
- e = elements
148
- e.size == 1 and e[0].maxoccurs != '1'
149
- # content and content.elements.size == 1 and
150
- # content.elements[0].maxoccurs != '1'
145
+ def map_as_array?
146
+ e = nested_elements
147
+ e.size == 1 and e[0].map_as_array?
151
148
  end
152
149
 
153
150
  def content_arytype
@@ -1,5 +1,5 @@
1
1
  # WSDL4R - WSDL SOAP binding data definitions.
2
- # Copyright (C) 2002, 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
  # WSDL4R - WSDL additional definitions for SOAP.
2
- # Copyright (C) 2002-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;
@@ -82,10 +82,18 @@ class Definitions < Info
82
82
  collect_fault_messages.each do |name|
83
83
  faultparts = message(name).parts
84
84
  if faultparts.size != 1
85
- raise RuntimeError.new("expecting fault message to have only 1 part")
85
+ raise RuntimeError.new("Expecting fault message \"#{name}\" to have ONE part")
86
86
  end
87
- if result.index(faultparts[0].type).nil?
88
- result << faultparts[0].type
87
+ fault_part = faultparts[0]
88
+ # WS-I Basic Profile Version 1.1 (R2205) requires fault message parts
89
+ # to refer to elements rather than types
90
+ faulttype = fault_part.element
91
+ if not faulttype
92
+ warn("Fault message \"#{name}\" part \"#{fault_part.name}\" must specify an \"element\" attribute")
93
+ faulttype = fault_part.type
94
+ end
95
+ if faulttype and result.index(faulttype).nil?
96
+ result << faulttype
89
97
  end
90
98
  end
91
99
  result
@@ -93,11 +101,48 @@ class Definitions < Info
93
101
 
94
102
  private
95
103
 
104
+ def get_fault_binding(op_binding, fault_name)
105
+ op_binding.fault.each do |fault|
106
+ return fault if fault.name == fault_name
107
+ end
108
+ return nil
109
+ end
110
+
111
+ def op_binding_declares_fault(op_binding, fault_name)
112
+ return get_fault_binding(op_binding, fault_name) != nil
113
+ end
114
+
96
115
  def collect_fault_messages
97
116
  result = []
98
117
  porttypes.each do |porttype|
118
+ port_binding = porttype.find_binding()
119
+ next unless port_binding
99
120
  porttype.operations.each do |operation|
121
+ op_binding = port_binding.operations.find { |ele| ele.name == operation.name }
122
+ next unless op_binding
100
123
  operation.fault.each do |fault|
124
+ # Make sure the operation fault has a name
125
+ if not fault.name
126
+ warn("Operation \"#{operation.name}\": fault must specify a \"name\" attribute")
127
+ next
128
+ end
129
+ # Make sure that portType fault has a corresponding soap:fault
130
+ # definition in binding section.
131
+ if not op_binding_declares_fault(op_binding, fault.name)
132
+ warn("Operation \"#{operation.name}\", fault \"#{fault.name}\": no corresponding wsdl:fault binding found with a matching \"name\" attribute")
133
+ next
134
+ end
135
+ fault_binding = get_fault_binding(op_binding, fault.name)
136
+ if fault_binding.soapfault.name != fault_binding.name
137
+ warn("WARNING: name of soap:fault \"#{fault_binding.soapfault.name}\" doesn't match the name of wsdl:fault \"#{fault_binding.name}\" in operation \"#{operation.name}\" \n\n")
138
+ next
139
+ end
140
+ # According to WS-I (R2723): if in a wsdl:binding the use attribute
141
+ # on a contained soapbind:fault element is present, its value MUST
142
+ # be "literal".
143
+ if fault_binding.soapfault.use and fault_binding.soapfault.use != "literal"
144
+ warn("Operation \"#{operation.name}\", fault \"#{fault.name}\": soap:fault \"use\" attribute must be \"literal\"")
145
+ end
101
146
  if result.index(fault.message).nil?
102
147
  result << fault.message
103
148
  end
@@ -1,5 +1,5 @@
1
1
  # WSDL4R - Creating driver code from WSDL.
2
- # Copyright (C) 2002, 2003, 2005, 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;
@@ -1,5 +1,5 @@
1
1
  # WSDL4R - XMLSchema element definition for WSDL.
2
- # Copyright (C) 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;
@@ -15,7 +15,8 @@ module XMLSchema
15
15
 
16
16
  class Element < Info
17
17
  def map_as_array?
18
- maxoccurs != '1'
18
+ # parent sequence / choice may be marked as maxOccurs="unbounded"
19
+ maxoccurs.nil? or maxoccurs != 1 or (parent and parent.map_as_array?)
19
20
  end
20
21
 
21
22
  def attributes
@@ -1,5 +1,5 @@
1
1
  # WSDL4R - Creating EncodedMappingRegistry code from WSDL.
2
- # Copyright (C) 2002, 2003, 2005, 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;
@@ -1,5 +1,5 @@
1
1
  # WSDL4R - WSDL SOAP body definition.
2
- # Copyright (C) 2002, 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
  # WSDL4R - WSDL SOAP body definition.
2
- # Copyright (C) 2002, 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
  # WSDL4R - WSDL SOAP body definition.
2
- # Copyright (C) 2002, 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
  # WSDL4R - Creating LiteralMappingRegistry code from WSDL.
2
- # Copyright (C) 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;
@@ -34,22 +34,22 @@ class LiteralMappingRegistryCreator
34
34
  def dump(varname)
35
35
  @varname = varname
36
36
  result = ''
37
- str = dump_element
37
+ str = dump_complextype
38
38
  unless str.empty?
39
39
  result << "\n" unless result.empty?
40
40
  result << str
41
41
  end
42
- str = dump_attribute
42
+ str = dump_simpletype
43
43
  unless str.empty?
44
44
  result << "\n" unless result.empty?
45
45
  result << str
46
46
  end
47
- str = dump_complextype
47
+ str = dump_element
48
48
  unless str.empty?
49
49
  result << "\n" unless result.empty?
50
50
  result << str
51
51
  end
52
- str = dump_simpletype
52
+ str = dump_attribute
53
53
  unless str.empty?
54
54
  result << "\n" unless result.empty?
55
55
  result << str
@@ -61,11 +61,19 @@ private
61
61
 
62
62
  def dump_element
63
63
  @elements.collect { |ele|
64
+ qualified = (ele.elementform == 'qualified')
64
65
  if ele.local_complextype
65
- qualified = (ele.elementform == 'qualified')
66
- dump_complextypedef(ele.name, ele.local_complextype, qualified)
66
+ dump_complextypedef(ele.name, ele.local_complextype, nil, qualified)
67
67
  elsif ele.local_simpletype
68
- dump_simpletypedef(ele.name, ele.local_simpletype)
68
+ dump_simpletypedef(ele.name, ele.local_simpletype, nil, qualified)
69
+ elsif ele.type
70
+ if typedef = @complextypes[ele.type]
71
+ dump_complextypedef(ele.type, typedef, ele.name, qualified)
72
+ elsif typedef = @simpletypes[ele.type]
73
+ dump_simpletypedef(ele.type, typedef, ele.name, qualified)
74
+ else
75
+ nil
76
+ end
69
77
  else
70
78
  nil
71
79
  end
@@ -92,14 +100,14 @@ private
92
100
  }.compact.join("\n")
93
101
  end
94
102
 
95
- def dump_complextypedef(qname, typedef, qualified = false)
103
+ def dump_complextypedef(qname, typedef, as_element = nil, qualified = false)
96
104
  case typedef.compoundtype
97
105
  when :TYPE_STRUCT, :TYPE_EMPTY
98
- dump_struct_typemap(qname, typedef, qualified)
106
+ dump_struct_typemap(qname, typedef, as_element, qualified)
99
107
  when :TYPE_ARRAY
100
108
  dump_array_typemap(qname, typedef)
101
109
  when :TYPE_SIMPLE
102
- dump_simple_typemap(qname, typedef)
110
+ dump_simple_typemap(qname, typedef, as_element, qualified)
103
111
  when :TYPE_MAP
104
112
  # mapped as a general Hash
105
113
  nil
@@ -109,17 +117,19 @@ private
109
117
  end
110
118
  end
111
119
 
112
- def dump_struct_typemap(qname, typedef, qualified = false)
120
+ def dump_struct_typemap(qname, typedef, as_element = nil, qualified = false)
113
121
  var = {}
114
122
  var[:class] = create_class_name(qname, @modulepath)
115
- if typedef.name.nil?
116
- # local complextype of a element
123
+ if as_element
124
+ var[:schema_name] = as_element.name
125
+ var[:schema_ns] = as_element.namespace
126
+ elsif typedef.name.nil?
117
127
  var[:schema_name] = qname.name
128
+ var[:schema_ns] = qname.namespace
118
129
  else
119
- # named complextype
120
130
  var[:schema_type] = qname.name
131
+ var[:schema_ns] = qname.namespace
121
132
  end
122
- var[:schema_ns] = qname.namespace
123
133
  var[:schema_qualified] = qualified.to_s
124
134
 
125
135
  parsed_element = parse_elements(typedef.elements, qname.namespace)
@@ -157,25 +167,35 @@ private
157
167
  else
158
168
  type = nil
159
169
  end
160
- if child_element
170
+ occurrence = [0, nil]
171
+ if child_element and child_element.name
161
172
  if child_element.map_as_array?
162
173
  type << '[]' if type
174
+ occurrence = [child_element.minoccurs, child_element.maxoccurs]
163
175
  end
164
176
  child_element_name = child_element.name
165
177
  else
166
178
  child_element_name = DEFAULT_ITEM_NAME
167
179
  end
168
180
  parsed_element = []
169
- parsed_element << [child_element_name.name, child_element_name, type]
181
+ parsed_element << [child_element_name.name, child_element_name, type, occurrence]
170
182
  var[:schema_element] = dump_schema_element_definition(parsed_element, 2)
171
183
  dump_entry(@varname, var)
172
184
  end
173
185
 
174
- def dump_simple_typemap(qname, type_or_element)
186
+ def dump_simple_typemap(qname, type_or_element, as_element, qualified)
175
187
  var = {}
176
188
  var[:class] = create_class_name(qname, @modulepath)
177
- var[:schema_ns] = qname.namespace
178
- var[:schema_type] = qname.name
189
+ if as_element
190
+ var[:schema_name] = as_element.name
191
+ var[:schema_ns] = as_element.namespace
192
+ elsif type_or_element.name.nil?
193
+ var[:schema_name] = qname.name
194
+ var[:schema_ns] = qname.namespace
195
+ else
196
+ var[:schema_type] = qname.name
197
+ var[:schema_ns] = qname.namespace
198
+ end
179
199
  unless type_or_element.attributes.empty?
180
200
  var[:schema_attribute] = define_attribute(type_or_element.attributes)
181
201
  end
@@ -1,5 +1,5 @@
1
1
  # WSDL4R - Creating MappingRegistry code from WSDL.
2
- # Copyright (C) 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;
@@ -10,6 +10,7 @@ require 'wsdl/info'
10
10
  require 'wsdl/soap/classDefCreatorSupport'
11
11
  require 'wsdl/soap/encodedMappingRegistryCreator'
12
12
  require 'wsdl/soap/literalMappingRegistryCreator'
13
+ require 'xsd/codegen/moduledef.rb'
13
14
 
14
15
 
15
16
  module WSDL