soap4r 1.5.7 → 1.5.8

Sign up to get free protection for your applications and to get access to all the features.
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