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
@@ -0,0 +1,130 @@
1
+ require 'test/unit'
2
+ require 'wsdl/soap/wsdl2ruby'
3
+ require 'soap/rpc/standaloneServer'
4
+ require 'soap/wsdlDriver'
5
+ require File.join(File.dirname(File.expand_path(__FILE__)), '..', '..', 'testutil.rb')
6
+
7
+
8
+ if defined?(HTTPClient)
9
+
10
+ module WSDL; module Anonymous
11
+
12
+
13
+ class TestAnonymous < Test::Unit::TestCase
14
+ class Server < ::SOAP::RPC::StandaloneServer
15
+ Namespace = 'urn:lp'
16
+
17
+ def on_init
18
+ add_document_method(
19
+ self,
20
+ Namespace + ':login',
21
+ 'login',
22
+ XSD::QName.new(Namespace, 'login'),
23
+ XSD::QName.new(Namespace, 'loginResponse')
24
+ )
25
+ add_document_method(
26
+ self,
27
+ Namespace + ':echo',
28
+ 'echo',
29
+ XSD::QName.new(Namespace, 'Pack'),
30
+ XSD::QName.new(Namespace, 'Envelope')
31
+ )
32
+ self.literal_mapping_registry = LpMappingRegistry::LiteralRegistry
33
+ end
34
+
35
+ def login(arg)
36
+ req = arg.loginRequest
37
+ sess = [req.username, req.password, req.timezone].join
38
+ LoginResponse.new(LoginResponse::LoginResult.new(sess))
39
+ end
40
+
41
+ def echo(pack)
42
+ raise unless pack.class == Pack
43
+ raise unless pack.header.class == Pack::Header
44
+ Envelope.new(Envelope::Header.new(pack.header.header1))
45
+ end
46
+ end
47
+
48
+ DIR = File.dirname(File.expand_path(__FILE__))
49
+ Port = 17171
50
+
51
+ def setup
52
+ setup_clientdef
53
+ setup_server
54
+ @client = nil
55
+ end
56
+
57
+ def teardown
58
+ teardown_server if @server
59
+ unless $DEBUG
60
+ File.unlink(pathname('lp.rb'))
61
+ File.unlink(pathname('lpMappingRegistry.rb'))
62
+ File.unlink(pathname('lpDriver.rb'))
63
+ end
64
+ @client.reset_stream if @client
65
+ end
66
+
67
+ def setup_server
68
+ @server = Server.new('Test', "urn:lp", '0.0.0.0', Port)
69
+ @server.level = Logger::Severity::ERROR
70
+ @server_thread = TestUtil.start_server_thread(@server)
71
+ end
72
+
73
+ def setup_clientdef
74
+ gen = WSDL::SOAP::WSDL2Ruby.new
75
+ gen.location = pathname("lp.wsdl")
76
+ gen.basedir = DIR
77
+ gen.logger.level = Logger::FATAL
78
+ gen.opt['module_path'] = self.class.to_s.sub(/::[^:]+$/, '')
79
+ gen.opt['classdef'] = nil
80
+ gen.opt['mapping_registry'] = nil
81
+ gen.opt['driver'] = nil
82
+ gen.opt['force'] = true
83
+ gen.run
84
+ TestUtil.require(DIR, 'lpDriver.rb', 'lpMappingRegistry.rb', 'lp.rb')
85
+ end
86
+
87
+ def teardown_server
88
+ @server.shutdown
89
+ @server_thread.kill
90
+ @server_thread.join
91
+ end
92
+
93
+ def pathname(filename)
94
+ File.join(DIR, filename)
95
+ end
96
+
97
+ def compare(expected, actual)
98
+ TestUtil.filecompare(pathname(expected), pathname(actual))
99
+ end
100
+
101
+ def test_stubgeneration
102
+ compare("expectedClassDef.rb", "lp.rb")
103
+ compare("expectedMappingRegistry.rb", "lpMappingRegistry.rb")
104
+ compare("expectedDriver.rb", "lpDriver.rb")
105
+ end
106
+
107
+ def test_stub
108
+ @client = Lp_porttype.new("http://localhost:#{Port}/")
109
+ @client.wiredump_dev = STDERR if $DEBUG
110
+ request = Login.new(Login::LoginRequest.new("username", "password", "tz"))
111
+ response = @client.login(request)
112
+ assert_equal(LoginResponse::LoginResult, response.loginResult.class)
113
+ assert_equal("usernamepasswordtz", response.loginResult.sessionID)
114
+ end
115
+
116
+ def test_anonymous_mapping
117
+ @client = Lp_porttype.new("http://localhost:#{Port}/")
118
+ @client.wiredump_dev = STDERR if $DEBUG
119
+ request = Pack.new(Pack::Header.new("pack_header"))
120
+ response = @client.echo(request)
121
+ assert_equal(Envelope, response.class)
122
+ assert_equal(Envelope::Header, response.header.class)
123
+ assert_equal("pack_header", response.header.header2)
124
+ end
125
+ end
126
+
127
+
128
+ end; end
129
+
130
+ end
@@ -1,11 +1,12 @@
1
1
  require 'echo.rb'
