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,6 +21,7 @@
21
21
  <xsd:sequence>
22
22
  <xsd:element minOccurs="0" maxOccurs="1" name="struct1" type="tns:echo_struct" />
23
23
  <xsd:element minOccurs="0" maxOccurs="1" name="struct-2" type="tns:echo_struct" />
24
+ <xsd:element minOccurs="0" maxOccurs="1" name="long" type="xsd:long" />
24
25
  </xsd:sequence>
25
26
  <xsd:attribute name="attr_string" type="xsd:string" />
26
27
  <xsd:attribute name="attr-int" type="xsd:int" />
@@ -31,6 +32,7 @@
31
32
  <xsd:sequence>
32
33
  <xsd:element minOccurs="0" maxOccurs="1" name="struct1" type="tns:echo_struct" />
33
34
  <xsd:element minOccurs="0" maxOccurs="1" name="struct-2" type="tns:echo_struct" />
35
+ <xsd:element minOccurs="0" maxOccurs="1" name="long" type="xsd:long" />
34
36
  </xsd:sequence>
35
37
  <xsd:attribute name="attr_string" type="xsd:string" />
36
38
  <xsd:attribute name="attr-int" type="xsd:int" />
@@ -55,7 +55,7 @@ class TestNoSOAPAction < Test::Unit::TestCase
55
55
  end
56
56
 
57
57
  def teardown
58
- teardown_server
58
+ teardown_server if @server
59
59
  @client.reset_stream if @client
60
60
  end
61
61
 
@@ -38,7 +38,7 @@ class TestNumber < Test::Unit::TestCase
38
38
  end
39
39
 
40
40
  def teardown
41
- teardown_server
41
+ teardown_server if @server
42
42
  File.unlink(pathname('foo.rb'))
43
43
  @client.reset_stream if @client
44
44
  end
@@ -58,6 +58,7 @@ class TestRPC < Test::Unit::TestCase
58
58
  e = Echoele.new
59
59
  e.struct1 = Echo_struct.new(nil, nil)
60
60
  e.struct_2 = Echo_struct.new(nil, nil)
61
+ e.long = nil
61
62
  e
62
63
  end
63
64
 
@@ -65,6 +66,7 @@ class TestRPC < Test::Unit::TestCase
65
66
  e = Echoele.new
66
67
  e.struct1 = Echo_struct.new("", nil)
67
68
  e.struct_2 = Echo_struct.new("", nil)
69
+ e.long = 0
68
70
  e
69
71
  end
70
72
  end
@@ -80,7 +82,7 @@ class TestRPC < Test::Unit::TestCase
80
82
  end
81
83
 
82
84
  def teardown
83
- teardown_server
85
+ teardown_server if @server
84
86
  File.unlink(pathname('echo.rb')) unless $DEBUG
85
87
  File.unlink(pathname('echoMappingRegistry.rb')) unless $DEBUG
86
88
  File.unlink(pathname('echoDriver.rb')) unless $DEBUG
@@ -123,27 +125,92 @@ class TestRPC < Test::Unit::TestCase
123
125
  @client.endpoint_url = "http://localhost:#{Port}/"
124
126
  @client.wiredump_dev = STDOUT if $DEBUG
125
127
  @client.literal_mapping_registry = EchoMappingRegistry::LiteralRegistry
128
+ do_test_with_stub(@client)
129
+ end
130
+
131
+ def test_driver_stub
132
+ @client = ::WSDL::Document::Docrpc_porttype.new
133
+ @client.endpoint_url = "http://localhost:#{Port}/"
134
+ @client.wiredump_dev = STDOUT if $DEBUG
135
+ do_test_with_stub(@client)
136
+ end
137
+
138
+ def test_nil_attribute
139
+ @client = ::WSDL::Document::Docrpc_porttype.new
140
+ @client.endpoint_url = "http://localhost:#{Port}/"
141
+ @client.wiredump_dev = STDOUT if $DEBUG
142
+ struct1 = Echo_struct.new("mystring1", now1 = Time.now)
143
+ struct1.xmlattr_m_attr = nil
144
+ struct2 = Echo_struct.new("mystr<>ing2", now2 = Time.now)
145
+ struct2.xmlattr_m_attr = ''
146
+ echo = Echoele.new(struct1, struct2, 105759347)
147
+ echo.xmlattr_attr_string = ''
148
+ echo.xmlattr_attr_int = nil
149
+ ret = @client.echo(echo)
150
+ # struct1 and struct2 are swapped
151
+ assert_equal('', ret.struct1.xmlattr_m_attr)
152
+ assert_equal(nil, ret.struct_2.xmlattr_m_attr)
153
+ assert_equal('', ret.xmlattr_attr_string)
154
+ assert_equal(nil, ret.xmlattr_attr_int)
155
+ assert_equal(105759347, ret.long)
156
+ end
126
157
 
