soap4r 1.5.7 → 1.5.8

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 (199) hide show
  1. data/bin/wsdl2ruby.rb +8 -2
  2. data/lib/soap/baseData.rb +93 -43
  3. data/lib/soap/element.rb +11 -8
  4. data/lib/soap/encodingstyle/handler.rb +15 -4
  5. data/lib/soap/encodingstyle/literalHandler.rb +18 -24
  6. data/lib/soap/encodingstyle/soapHandler.rb +34 -77
  7. data/lib/soap/generator.rb +74 -48
  8. data/lib/soap/header/handler.rb +1 -1
  9. data/lib/soap/header/mappinghandler.rb +47 -0
  10. data/lib/soap/mapping/encodedregistry.rb +19 -13
  11. data/lib/soap/mapping/factory.rb +19 -3
  12. data/lib/soap/mapping/literalregistry.rb +47 -35
  13. data/lib/soap/mapping/mapping.rb +92 -24
  14. data/lib/soap/mapping/registry.rb +34 -18
  15. data/lib/soap/mapping/schemadefinition.rb +8 -1
  16. data/lib/soap/mapping/typeMap.rb +18 -0
  17. data/lib/soap/mapping/wsdlencodedregistry.rb +8 -50
  18. data/lib/soap/mapping/wsdlliteralregistry.rb +45 -39
  19. data/lib/soap/nestedexception.rb +42 -0
  20. data/lib/soap/netHttpClient.rb +1 -0
  21. data/lib/soap/ns.rb +34 -0
  22. data/lib/soap/parser.rb +32 -29
  23. data/lib/soap/processor.rb +1 -1
  24. data/lib/soap/rpc/driver.rb +1 -0
  25. data/lib/soap/rpc/element.rb +18 -6
  26. data/lib/soap/rpc/httpserver.rb +38 -24
  27. data/lib/soap/rpc/proxy.rb +14 -11
  28. data/lib/soap/rpc/router.rb +4 -1
  29. data/lib/soap/soap.rb +7 -6
  30. data/lib/soap/wsdlDriver.rb +29 -8
  31. data/lib/tags +5690 -0
  32. data/lib/wsdl/definitions.rb +26 -40
  33. data/lib/wsdl/info.rb +11 -0
  34. data/lib/wsdl/parser.rb +2 -2
  35. data/lib/wsdl/soap/cgiStubCreator.rb +10 -5
  36. data/lib/wsdl/soap/classDefCreator.rb +140 -113
  37. data/lib/wsdl/soap/classDefCreatorSupport.rb +94 -12
  38. data/lib/wsdl/soap/classNameCreator.rb +54 -0
  39. data/lib/wsdl/soap/clientSkeltonCreator.rb +6 -5
  40. data/lib/wsdl/soap/complexType.rb +10 -1
  41. data/lib/wsdl/soap/definitions.rb +4 -0
  42. data/lib/wsdl/soap/driverCreator.rb +14 -6
  43. data/lib/wsdl/soap/element.rb +4 -0
  44. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +11 -55
  45. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +28 -126
  46. data/lib/wsdl/soap/mappingRegistryCreator.rb +9 -3
  47. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +209 -94
  48. data/lib/wsdl/soap/methodDefCreator.rb +12 -16
  49. data/lib/wsdl/soap/servantSkeltonCreator.rb +3 -2
  50. data/lib/wsdl/soap/servletStubCreator.rb +107 -0
  51. data/lib/wsdl/soap/standaloneServerStubCreator.rb +10 -5
  52. data/lib/wsdl/soap/wsdl2ruby.rb +28 -13
  53. data/lib/wsdl/wsdl.rb +2 -1
  54. data/lib/wsdl/xmlSchema/anyAttribute.rb +48 -0
  55. data/lib/wsdl/xmlSchema/attributeGroup.rb +86 -0
  56. data/lib/wsdl/xmlSchema/choice.rb +4 -1
  57. data/lib/wsdl/xmlSchema/complexContent.rb +1 -1
  58. data/lib/wsdl/xmlSchema/complexExtension.rb +9 -1
  59. data/lib/wsdl/xmlSchema/complexRestriction.rb +8 -0
  60. data/lib/wsdl/xmlSchema/complexType.rb +38 -5
  61. data/lib/wsdl/xmlSchema/data.rb +30 -7
  62. data/lib/wsdl/xmlSchema/element.rb +10 -2
  63. data/lib/wsdl/xmlSchema/fractiondigits.rb +37 -0
  64. data/lib/wsdl/xmlSchema/group.rb +118 -0
  65. data/lib/wsdl/xmlSchema/import.rb +11 -23
  66. data/lib/wsdl/xmlSchema/importHandler.rb +45 -0
  67. data/lib/wsdl/xmlSchema/include.rb +11 -17
  68. data/lib/wsdl/xmlSchema/length.rb +3 -1
  69. data/lib/wsdl/xmlSchema/maxexclusive.rb +37 -0
  70. data/lib/wsdl/xmlSchema/maxinclusive.rb +37 -0
  71. data/lib/wsdl/xmlSchema/maxlength.rb +3 -1
  72. data/lib/wsdl/xmlSchema/minexclusive.rb +37 -0
  73. data/lib/wsdl/xmlSchema/mininclusive.rb +37 -0
  74. data/lib/wsdl/xmlSchema/minlength.rb +3 -1
  75. data/lib/wsdl/xmlSchema/schema.rb +34 -0
  76. data/lib/wsdl/xmlSchema/sequence.rb +4 -1
  77. data/lib/wsdl/xmlSchema/simpleExtension.rb +8 -0
  78. data/lib/wsdl/xmlSchema/simpleRestriction.rb +49 -8
  79. data/lib/wsdl/xmlSchema/totaldigits.rb +37 -0
  80. data/lib/wsdl/xmlSchema/whitespace.rb +37 -0
  81. data/lib/wsdl/xmlSchema/xsd2ruby.rb +13 -4
  82. data/lib/xsd/charset.rb +8 -6
  83. data/lib/xsd/codegen/classdef.rb +5 -0
  84. data/lib/xsd/codegen/moduledef.rb +17 -0
  85. data/lib/xsd/datatypes.rb +165 -20
  86. data/lib/xsd/mapping.rb +13 -5
  87. data/lib/xsd/namedelements.rb +8 -0
  88. data/lib/xsd/ns.rb +50 -14
  89. data/lib/xsd/qname.rb +3 -2
  90. data/lib/xsd/xmlparser.rb +4 -3
  91. data/test/soap/asp.net/test_aspdotnet.rb +1 -1
  92. data/test/soap/auth/test_basic.rb +4 -3
  93. data/test/soap/auth/test_digest.rb +4 -3
  94. data/test/soap/calc/test_calc.rb +6 -4
  95. data/test/soap/calc/test_calc2.rb +6 -4
  96. data/test/soap/calc/test_calc_cgi.rb +6 -4
  97. data/test/soap/fault/test_customfault.rb +6 -4
  98. data/test/soap/fault/test_soaparray.rb +35 -0
  99. data/test/soap/filter/test_filter.rb +2 -2
  100. data/test/soap/header/test_authheader.rb +2 -2
  101. data/test/soap/header/test_authheader_cgi.rb +3 -3
  102. data/test/soap/header/test_simplehandler.rb +2 -2
  103. data/test/soap/helloworld/test_helloworld.rb +6 -4
  104. data/test/soap/ssl/test_ssl.rb +1 -1
  105. data/test/soap/struct/test_struct.rb +2 -2
  106. data/test/soap/swa/test_file.rb +6 -4
  107. data/test/soap/test_basetype.rb +4 -4
  108. data/test/soap/test_cookie.rb +2 -2
  109. data/test/soap/test_custom_ns.rb +50 -8
  110. data/test/soap/test_custommap.rb +6 -4
  111. data/test/soap/test_empty.rb +6 -4
  112. data/test/soap/test_envelopenamespace.rb +2 -2
  113. data/test/soap/test_extraattr.rb +6 -7
  114. data/test/soap/test_generator.rb +27 -0
  115. data/test/soap/test_mapping.rb +10 -0
  116. data/test/soap/test_nestedexception.rb +56 -0
  117. data/test/soap/test_nil.rb +6 -4
  118. data/test/soap/test_no_indent.rb +6 -4
  119. data/test/soap/test_response_as_xml.rb +2 -2
  120. data/test/soap/test_streamhandler.rb +6 -3
  121. data/test/soap/test_styleuse.rb +2 -2
  122. data/test/soap/wsdlDriver/test_calc.rb +2 -2
  123. data/test/soap/wsdlDriver/test_document.rb +2 -2
  124. data/test/soap/wsdlDriver/test_simpletype.rb +2 -2
  125. data/test/wsdl/abstract/test_abstract.rb +1 -1
  126. data/test/wsdl/anonymous/expectedClassDef.rb +128 -0
  127. data/test/wsdl/anonymous/expectedDriver.rb +59 -0
  128. data/test/wsdl/anonymous/expectedMappingRegistry.rb +176 -0
  129. data/test/wsdl/anonymous/lp.wsdl +147 -0
  130. data/test/wsdl/anonymous/test_anonymous.rb +130 -0
  131. data/test/wsdl/any/expectedDriver.rb +3 -2
  132. data/test/wsdl/any/expectedEcho.rb +22 -2
  133. data/test/wsdl/any/expectedMappingRegistry.rb +63 -0
  134. data/test/wsdl/any/expectedService.rb +3 -1
  135. data/test/wsdl/any/test_any.rb +2 -7
  136. data/test/wsdl/axisArray/axisArray.wsdl +31 -4
  137. data/test/wsdl/axisArray/test_axisarray.rb +58 -3
  138. data/test/wsdl/choice/choice.wsdl +39 -0
  139. data/test/wsdl/choice/test_choice.rb +134 -7
  140. data/test/wsdl/complexcontent/test_echo.rb +1 -1
  141. data/test/wsdl/datetime/test_datetime.rb +2 -2
  142. data/test/wsdl/document/array/double.wsdl +45 -6
  143. data/test/wsdl/document/array/test_array.rb +68 -1
  144. data/test/wsdl/document/document.wsdl +2 -0
  145. data/test/wsdl/document/test_nosoapaction.rb +1 -1
  146. data/test/wsdl/document/test_number.rb +1 -1
  147. data/test/wsdl/document/test_rpc.rb +78 -9
  148. data/test/wsdl/fault/test_fault.rb +1 -1
  149. data/test/wsdl/fault/test_multifault.rb +1 -1
  150. data/test/wsdl/group/expectedClassdef.rb +58 -0
  151. data/test/wsdl/group/expectedDriver.rb +51 -0
  152. data/test/wsdl/group/expectedMappingRegistry.rb +67 -0
  153. data/test/wsdl/group/group.wsdl +88 -0
  154. data/test/wsdl/group/test_rpc.rb +145 -0
  155. data/test/wsdl/list/test_list.rb +1 -1
  156. data/test/wsdl/map/test_map.rb +2 -2
  157. data/test/wsdl/marshal/person_org.rb +5 -0
  158. data/test/wsdl/multiplefault.wsdl +11 -4
  159. data/test/wsdl/oneway/test_oneway.rb +1 -1
  160. data/test/wsdl/overload/test_overload.rb +1 -1
  161. data/test/wsdl/qualified/test_qualified.rb +1 -1
  162. data/test/wsdl/qualified/test_unqualified.rb +1 -1
  163. data/test/wsdl/raa/RAAService.rb +62 -57
  164. data/test/wsdl/raa/expectedClassDef.rb +100 -0
  165. data/test/wsdl/raa/expectedDriver.rb +96 -0
  166. data/test/wsdl/raa/expectedMappingRegistry.rb +121 -0
  167. data/test/wsdl/raa/test_raa.rb +54 -19
  168. data/test/wsdl/ref/expectedDriver.rb +1 -1
  169. data/test/wsdl/ref/expectedProduct.rb +101 -16
  170. data/test/wsdl/ref/test_ref.rb +2 -1
  171. data/test/wsdl/rpc/test_rpc.rb +1 -2
  172. data/test/wsdl/rpc/test_rpc_lit.rb +13 -13
  173. data/test/wsdl/simplecontent/test_simplecontent.rb +5 -5
  174. data/test/wsdl/simpletype/rpc/expectedDriver.rb +3 -2
  175. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +2 -0
  176. data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +10 -17
  177. data/test/wsdl/simpletype/rpc/expectedService.rb +4 -2
  178. data/test/wsdl/simpletype/test_simpletype.rb +2 -2
  179. data/test/wsdl/soap/test_soapbodyparts.rb +2 -2
  180. data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +2 -0
  181. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +3 -2
  182. data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +5 -9
  183. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +4 -2
  184. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +4 -2
  185. data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +6 -0
  186. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +1 -1
  187. data/test/wsdl/soaptype/test_soaptype.rb +1 -1
  188. data/test/wsdl/test_multiplefault.rb +3 -1
  189. data/test/xsd/codegen/test_classdef.rb +30 -0
  190. data/test/xsd/test_ns.rb +21 -0
  191. data/test/xsd/test_xsd.rb +5 -4
  192. data/test/xsd/xsd2ruby/expected_mysample.rb +13 -2
  193. data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +5 -11
  194. data/test/xsd/xsd2ruby/section.xsd +8 -0
  195. metadata +40 -8
  196. data/test/wsdl/axisArray/itemList.rb +0 -14
  197. data/test/wsdl/raa/RAA.rb +0 -120
  198. data/test/wsdl/raa/RAAServant.rb +0 -107
  199. data/test/wsdl/raa/server.rb +0 -103
