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,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>