2
2
  require 'echoMappingRegistry.rb'
3
+ require 'soap/rpc/driver'
3
4
 
4
5
  module WSDL::Any
5
- require 'soap/rpc/driver'
6
6
 
7
7
  class Echo_port_type < ::SOAP::RPC::Driver
8
8
  DefaultEndpointUrl = "http://localhost:10080"
9
+ NsEcho = "urn:example.com:echo"
9
10
 
10
11
  Methods = [
11
12
  [ "urn:example.com:echo",
@@ -16,7 +17,7 @@ class Echo_port_type < ::SOAP::RPC::Driver
16
17
  :response_style => :document, :response_use => :literal,
17
18
  :faults => {} }
18
19
  ],
19
- [ XSD::QName.new("urn:example.com:echo", "echoAny"),
20
+ [ XSD::QName.new(NsEcho, "echoAny"),
20
21
  "urn:example.com:echoAny",
21
22
  "echoAny",
22
23
  [ ["retval", "echoany_return", [nil]] ],
@@ -1,9 +1,11 @@
1
1
  require 'xsd/qname'
2
2
 
3
- module WSDL::Any
3
+ module WSDL; module Any
4
4
 
5
5
 
6
6
  # {urn:example.com:echo-type}foo.bar
7
+ # before - SOAP::SOAPString
8
+ # after - SOAP::SOAPString
7
9
  class FooBar
8
10
  attr_accessor :before
9
11
  attr_reader :__xmlele_any
@@ -21,7 +23,25 @@ class FooBar
21
23
  end
22
24
 
23
25
  # {urn:example.com:echo-type}setOutputAndCompleteRequest
26
+ # taskId - SOAP::SOAPString
27
+ # data - WSDL::Any::SetOutputAndCompleteRequest::C_Data
28
+ # participantToken - SOAP::SOAPString
24
29
  class SetOutputAndCompleteRequest
30
+
31
+ # inner class for member: data
32
+ # {}data
33
+ class C_Data
34
+ attr_reader :__xmlele_any
35
+
36
+ def set_any(elements)
37
+ @__xmlele_any = elements
38
+ end
39
+
40
+ def initialize
41
+ @__xmlele_any = nil
42
+ end
43
+ end
44
+
25
45
  attr_accessor :taskId
26
46
  attr_accessor :data
27
47
  attr_accessor :participantToken
@@ -34,4 +54,4 @@ class SetOutputAndCompleteRequest
34
54
  end
35
55
 
36
56
 
37
- end
57
+ end; end
@@ -0,0 +1,63 @@
1
+ require 'echo.rb'
2
+ require 'soap/mapping'
3
+
4
+ module WSDL; module Any
5
+
6
+ module EchoMappingRegistry
7
+ EncodedRegistry = ::SOAP::Mapping::EncodedRegistry.new
8
+ LiteralRegistry = ::SOAP::Mapping::LiteralRegistry.new
9
+ NsEchoType = "urn:example.com:echo-type"
10
+ NsXMLSchema = "http://www.w3.org/2001/XMLSchema"
11
+
12
+ EncodedRegistry.register(
13
+ :class => WSDL::Any::FooBar,
14
+ :schema_type => XSD::QName.new(NsEchoType, "foo.bar"),
15
+ :schema_element => [
16
+ ["before", ["SOAP::SOAPString", XSD::QName.new(nil, "before")]],
17
+ ["any", [nil, XSD::QName.new(NsXMLSchema, "anyType")]],
18
+ ["after", ["SOAP::SOAPString", XSD::QName.new(nil, "after")]]
19
+ ]
20
+ )
21
+
22
+ LiteralRegistry.register(
23
+ :class => WSDL::Any::FooBar,
24
+ :schema_type => XSD::QName.new(NsEchoType, "foo.bar"),
25
+ :schema_element => [
26
+ ["before", ["SOAP::SOAPString", XSD::QName.new(nil, "before")]],
27
+ ["any", [nil, XSD::QName.new(NsXMLSchema, "anyType")]],
28
+ ["after", ["SOAP::SOAPString", XSD::QName.new(nil, "after")]]
29
+ ]
30
+ )
31
+
32
+ LiteralRegistry.register(
33
+ :class => WSDL::Any::FooBar,
34
+ :schema_name => XSD::QName.new(NsEchoType, "foo.bar"),
35
+ :schema_element => [
36
+ ["before", ["SOAP::SOAPString", XSD::QName.new(nil, "before")]],
37
+ ["any", [nil, XSD::QName.new(NsXMLSchema, "anyType")]],
38
+ ["after", ["SOAP::SOAPString", XSD::QName.new(nil, "after")]]
39
+ ]
40
+ )
41
+
42
+ LiteralRegistry.register(
43
+ :class => WSDL::Any::SetOutputAndCompleteRequest,
44
+ :schema_name => XSD::QName.new(NsEchoType, "setOutputAndCompleteRequest"),
45
+ :schema_element => [
46
+ ["taskId", ["SOAP::SOAPString", XSD::QName.new(nil, "taskId")]],
47
+ ["data", ["WSDL::Any::SetOutputAndCompleteRequest::C_Data", XSD::QName.new(nil, "data")]],
48
+ ["participantToken", ["SOAP::SOAPString", XSD::QName.new(nil, "participantToken")]]
49
+ ]
50
+ )
51
+
52
+ LiteralRegistry.register(
53
+ :class => WSDL::Any::SetOutputAndCompleteRequest::C_Data,
54
+ :schema_name => XSD::QName.new(nil, "data"),
55
+ :is_anonymous => true,
56
+ :schema_qualified => false,
57
+ :schema_element => [
58
+ ["any", [nil, XSD::QName.new(NsXMLSchema, "anyType")]]
59
+ ]
60
+ )
61
+ end
62
+
63
+ end; end
@@ -6,6 +6,8 @@ require 'soap/rpc/standaloneServer'
6
6
  module WSDL; module Any
7
7
 
8
8
  class Echo_port_type
9
+ NsEcho = "urn:example.com:echo"
10
+
9
11
  Methods = [
10
12
  [ "urn:example.com:echo",
11
13
  "echo",
@@ -15,7 +17,7 @@ class Echo_port_type
15
17
  :response_style => :document, :response_use => :literal,
16
18
  :faults => {} }
17
19
  ],
18
- [ XSD::QName.new("urn:example.com:echo", "echoAny"),
20
+ [ XSD::QName.new(NsEcho, "echoAny"),
19
21
  "urn:example.com:echoAny",
20
22
  "echoAny",
21
23
  [ ["retval", "echoany_return", [nil]] ],
@@ -73,7 +73,7 @@ class TestAny < Test::Unit::TestCase
73
73
  end
74
74
 
75
75
  def teardown
76
- teardown_server
76
+ teardown_server if @server
77
77
  unless $DEBUG
78
78
  File.unlink(pathname('echo.rb')) if File.exist?(pathname('echo.rb'))
79
79
  File.unlink(pathname('echoMappingRegistry.rb')) if File.exist?(pathname('echoMappingRegistry.rb'))
@@ -132,14 +132,9 @@ class TestAny < Test::Unit::TestCase
132
132
  gen.run
133
133
  end
134
134
  compare("expectedEcho.rb", "echo.rb")
135
+ compare("expectedMappingRegistry.rb", "echoMappingRegistry.rb")
135
136
  compare("expectedDriver.rb", "echoDriver.rb")
136
137
  compare("expectedService.rb", "echo_service.rb")
137
-
138
- File.unlink(pathname("echo_service.rb"))
139
- File.unlink(pathname("echo.rb"))
140
- File.unlink(pathname("echo_serviceClient.rb"))
141
- File.unlink(pathname("echoDriver.rb"))
142
- File.unlink(pathname("echoServant.rb"))
143
138
  end
144
139
 
145
140
  def compare(expected, actual)
@@ -21,6 +21,12 @@
21
21
  <element maxOccurs="unbounded" minOccurs="0" name="Item" type="typens:Item"/>
22
22
  </sequence>
23
23
  </complexType>
24
+
25
+ <complexType name="MeetingInfo">
26
+ <sequence>
27
+ <element name="meetingId" type="xsd:long"/>
28
+ </sequence>
29
+ </complexType>
24
30
  </schema>
25
31
  </wsdl:types>
26
32
 
@@ -30,11 +36,21 @@
30
36
  <wsdl:part name="list" type="typens:ItemList"/>
31
37
  </wsdl:message>
32
38
 
39
+ <wsdl:message name="getMeetingInfoRequest"/>
40
+
41
+ <wsdl:message name="getMeetingInfoResponse">
42
+ <wsdl:part name="getMeetingInfoReturn" type="typens:MeetingInfo"/>
43
+ </wsdl:message>
44
+
33
45
  <wsdl:portType name="ItemListPortType">
34
46
  <wsdl:operation name="listItem">
35
47
  <wsdl:input message="tns:listItemRequest" name="listItemRequest"/>
36
48
  <wsdl:output message="tns:listItemResponse" name="listItemResponse"/>
37
49
  </wsdl:operation>
50
+ <wsdl:operation name="getMeetingInfo">
51
+ <wsdl:input name="getMeetingInfoRequest" message="tns:getMeetingInfoRequest"/>
52
+ <wsdl:output name="getMeetingInfoResponse" message="tns:getMeetingInfoResponse"/>
53
+ </wsdl:operation>
38
54
  </wsdl:portType>
39
55
 
40
56
  <wsdl:binding name="ItemListBinding" type="tns:ItemListPortType">
@@ -42,12 +58,23 @@
42
58
  <wsdl:operation name="listItem">
43
59
  <soap:operation soapAction=""/>
44
60
  <wsdl:input name="listItemRequest">
45
- <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
46
- namespace="urn:jp.gr.jin.rrr.example.itemList" use="encoded"/>
61
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
62
+ namespace="urn:jp.gr.jin.rrr.example.itemList" use="encoded"/>
47
63
  </wsdl:input>
48
64
  <wsdl:output name="listItemResponse">
49
- <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
50
- namespace="urn:jp.gr.jin.rrr.example.itemList" use="encoded"/>
65
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
66
+ namespace="urn:jp.gr.jin.rrr.example.itemList" use="encoded"/>
67
+ </wsdl:output>
68
+ </wsdl:operation>
69
+ <wsdl:operation name="getMeetingInfo">
70
+ <soap:operation soapAction=""/>
71
+ <wsdl:input name="getMeetingInfoRequest">
72
+ <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
73
+ namespace="urn:jp.gr.jin.rrr.example.itemList"/>
74
+ </wsdl:input>
75
+ <wsdl:output name="getMeetingInfoResponse">
76
+ <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
77
+ namespace="urn:jp.gr.jin.rrr.example.itemList"/>
51
78
  </wsdl:output>
52
79
  </wsdl:operation>
53
80
  </wsdl:binding>
@@ -3,13 +3,17 @@ require 'soap/processor'
3
3
  require 'soap/mapping'
4
4
  require 'soap/rpc/element'
5
5
  require 'wsdl/importer'
6
- require 'itemList.rb'
6
+ require 'wsdl/soap/wsdl2ruby'
7
+ require File.join(File.dirname(File.expand_path(__FILE__)), '..', '..', 'testutil.rb')
7
8
 
8
9
 
9
10
  module WSDL
11
+ module AxisArray
10
12
 
11
13
 
12
14
  class TestAxisArray < Test::Unit::TestCase
15
+ DIR = File.dirname(File.expand_path(__FILE__))
16
+
13
17
  def setup
14
18
  @xml =<<__EOX__
15
19
  <?xml version="1.0" encoding="UTF-8"?>
@@ -35,11 +39,35 @@ class TestAxisArray < Test::Unit::TestCase
35
39
  </soapenv:Body>
36
40
  </soapenv:Envelope>
37
41
  __EOX__
42
+ setup_classdef
43
+ end
44
+
45
+ def teardown
46
+ unless $DEBUG
47
+ File.unlink(pathname('itemList.rb'))
48
+ File.unlink(pathname('itemListMappingRegistry.rb'))
49
+ File.unlink(pathname('itemListDriver.rb'))
50
+ end
51
+ end
52
+
53
+ def setup_classdef
54
+ gen = WSDL::SOAP::WSDL2Ruby.new
55
+ gen.location = pathname("axisArray.wsdl")
56
+ gen.basedir = DIR
57
+ gen.logger.level = Logger::FATAL
58
+ gen.opt['classdef'] = nil
59
+ gen.opt['mapping_registry'] = nil
60
+ gen.opt['module_path'] = self.class.to_s.sub(/::[^:]+$/, '')
61
+ gen.opt['driver'] = nil
62
+ gen.opt['force'] = true
63
+ gen.run
64
+ TestUtil.require(DIR, 'itemListDriver.rb', 'itemList.rb', 'itemListMappingRegistry.rb')
38
65
  end
39
66
 
40
67
  def test_by_stub
41
- header, body = ::SOAP::Processor.unmarshal(@xml)
42
- ary = ::SOAP::Mapping.soap2obj(body.response)
68
+ driver = ItemListPortType.new
69
+ driver.test_loopback_response << @xml
70
+ ary = driver.listItem
43
71
  assert_equal(3, ary.size)
44
72
  assert_equal("name1", ary[0].name)
45
73
  assert_equal("name2", ary[1].name)
@@ -63,7 +91,34 @@ __EOX__
63
91
  assert_equal("name2", ary[1].name)
64
92
  assert_equal("name3", ary[2].name)
65
93
  end
94
+
95
+ XML_LONG = <<__XML__
96
+ <?xml version="1.0" encoding="utf-8"?>
97
+ <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
98
+ <soapenv:Body>
99
+ <ns1:getMeetingInfoResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:jp.gr.jin.rrr.example.itemList">
100
+ <getMeetingInfoReturn href="#id0"/>
101
+ </ns1:getMeetingInfoResponse>
102
+ <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:MeetingInfo" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="urn:long">
103
+ <meetingId href="#id11"/>
104
+ </multiRef>
105
+ <multiRef id="id11" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:long" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">105759347</multiRef>
106
+ </soapenv:Body>
107
+ </soapenv:Envelope>
108
+ __XML__
109
+
110
+ def test_multiref_long
111
+ driver = ItemListPortType.new
112
+ driver.test_loopback_response << XML_LONG
113
+ ret = driver.getMeetingInfo
114
+ assert_equal(105759347, ret.meetingId)
115
+ end
116
+
117
+ def pathname(filename)
118
+ File.join(DIR, filename)
119
+ end
66
120
  end
67
121
 
68
122
 
69
123
  end
124
+ end