158
+ def do_test_with_stub(client)
127
159
  struct1 = Echo_struct.new("mystring1", now1 = Time.now)
128
160
  struct1.xmlattr_m_attr = 'myattr1'
129
- struct2 = Echo_struct.new("mystring2", now2 = Time.now)
161
+ struct2 = Echo_struct.new("mystr<>ing2", now2 = Time.now)
130
162
  struct2.xmlattr_m_attr = 'myattr2'
131
- echo = Echoele.new(struct1, struct2)
132
- echo.xmlattr_attr_string = 'attr_string'
163
+ echo = Echoele.new(struct1, struct2, 105759347)
164
+ echo.xmlattr_attr_string = 'attr_str<>ing'
133
165
  echo.xmlattr_attr_int = 5
134
- ret = @client.echo(echo)
166
+ ret = client.echo(echo)
135
167
 
136
168
  # struct#m_datetime in a response is a DateTime even though
137
169
  # struct#m_datetime in a request is a Time.
138
170
  timeformat = "%Y-%m-%dT%H:%M:%S"
139
- assert_equal("mystring2", ret.struct1.m_string)
171
+ assert_equal("mystr<>ing2", ret.struct1.m_string)
140
172
  assert_equal(now2.strftime(timeformat),
141
173
  date2time(ret.struct1.m_datetime).strftime(timeformat))
142
174
  assert_equal("mystring1", ret.struct_2.m_string)
143
175
  assert_equal(now1.strftime(timeformat),
144
176
  date2time(ret.struct_2.m_datetime).strftime(timeformat))
145
- assert_equal("attr_string", ret.xmlattr_attr_string)
177
+ assert_equal("attr_str<>ing", ret.xmlattr_attr_string)
146
178
  assert_equal(5, ret.xmlattr_attr_int)
179
+ assert_equal(105759347, ret.long)
180
+ end
181
+
182
+ def test_wsdl_with_map
183
+ wsdl = File.join(DIR, 'document.wsdl')
184
+ @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
185
+ @client.endpoint_url = "http://localhost:#{Port}/"
186
+ @client.wiredump_dev = STDOUT if $DEBUG
187
+
188
+ struct1 = {
189
+ :m_string => "mystring1",
190
+ :m_datetime => (now1 = Time.now),
191
+ :xmlattr_m_attr => "myattr1"
192
+ }
193
+ struct2 = {
194
+ "m_string" => "mystr<>ing2",
195
+ "m_datetime" => now2 = (Time.now),
196
+ "xmlattr_m_attr" => "myattr2"
197
+ }
198
+ echo = {
199
+ :struct1 => struct1,
200
+ "struct-2" => struct2,
201
+ :xmlattr_attr_string => 'attr_str<>ing',
202
+ "xmlattr_attr-int" => 5
203
+ }
204
+ ret = @client.echo(echo)
205
+ #
206
+ now1str = XSD::XSDDateTime.new(now1).to_s
207
+ now2str = XSD::XSDDateTime.new(now2).to_s
208
+ assert_equal("mystr<>ing2", ret.struct1.m_string)
209
+ assert_equal(now2str, ret.struct1.m_datetime)
210
+ assert_equal("mystring1", ret.struct_2.m_string)
211
+ assert_equal(now1str, ret.struct_2.m_datetime)
212
+ assert_equal("attr_str<>ing", ret.xmlattr_attr_string)
213
+ assert_equal("5", ret.xmlattr_attr_int)
147
214
  end
148
215
 
149
216
  def date2time(date)
@@ -168,7 +235,7 @@ class TestRPC < Test::Unit::TestCase
168
235
  @client.wiredump_dev = STDOUT if $DEBUG
169
236
 
170
237
  echo = SOAPElement.new('foo')
171
- echo.extraattr['attr_string'] = 'attr_string'
238
+ echo.extraattr['attr_string'] = 'attr_str<>ing'
172
239
  echo.extraattr['attr-int'] = 5