@@ -21,8 +21,9 @@ class ServantSkeltonCreator
21
21
 
22
22
  attr_reader :definitions
23
23
 
24
- def initialize(definitions, modulepath = nil)
24
+ def initialize(definitions, name_creator, modulepath = nil)
25
25
  @definitions = definitions
26
+ @name_creator = name_creator
26
27
  @modulepath = modulepath
27
28
  end
28
29
 
@@ -52,7 +53,7 @@ class ServantSkeltonCreator
52
53
  private
53
54
 
54
55
  def dump_porttype(name)
55
- class_name = create_class_name(name)
56
+ class_name = mapped_class_basename(name, @modulepath)
56
57
  c = XSD::CodeGen::ClassDef.new(class_name)
57
58
  element_definitions = @definitions.collect_elements
58
59
  operations = @definitions.porttype(name).operations
@@ -0,0 +1,107 @@
1
+ # WSDL4R - Creating servlet stub code from WSDL.
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 'wsdl/info'
10
+ require 'wsdl/soap/mappingRegistryCreator'
11
+ require 'wsdl/soap/methodDefCreator'
12
+ require 'wsdl/soap/classDefCreatorSupport'
13
+
14
+
15
+ module WSDL
16
+ module SOAP
17
+
18
+
19
+ class ServletStubCreator
20
+ include ClassDefCreatorSupport
21
+
22
+ attr_reader :definitions
23
+
24
+ def initialize(definitions, name_creator, modulepath = nil)
25
+ @definitions = definitions
26
+ @name_creator = name_creator
27
+ @modulepath = modulepath
28
+ end
29
+
30
+ def dump(service_name)
31
+ warn("- Servlet stub can have only 1 port for now. So creating stub for the first port and rests are ignored.")
32
+ services = @definitions.service(service_name)
33
+ unless services
34
+ raise RuntimeError.new("service not defined: #{service_name}")
35
+ end
36
+ ports = services.ports
37
+ if ports.empty?
38
+ raise RuntimeError.new("ports not found for #{service_name}")
39
+ end
40
+ port = ports[0]
41
+ if port.porttype.nil?
42
+ raise RuntimeError.new("porttype not found for #{port}")
43
+ end
44
+ dump_porttype(port.porttype)
45
+ end
46
+
47
+ private
48
+
49
+ def dump_porttype(porttype)
50
+ class_name = mapped_class_name(porttype.name, @modulepath)
51
+ defined_const = {}
52
+ result = MethodDefCreator.new(@definitions, @name_creator, @modulepath, defined_const).dump(porttype.name)
53
+ methoddef = result[:methoddef]
54
+
55
+ wsdl_name = @definitions.name ? @definitions.name.name : 'default'
56
+ mrname = safeconstname(wsdl_name + 'MappingRegistry')
57
+
58
+ c1 = XSD::CodeGen::ClassDef.new(class_name)
59
+ c1.def_require("soap/rpc/soaplet")
60
+ c1.def_code <<-EOD
61
+ Methods = [
62
+ #{methoddef.gsub(/^/, " ")}
63
+ ]
64
+ EOD
65
+ defined_const.each do |ns, tag|
66
+ c1.def_const(tag, dq(ns))
67
+ end
68
+ c2 = XSD::CodeGen::ClassDef.new(class_name + "Servlet",
69
+ "::SOAP::RPC::SOAPlet")
70
+ c2.def_method("initialize", "router = nil") do
71
+ <<-EOD
72
+ super(router)
73
+ servant = #{class_name}.new
74
+ #{class_name}::Methods.each do |definitions|
75
+ opt = definitions.last
76
+ if opt[:request_style] == :document
77
+ @router.add_document_operation(servant, *definitions)
78
+ else
79
+ @router.add_rpc_operation(servant, *definitions)
80
+ end
81
+ end
82
+ @router.mapping_registry = #{mrname}::EncodedRegistry
83
+ @router.literal_mapping_registry = #{mrname}::LiteralRegistry
84
+ EOD
85
+ end
86
+ c1.dump + "\n" + c2.dump + format(<<-EOD)
87
+
88
+ if $0 == __FILE__
89
+ require 'webrick'
90
+ server = WEBrick::HTTPServer.new(
91
+ :BindAddress => "0.0.0.0",
92
+ :Port => 10080,
93
+ :DocumentRoot => "."
94
+ )
95
+ server.mount("/", #{c2.name}.new)
96
+ trap(:INT) do
97
+ server.shutdown
98
+ end
99
+ server.start
100
+ end
101
+ EOD
102
+ end
103
+ end
104
+
105
+
106
+ end
107
+ end
@@ -21,8 +21,9 @@ class StandaloneServerStubCreator
21
21
 
22
22
  attr_reader :definitions
23
23
 
24
- def initialize(definitions, modulepath = nil)
24
+ def initialize(definitions, name_creator, modulepath = nil)
25
25
  @definitions = definitions
26
+ @name_creator = name_creator
26
27
  @modulepath = modulepath
27
28
  end
28
29
 
@@ -41,14 +42,15 @@ class StandaloneServerStubCreator
41
42
  if port.porttype.nil?
42
43
  raise RuntimeError.new("porttype not found for #{port}")
43
44
  end
44
- dump_porttype(port.porttype.name)
45
+ dump_porttype(port.porttype)
45
46
  end
46
47
 
47
48
  private
48
49
 
49
- def dump_porttype(name)
50
- class_name = create_class_name(name, @modulepath)
51
- result = MethodDefCreator.new(@definitions, @modulepath).dump(name)
50
+ def dump_porttype(porttype)
51
+ class_name = mapped_class_name(porttype.name, @modulepath)
52
+ defined_const = {}
53
+ result = MethodDefCreator.new(@definitions, @name_creator, @modulepath, defined_const).dump(porttype.name)
52
54
  methoddef = result[:methoddef]
53
55
 
54
56
  wsdl_name = @definitions.name ? @definitions.name.name : 'default'
@@ -61,6 +63,9 @@ Methods = [
61
63
  #{methoddef.gsub(/^/, " ")}
62
64
  ]
63
65
  EOD
66
+ defined_const.each do |ns, tag|
67
+ c1.def_const(tag, dq(ns))
68
+ end
64
69
  c2 = XSD::CodeGen::ClassDef.new(class_name + "App",
65
70
  "::SOAP::RPC::StandaloneServer")
66
71
  c2.def_method("initialize", "*arg") do
@@ -14,7 +14,9 @@ require 'wsdl/soap/servantSkeltonCreator'
14
14
  require 'wsdl/soap/driverCreator'
15
15
  require 'wsdl/soap/clientSkeltonCreator'
16
16
  require 'wsdl/soap/standaloneServerStubCreator'
17
+ require 'wsdl/soap/servletStubCreator'
17
18
  require 'wsdl/soap/cgiStubCreator'
19
+ require 'wsdl/soap/classNameCreator'
18
20
 
19
21
 
20
22
  module WSDL
@@ -52,6 +54,7 @@ private
52
54
  @name = nil
53
55
  @classdef_filename = nil
54
56
  @mr_filename = nil
57
+ @name_creator = ClassNameCreator.new
55
58
  end
56
59
 
57
60
  def create_file
@@ -61,7 +64,8 @@ private
61
64
  create_servant_skelton(@opt['servant_skelton']) if @opt.key?('servant_skelton')
62
65
  create_cgi_stub(@opt['cgi_stub']) if @opt.key?('cgi_stub')
63
66
  create_standalone_server_stub(@opt['standalone_server_stub']) if @opt.key?('standalone_server_stub')
64
- create_driver(@opt['driver']) if @opt.key?('driver')
67
+ create_servlet_stub(@opt['servlet_stub']) if @opt.key?('servlet_stub')
68
+ create_driver(@opt['driver'], @opt['drivername_postfix'] || '') if @opt.key?('driver')
65
69
  create_client_skelton(@opt['client_skelton']) if @opt.key?('client_skelton')
66
70
  end
67
71
 
@@ -70,7 +74,7 @@ private
70
74
  @classdef_filename = @name + '.rb'
71
75
  check_file(@classdef_filename) or return
72
76
  write_file(@classdef_filename) do |f|
73
- f << WSDL::SOAP::ClassDefCreator.new(@wsdl, @modulepath).dump
77
+ f << WSDL::SOAP::ClassDefCreator.new(@wsdl, @name_creator, @modulepath).dump
74
78
  end
75
79
  end
76
80
 
@@ -80,7 +84,7 @@ private
80
84
  check_file(@mr_filename) or return
81
85
  write_file(@mr_filename) do |f|
82
86
  f << "require '#{@classdef_filename}'\n" if @classdef_filename
83
- f << WSDL::SOAP::MappingRegistryCreator.new(@wsdl, @modulepath).dump
87
+ f << WSDL::SOAP::MappingRegistryCreator.new(@wsdl, @name_creator, @modulepath).dump
84
88
  end
85
89
  end
86
90
 
@@ -93,8 +97,7 @@ private
93
97
  write_file(@client_skelton_filename) do |f|
94
98
  f << shbang << "\n"
95
99
  f << "require '#{@driver_filename}'\n\n" if @driver_filename
96
- f << WSDL::SOAP::ClientSkeltonCreator.new(@wsdl, @modulepath).dump(
97
- create_name(servicename))
100
+ f << WSDL::SOAP::ClientSkeltonCreator.new(@wsdl, @name_creator, @modulepath).dump(create_name(servicename))
98
101
  end
99
102
  end
100
103
 
@@ -104,8 +107,7 @@ private
104
107
  check_file(@servant_skelton_filename) or return
105
108
  write_file(@servant_skelton_filename) do |f|
106
109
  f << "require '#{@classdef_filename}'\n\n" if @classdef_filename
107
- f << WSDL::SOAP::ServantSkeltonCreator.new(@wsdl, @modulepath).dump(
108
- create_name(porttypename))
110
+ f << WSDL::SOAP::ServantSkeltonCreator.new(@wsdl, @name_creator, @modulepath).dump(create_name(porttypename))
109
111
  end
110
112
  end
111
113
 
@@ -118,7 +120,7 @@ private
118
120
  f << shbang << "\n"
119
121
  f << "require '#{@servant_skelton_filename}'\n" if @servant_skelton_filename
120
122
  f << "require '#{@mr_filename}'\n" if @mr_filename
121
- f << WSDL::SOAP::CGIStubCreator.new(@wsdl, @modulepath).dump(create_name(servicename))
123
+ f << WSDL::SOAP::CGIStubCreator.new(@wsdl, @name_creator, @modulepath).dump(create_name(servicename))
122
124
  end
123
125
  end
124
126
 
@@ -131,20 +133,33 @@ private
131
133
  f << shbang << "\n"
132
134
  f << "require '#{@servant_skelton_filename}'\n" if @servant_skelton_filename
133
135
  f << "require '#{@mr_filename}'\n" if @mr_filename
134
- f << WSDL::SOAP::StandaloneServerStubCreator.new(@wsdl, @modulepath).dump(
135
- create_name(servicename))
136
+ f << WSDL::SOAP::StandaloneServerStubCreator.new(@wsdl, @name_creator, @modulepath).dump(create_name(servicename))
136
137
  end
137
138
  end
138
139
 
139
- def create_driver(porttypename)
140
+ def create_servlet_stub(servicename)
141
+ @logger.info { "Creating servlet stub." }
142
+ servicename ||= @wsdl.services[0].name.name
143
+ @servlet_stub_filename = servicename + 'Servlet.rb'
144
+ check_file(@servlet_stub_filename) or return
145
+ write_file(@servlet_stub_filename) do |f|
146
+ f << shbang << "\n"
147
+ f << "require '#{@servant_skelton_filename}'\n" if @servant_skelton_filename
148
+ f << "require '#{@mr_filename}'\n" if @mr_filename
149
+ f << WSDL::SOAP::ServletStubCreator.new(@wsdl, @name_creator, @modulepath).dump(create_name(servicename))
150
+ end
151
+ end
152
+
153
+ def create_driver(porttypename, drivername_postfix)
140
154
  @logger.info { "Creating driver." }
141
155
  @driver_filename = (porttypename || @name) + 'Driver.rb'
156
+ creator = WSDL::SOAP::DriverCreator.new(@wsdl, @name_creator, @modulepath)
157
+ creator.drivername_postfix = drivername_postfix
142
158
  check_file(@driver_filename) or return
143
159
  write_file(@driver_filename) do |f|
144
160
  f << "require '#{@classdef_filename}'\n" if @classdef_filename
145
161
  f << "require '#{@mr_filename}'\n" if @mr_filename
146
- f << WSDL::SOAP::DriverCreator.new(@wsdl, @modulepath).dump(
147
- create_name(porttypename))
162
+ f << creator.dump(create_name(porttypename))
148
163
  end
149
164
  end
150
165
 
@@ -7,6 +7,7 @@
7
7
 
8
8
 
9
9
  require 'xsd/qname'
10
+ require 'soap/nestedexception'
10
11
 
11
12
 
12
13
  module WSDL
@@ -17,7 +18,7 @@ Version = '0.0.2'
17
18
  Namespace = 'http://schemas.xmlsoap.org/wsdl/'
18
19
  SOAPBindingNamespace ='http://schemas.xmlsoap.org/wsdl/soap/'
19
20
 
20
- class Error < StandardError; end
21
+ class Error < StandardError; include ::SOAP::NestedException; end
21
22
 
22
23
 
23
24
  end
@@ -0,0 +1,48 @@
1
+ # WSDL4R - XMLSchema anyAttribute definition for WSDL.
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 'wsdl/info'
10
+
11
+
12
+ module WSDL
13
+ module XMLSchema
14
+
15
+
16
+ class AnyAttribute < Info
17
+ attr_accessor :namespace
18
+ attr_accessor :processcontents
19
+
20
+ def initialize
21
+ super()
22
+ @namespace = '##any'
23
+ @processcontents = 'strict'
24
+ end
25
+
26
+ def targetnamespace
27
+ parent.targetnamespace
28
+ end
29
+
30
+ def parse_element(element)
31
+ nil
32
+ end
33
+
34
+ def parse_attr(attr, value)
35
+ case attr
36
+ when NamespaceAttrName
37
+ @namespace = value.source
38
+ when ProcessContentsAttrName
39
+ @processcontents = value.source
40
+ else
41
+ nil
42
+ end
43
+ end
44
+ end
45
+
46
+
47
+ end
48
+ end
@@ -0,0 +1,86 @@
1
+ # WSDL4R - XMLSchema attributeGroup definition for WSDL.
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 'wsdl/info'
10
+
11
+
12
+ module WSDL
13
+ module XMLSchema
14
+
15
+
16
+ class AttributeGroup < Info
17
+ class << self
18
+ if RUBY_VERSION > "1.7.0"
19
+ def attr_reader_ref(symbol)
20
+ name = symbol.to_s
21
+ define_method(name) {
22
+ instance_variable_get("@#{name}") ||
23
+ (refelement ? refelement.__send__(name) : nil)
24
+ }
25
+ end
26
+ else
27
+ def attr_reader_ref(symbol)
28
+ name = symbol.to_s
29
+ module_eval <<-EOS
30
+ def #{name}
31
+ @#{name} || (refelement ? refelement.#{name} : nil)
32
+ end
33
+ EOS
34
+ end
35
+ end
36
+ end
37
+
38
+ attr_writer :name # required
39
+ attr_writer :attributes
40
+
41
+ attr_reader_ref :name
42
+ attr_reader_ref :attributes
43
+
44
+ attr_accessor :ref
45
+
46
+ def initialize
47
+ super
48
+ @name = nil
49
+ @attributes = nil
50
+ @ref = nil
51
+ @refelement = nil
52
+ end
53
+
54
+ def refelement
55
+ @refelement ||= root.collect_attributegroups[@ref]
56
+ end
57
+
58
+ def targetnamespace
59
+ parent.targetnamespace
60
+ end
61
+
62
+ def parse_element(element)
63
+ case element
64
+ when AttributeName
65
+ @attributes ||= XSD::NamedElements.new
66
+ o = Attribute.new
67
+ @attributes << o
68
+ o
69
+ end
70
+ end
71
+
72
+ def parse_attr(attr, value)
73
+ case attr
74
+ when NameAttrName
75
+ @name = XSD::QName.new(targetnamespace, value.source)
76
+ when RefAttrName
77
+ @ref = value
78
+ else
79
+ nil
80
+ end
81
+ end
82
+ end
83
+
84
+
85
+ end
86
+ end
@@ -39,8 +39,11 @@ class Choice < Content
39
39
  o = Choice.new
40
40
  @elements << o
41
41
  o
42
+ when GroupName
43
+ o = Group.new
44
+ @elements << o
45
+ o
42
46
  when AnyName
43
- raise ElementConstraintError.new("duplicated element: any") if @any
44
47
  @any = Any.new
45
48
  @elements << @any
46
49
  @any
@@ -85,7 +85,7 @@ class ComplexContent < Info
85
85
  def parse_attr(attr, value)
86
86
  case attr
87
87
  when MixedAttrName
88
- @mixed = (value.source == 'true')
88
+ @mixed = to_boolean(value)
89
89
  else
90
90
  nil
91
91
  end