173
240
  echo.add(struct1 = SOAPElement.new('struct1'))
174
241
  struct1.add(SOAPElement.new('m_string', 'mystring1'))
@@ -186,7 +253,7 @@ class TestRPC < Test::Unit::TestCase
186
253
  assert_equal("mystring1", ret.struct_2.m_string)
187
254
  assert_equal('2005-03-17T19:47:31',
188
255
  ret.struct_2.m_datetime.strftime(timeformat))
189
- assert_equal('attr_string', ret.xmlattr_attr_string)
256
+ assert_equal('attr_str<>ing', ret.xmlattr_attr_string)
190
257
  assert_equal(5, ret.xmlattr_attr_int)
191
258
 
192
259
  echo = {'struct1' => {'m_string' => 'mystring1', 'm_datetime' => '2005-03-17T19:47:31+01:00'},
@@ -266,6 +333,7 @@ __XML__
266
333
  ret = @client.return_nil
267
334
  assert_nil(ret.struct1.m_string)
268
335
  assert_nil(ret.struct_2.m_string)
336
+ assert_nil(ret.long)
269
337
  end
270
338
 
271
339
  def test_empty
@@ -279,6 +347,7 @@ __XML__
279
347
  ret = @client.return_empty
280
348
  assert_equal("", ret.struct1.m_string)
281
349
  assert_equal("", ret.struct_2.m_string)
350
+ assert_equal(0, ret.long)
282
351
  end
283
352
  end
284
353
 
@@ -18,7 +18,7 @@ class TestFault < Test::Unit::TestCase
18
18
  end
19
19
 
20
20
  def teardown
21
- teardown_server
21
+ teardown_server if @server
22
22
  unless $DEBUG
23
23
  File.unlink(pathname('Add.rb'))
24
24
  File.unlink(pathname('AddMappingRegistry.rb'))
@@ -18,7 +18,7 @@ class TestMultiFault < Test::Unit::TestCase
18
18
  end
19
19
 
20
20
  def teardown
21
- teardown_server
21
+ teardown_server if @server
22
22
  unless $DEBUG
23
23
  File.unlink(pathname('Add.rb'))
24
24
  File.unlink(pathname('AddMappingRegistry.rb'))
@@ -0,0 +1,58 @@
1
+ require 'xsd/qname'
2
+
3
+ module WSDL; module Group
4
+
5
+
6
+ # {urn:grouptype}groupele_type
7
+ # comment - SOAP::SOAPString
8
+ # element - SOAP::SOAPString
9
+ # eletype - SOAP::SOAPString
10
+ # var - SOAP::SOAPString
11
+ # xmlattr_attr_min - SOAP::SOAPDecimal
12
+ # xmlattr_attr_max - SOAP::SOAPDecimal
13
+ class Groupele_type
14
+ AttrAttr_max = XSD::QName.new(nil, "attr_max")
15
+ AttrAttr_min = XSD::QName.new(nil, "attr_min")
16
+
17
+ attr_accessor :comment
18
+ attr_reader :__xmlele_any
19
+ attr_accessor :element
20
+ attr_accessor :eletype
21
+ attr_accessor :var
22
+
23
+ def set_any(elements)
24
+ @__xmlele_any = elements
25
+ end
26
+
27
+ def __xmlattr
28
+ @__xmlattr ||= {}
29
+ end
30
+
31
+ def xmlattr_attr_min
32
+ __xmlattr[AttrAttr_min]
33
+ end
34
+
35
+ def xmlattr_attr_min=(value)
36
+ __xmlattr[AttrAttr_min] = value
37
+ end
38
+
39
+ def xmlattr_attr_max
40
+ __xmlattr[AttrAttr_max]
41
+ end
42
+
43
+ def xmlattr_attr_max=(value)
44
+ __xmlattr[AttrAttr_max] = value
45
+ end
46
+
47
+ def initialize(comment = nil, element = nil, eletype = nil, var = nil)
48
+ @comment = comment
49
+ @__xmlele_any = nil
50
+ @element = element
51
+ @eletype = eletype
52
+ @var = var
53
+ @__xmlattr = {}
54
+ end
55
+ end
56
+
57
+
58
+ end; end
@@ -0,0 +1,51 @@
1
+ require 'echo.rb'
2
+ require 'echoMappingRegistry.rb'
3
+ require 'soap/rpc/driver'
4
+
5
+ module WSDL::Group
6
+
7
+ class Group_porttype < ::SOAP::RPC::Driver
8
+ DefaultEndpointUrl = "http://localhost:17171/"
9
+
10
+ Methods = [
11
+ [ "urn:group:echo",
12
+ "echo",
13
+ [ ["in", "parameters", ["::SOAP::SOAPElement", "urn:grouptype", "groupele"]],
14
+ ["out", "parameters", ["::SOAP::SOAPElement", "urn:grouptype", "groupele"]] ],
15
+ { :request_style => :document, :request_use => :literal,
16
+ :response_style => :document, :response_use => :literal,
17
+ :faults => {} }
18
+ ]
19
+ ]
20
+
21
+ def initialize(endpoint_url = nil)
22
+ endpoint_url ||= DefaultEndpointUrl
23
+ super(endpoint_url, nil)
24
+ self.mapping_registry = EchoMappingRegistry::EncodedRegistry
25
+ self.literal_mapping_registry = EchoMappingRegistry::LiteralRegistry
26
+ init_methods
27
+ end
28
+
29
+ private
30
+
31
+ def init_methods
32
+ Methods.each do |definitions|
33
+ opt = definitions.last
34
+ if opt[:request_style] == :document
35
+ add_document_operation(*definitions)
36
+ else
37
+ add_rpc_operation(*definitions)
38
+ qname = definitions[0]
39
+ name = definitions[2]
40
+ if qname.name != name and qname.name.capitalize == name.capitalize
41
+ ::SOAP::Mapping.define_singleton_method(self, qname.name) do |*arg|
42
+ __send__(name, *arg)
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+
51
+ end
@@ -0,0 +1,67 @@
1
+ require 'echo.rb'
2
+ require 'soap/mapping'
3
+
4
+ module WSDL; module Group
5
+
6
+ module EchoMappingRegistry
7
+ EncodedRegistry = ::SOAP::Mapping::EncodedRegistry.new
8
+ LiteralRegistry = ::SOAP::Mapping::LiteralRegistry.new
9
+ NsGrouptype = "urn:grouptype"
10
+ NsXMLSchema = "http://www.w3.org/2001/XMLSchema"
11
+
12
+ EncodedRegistry.register(
13
+ :class => WSDL::Group::Groupele_type,
14
+ :schema_type => XSD::QName.new(NsGrouptype, "groupele_type"),
15
+ :schema_element => [
16
+ ["comment", "SOAP::SOAPString", [0, 1]],
17
+ ["any", [nil, XSD::QName.new(NsXMLSchema, "anyType")]],
18
+ [ :choice,
19
+ ["element", ["SOAP::SOAPString", XSD::QName.new(nil, "element")]],
20
+ ["eletype", ["SOAP::SOAPString", XSD::QName.new(nil, "eletype")]]
21
+ ],
22
+ ["var", ["SOAP::SOAPString", XSD::QName.new(nil, "var")]]
23
+ ],
24
+ :schema_attribute => {
25
+ XSD::QName.new(nil, "attr_min") => "SOAP::SOAPDecimal",
26
+ XSD::QName.new(nil, "attr_max") => "SOAP::SOAPDecimal"
27
+ }
28
+ )
29
+
30
+ LiteralRegistry.register(
31
+ :class => WSDL::Group::Groupele_type,
32
+ :schema_type => XSD::QName.new(NsGrouptype, "groupele_type"),
33
+ :schema_element => [
34
+ ["comment", "SOAP::SOAPString", [0, 1]],
35
+ ["any", [nil, XSD::QName.new(NsXMLSchema, "anyType")]],
36
+ [ :choice,
37
+ ["element", ["SOAP::SOAPString", XSD::QName.new(nil, "element")]],
38
+ ["eletype", ["SOAP::SOAPString", XSD::QName.new(nil, "eletype")]]
39
+ ],
40
+ ["var", ["SOAP::SOAPString", XSD::QName.new(nil, "var")]]
41
+ ],
42
+ :schema_attribute => {
43
+ XSD::QName.new(nil, "attr_min") => "SOAP::SOAPDecimal",
44
+ XSD::QName.new(nil, "attr_max") => "SOAP::SOAPDecimal"
45
+ }
46
+ )
47
+
48
+ LiteralRegistry.register(
49
+ :class => WSDL::Group::Groupele_type,
50
+ :schema_name => XSD::QName.new(NsGrouptype, "groupele"),
51
+ :schema_element => [
52
+ ["comment", "SOAP::SOAPString", [0, 1]],
53
+ ["any", [nil, XSD::QName.new(NsXMLSchema, "anyType")]],
54
+ [ :choice,
55
+ ["element", ["SOAP::SOAPString", XSD::QName.new(nil, "element")]],
56
+ ["eletype", ["SOAP::SOAPString", XSD::QName.new(nil, "eletype")]]
57
+ ],
58
+ ["var", ["SOAP::SOAPString", XSD::QName.new(nil, "var")]]
59
+ ],
60
+ :schema_attribute => {
61
+ XSD::QName.new(nil, "attr_min") => "SOAP::SOAPDecimal",
62
+ XSD::QName.new(nil, "attr_max") => "SOAP::SOAPDecimal"
63
+ }
64
+ )
65
+ end
66
+
67
+ end; end
@@ -0,0 +1,88 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <definitions
3
+ name="echo"
4
+ targetNamespace="urn:group"
5
+ xmlns:tns="urn:group"
6
+ xmlns:txd="urn:grouptype"
7
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
8
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
9
+ xmlns="http://schemas.xmlsoap.org/wsdl/">
10
+ <types>
11
+ <xsd:schema elementFormDefault="unqualified" targetNamespace="urn:grouptype">
12
+
13
+ <xsd:element name="comment" type="xsd:string"/>
14
+
15
+ <xsd:simpleType name="attr_type">
16
+ <xsd:restriction base="xsd:decimal">
17
+ <xsd:maxInclusive value="-50"/>
18
+ <xsd:minInclusive value="50"/>
19
+ </xsd:restriction>
20
+ </xsd:simpleType>
21
+
22
+ <xsd:group name="common">
23
+ <xsd:sequence>
24
+ <xsd:element ref="txd:comment" minOccurs="0"/>
25
+ <xsd:any namespace="##any" minOccurs="0"/>
26
+ </xsd:sequence>
27
+ </xsd:group>
28
+
29
+ <xsd:attributeGroup name="common_attr">
30
+ <xsd:attribute name="attr_min" type="txd:attr_type" default="0"/>
31
+ <xsd:attribute name="attr_max" type="txd:attr_type" default="0"/>
32
+ </xsd:attributeGroup>
33
+
34
+ <xsd:group name="common_element">
35
+ <xsd:sequence>
36
+ <xsd:group ref="txd:common"/>
37
+ <xsd:choice>
38
+ <xsd:element name="element" type="xsd:string"/>
39
+ <xsd:element name="eletype" type="xsd:string"/>
40
+ </xsd:choice>
41
+ </xsd:sequence>
42
+ </xsd:group>
43
+
44
+ <xsd:complexType name="groupele_type">
45
+ <xsd:sequence>
46
+ <xsd:group ref="txd:common_element"/>
47
+ <xsd:element name="var" type="xsd:string"/>
48
+ </xsd:sequence>
49
+ <xsd:attributeGroup ref="txd:common_attr"/>
50
+ </xsd:complexType>
51
+
52
+ <xsd:element name="groupele" type="txd:groupele_type"/>
53
+ </xsd:schema>
54
+ </types>
55
+
56
+ <message name="echo_in">
57
+ <part name="parameters" element="txd:groupele" />
58
+ </message>
59
+ <message name="echo_out">
60
+ <part name="parameters" element="txd:groupele" />
61
+ </message>
62
+
63
+ <portType name="group_porttype">
64
+ <operation name="echo">
65
+ <input message="tns:echo_in" />
66
+ <output message="tns:echo_out" />
67
+ </operation>
68
+ </portType>
69
+
70
+ <binding name="group_binding" type="tns:group_porttype">
71
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
72
+ <operation name="echo">
73
+ <soap:operation soapAction="urn:group:echo" style="document" />
74
+ <input>
75
+ <soap:body use="literal" />
76
+ </input>
77
+ <output>
78
+ <soap:body use="literal" />
79
+ </output>
80
+ </operation>
81
+ </binding>
82
+
83
+ <service name="group_service">
84
+ <port name="docprc_service_port" binding="tns:group_binding">
85
+ <soap:address location="http://localhost:17171/" />
86
+ </port>
87
+ </service>
88
+ </definitions>