soap4r 1.5.5.20061022 → 1.5.6
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/wsdl2ruby.rb +8 -8
- data/lib/soap/XMLSchemaDatatypes.rb +1 -1
- data/lib/soap/XMLSchemaDatatypes1999.rb +1 -1
- data/lib/soap/attachment.rb +1 -1
- data/lib/soap/baseData.rb +102 -54
- data/lib/soap/cgistub.rb +1 -1
- data/lib/soap/charset.rb +1 -1
- data/lib/soap/driver.rb +1 -1
- data/lib/soap/element.rb +20 -12
- data/lib/soap/encodingstyle/aspDotNetHandler.rb +2 -2
- data/lib/soap/encodingstyle/handler.rb +1 -1
- data/lib/soap/encodingstyle/literalHandler.rb +29 -73
- data/lib/soap/encodingstyle/soapHandler.rb +8 -7
- data/lib/soap/filter.rb +10 -0
- data/lib/soap/filter/filterchain.rb +51 -0
- data/lib/soap/filter/handler.rb +31 -0
- data/lib/soap/generator.rb +11 -3
- data/lib/soap/header/handler.rb +6 -5
- data/lib/soap/header/handlerset.rb +7 -7
- data/lib/soap/header/simplehandler.rb +1 -1
- data/lib/soap/httpconfigloader.rb +7 -2
- data/lib/soap/mapping.rb +1 -1
- data/lib/soap/mapping/encodedregistry.rb +36 -26
- data/lib/soap/mapping/encodedregistry.rb~ +531 -0
- data/lib/soap/mapping/factory.rb +2 -2
- data/lib/soap/mapping/literalregistry.rb +107 -67
- data/lib/soap/mapping/mapping.rb +92 -112
- data/lib/soap/mapping/registry.rb +25 -8
- data/lib/soap/mapping/rubytypeFactory.rb +1 -1
- data/lib/soap/mapping/schemadefinition.rb +163 -0
- data/lib/soap/mapping/typeMap.rb +7 -1
- data/lib/soap/mapping/wsdlencodedregistry.rb +2 -2
- data/lib/soap/mapping/wsdlliteralregistry.rb +14 -23
- data/lib/soap/mappingRegistry.rb +1 -1
- data/lib/soap/marshal.rb +1 -1
- data/lib/soap/namespace.rb +1 -1
- data/lib/soap/netHttpClient.rb +43 -13
- data/lib/soap/parser.rb +40 -42
- data/lib/soap/processor.rb +1 -1
- data/lib/soap/property.rb +7 -7
- data/lib/soap/proxy.rb +1 -1
- data/lib/soap/qname.rb +1 -1
- data/lib/soap/rpc/cgistub.rb +34 -1
- data/lib/soap/rpc/driver.rb +2 -1
- data/lib/soap/rpc/element.rb +42 -15
- data/lib/soap/rpc/httpserver.rb +13 -1
- data/lib/soap/rpc/proxy.rb +51 -41
- data/lib/soap/rpc/router.rb +88 -33
- data/lib/soap/rpc/rpc.rb +1 -1
- data/lib/soap/rpc/soaplet.rb +51 -3
- data/lib/soap/rpc/standaloneServer.rb +1 -1
- data/lib/soap/rpcRouter.rb +1 -1
- data/lib/soap/rpcUtils.rb +1 -1
- data/lib/soap/server.rb +1 -1
- data/lib/soap/soap.rb +2 -2
- data/lib/soap/standaloneServer.rb +1 -1
- data/lib/soap/streamHandler.rb +13 -4
- data/lib/soap/wsdlDriver.rb +11 -15
- data/lib/tags +5144 -0
- data/lib/wsdl/binding.rb +1 -1
- data/lib/wsdl/data.rb +1 -1
- data/lib/wsdl/definitions.rb +1 -1
- data/lib/wsdl/documentation.rb +1 -1
- data/lib/wsdl/import.rb +1 -1
- data/lib/wsdl/importer.rb +1 -1
- data/lib/wsdl/info.rb +1 -1
- data/lib/wsdl/message.rb +1 -1
- data/lib/wsdl/operation.rb +10 -7
- data/lib/wsdl/operationBinding.rb +19 -5
- data/lib/wsdl/param.rb +11 -3
- data/lib/wsdl/parser.rb +4 -3
- data/lib/wsdl/part.rb +1 -1
- data/lib/wsdl/port.rb +1 -1
- data/lib/wsdl/portType.rb +1 -1
- data/lib/wsdl/service.rb +1 -1
- data/lib/wsdl/soap/address.rb +1 -1
- data/lib/wsdl/soap/binding.rb +1 -1
- data/lib/wsdl/soap/body.rb +3 -1
- data/lib/wsdl/soap/cgiStubCreator.rb +1 -1
- data/lib/wsdl/soap/classDefCreator.rb +78 -14
- data/lib/wsdl/soap/classDefCreatorSupport.rb +28 -11
- data/lib/wsdl/soap/clientSkeltonCreator.rb +3 -2
- data/lib/wsdl/soap/complexType.rb +8 -11
- data/lib/wsdl/soap/data.rb +1 -1
- data/lib/wsdl/soap/definitions.rb +49 -4
- data/lib/wsdl/soap/driverCreator.rb +1 -1
- data/lib/wsdl/soap/element.rb +3 -2
- data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +1 -1
- data/lib/wsdl/soap/fault.rb +1 -1
- data/lib/wsdl/soap/header.rb +1 -1
- data/lib/wsdl/soap/headerfault.rb +1 -1
- data/lib/wsdl/soap/literalMappingRegistryCreator.rb +41 -21
- data/lib/wsdl/soap/mappingRegistryCreator.rb +2 -1
- data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +45 -19
- data/lib/wsdl/soap/methodDefCreator.rb +28 -17
- data/lib/wsdl/soap/operation.rb +11 -11
- data/lib/wsdl/soap/servantSkeltonCreator.rb +3 -2
- data/lib/wsdl/soap/standaloneServerStubCreator.rb +1 -1
- data/lib/wsdl/soap/wsdl2ruby.rb +8 -2
- data/lib/wsdl/types.rb +1 -1
- data/lib/wsdl/wsdl.rb +1 -1
- data/lib/wsdl/xmlSchema/all.rb +1 -1
- data/lib/wsdl/xmlSchema/annotation.rb +1 -1
- data/lib/wsdl/xmlSchema/any.rb +10 -5
- data/lib/wsdl/xmlSchema/attribute.rb +1 -1
- data/lib/wsdl/xmlSchema/choice.rb +1 -1
- data/lib/wsdl/xmlSchema/complexContent.rb +11 -2
- data/lib/wsdl/xmlSchema/complexExtension.rb +8 -1
- data/lib/wsdl/xmlSchema/complexRestriction.rb +6 -2
- data/lib/wsdl/xmlSchema/complexType.rb +9 -1
- data/lib/wsdl/xmlSchema/content.rb +26 -5
- data/lib/wsdl/xmlSchema/data.rb +4 -1
- data/lib/wsdl/xmlSchema/element.rb +12 -9
- data/lib/wsdl/xmlSchema/enumeration.rb +1 -1
- data/lib/wsdl/xmlSchema/import.rb +1 -1
- data/lib/wsdl/xmlSchema/importer.rb +9 -6
- data/lib/wsdl/xmlSchema/include.rb +1 -1
- data/lib/wsdl/xmlSchema/length.rb +1 -1
- data/lib/wsdl/xmlSchema/list.rb +1 -1
- data/lib/wsdl/xmlSchema/maxlength.rb +1 -1
- data/lib/wsdl/xmlSchema/minlength.rb +1 -1
- data/lib/wsdl/xmlSchema/parser.rb +4 -3
- data/lib/wsdl/xmlSchema/pattern.rb +1 -1
- data/lib/wsdl/xmlSchema/schema.rb +1 -1
- data/lib/wsdl/xmlSchema/sequence.rb +1 -1
- data/lib/wsdl/xmlSchema/simpleContent.rb +1 -1
- data/lib/wsdl/xmlSchema/simpleExtension.rb +1 -1
- data/lib/wsdl/xmlSchema/simpleRestriction.rb +1 -1
- data/lib/wsdl/xmlSchema/simpleType.rb +8 -1
- data/lib/wsdl/xmlSchema/union.rb +35 -0
- data/lib/wsdl/xmlSchema/unique.rb +1 -1
- data/lib/wsdl/xmlSchema/xsd2ruby.rb +6 -1
- data/lib/xsd/charset.rb +1 -1
- data/lib/xsd/classloader.rb +26 -0
- data/lib/xsd/codegen.rb +1 -1
- data/lib/xsd/codegen/classdef.rb +1 -1
- data/lib/xsd/codegen/commentdef.rb +1 -1
- data/lib/xsd/codegen/gensupport.rb +119 -14
- data/lib/xsd/codegen/methoddef.rb +1 -1
- data/lib/xsd/codegen/moduledef.rb +1 -1
- data/lib/xsd/datatypes.rb +52 -13
- data/lib/xsd/datatypes1999.rb +1 -1
- data/lib/xsd/iconvcharset.rb +1 -1
- data/lib/xsd/mapping.rb +1 -1
- data/lib/xsd/namedelements.rb +1 -1
- data/lib/xsd/ns.rb +2 -2
- data/lib/xsd/qname.rb +1 -1
- data/lib/xsd/xmlparser.rb +16 -3
- data/lib/xsd/xmlparser/parser.rb +6 -2
- data/lib/xsd/xmlparser/rexmlparser.rb +5 -1
- data/lib/xsd/xmlparser/xmlparser.rb +1 -1
- data/lib/xsd/xmlparser/xmlscanner.rb +4 -2
- data/test/interopR2/InteropTest.rb +83 -0
- data/test/interopR2/InteropTest.wsdl +315 -0
- data/test/interopR2/InteropTestC.wsdl +208 -0
- data/test/interopR2/InteropTestDriver.rb +328 -0
- data/test/interopR2/SOAP4R_SOAPBuildersInteropTest_R2.wsdl +461 -0
- data/test/interopR2/SOAP4R_SOAPBuildersInteropTest_R2GroupB.wsdl +20 -0
- data/test/interopR2/SOAP4R_SOAPBuildersInteropTest_R2GroupCClient.rb +178 -0
- data/test/interopR2/SOAPBuildersInterop_R2GrC.wsdl +17 -0
- data/test/interopR2/clientBase.rb +0 -3
- data/test/interopR2/groupc.wsdl +17 -0
- data/test/interopR2/result_client.NetRemoting.txt +0 -4593
- data/test/interopR2/test.sh +9 -9
- data/test/runner.rb +1 -3
- data/test/soap/asp.net/test_aspdotnet.rb +20 -9
- data/test/soap/case/test_mapping.rb +57 -0
- data/test/soap/filter/test_filter.rb +146 -0
- data/test/soap/literalArrayMapping/test_definedarray.rb +7 -9
- data/test/soap/marshal/marshaltestlib.rb +1 -1
- data/test/soap/ssl/test_ssl.rb +0 -10
- data/test/soap/struct/test_struct.rb +2 -9
- data/test/soap/test_basetype.rb +114 -0
- data/test/soap/test_empty.rb +26 -2
- data/test/soap/test_envelopenamespace.rb +2 -9
- data/test/soap/test_extraattr.rb +55 -0
- data/test/soap/test_httpconfigloader.rb +17 -0
- data/test/soap/test_property.rb +4 -1
- data/test/soap/test_response_as_xml.rb +31 -9
- data/test/soap/test_soapelement.rb +21 -3
- data/test/soap/test_streamhandler.rb +3 -10
- data/test/soap/test_styleuse.rb +2 -9
- data/test/soap/wsdlDriver/test_calc.rb +3 -20
- data/test/soap/wsdlDriver/test_document.rb +2 -9
- data/test/soap/wsdlDriver/test_simpletype.rb +2 -9
- data/test/testutil.rb +54 -0
- data/test/wsdl/abstract/abstract.wsdl +82 -3
- data/test/wsdl/abstract/test_abstract.rb +48 -19
- data/test/wsdl/any/any.wsdl +63 -0
- data/test/wsdl/any/expectedDriver.rb +22 -1
- data/test/wsdl/any/expectedEcho.rb +19 -0
- data/test/wsdl/any/expectedService.rb +29 -4
- data/test/wsdl/any/test_any.rb +36 -31
- data/test/wsdl/choice/choice.wsdl +37 -0
- data/test/wsdl/choice/test_choice.rb +66 -17
- data/test/wsdl/complexcontent/test_echo.rb +7 -18
- data/test/wsdl/document/array/test_array.rb +8 -18
- data/test/wsdl/document/ping_nosoapaction.wsdl +1 -1
- data/test/wsdl/document/test_nosoapaction.rb +2 -9
- data/test/wsdl/document/test_number.rb +3 -10
- data/test/wsdl/document/test_rpc.rb +96 -21
- data/test/wsdl/fault/fault.wsdl +79 -0
- data/test/wsdl/fault/multifault.wsdl +96 -0
- data/test/wsdl/fault/test_fault.rb +119 -0
- data/test/wsdl/fault/test_multifault.rb +134 -0
- data/test/wsdl/list/test_list.rb +6 -16
- data/test/wsdl/marshal/test_wsdlmarshal.rb +10 -13
- data/test/wsdl/oneway/oneway.wsdl +36 -0
- data/test/wsdl/oneway/test_oneway.rb +108 -0
- data/test/wsdl/overload/test_overload.rb +3 -10
- data/test/wsdl/qualified/test_qualified.rb +9 -17
- data/test/wsdl/qualified/test_unqualified.rb +14 -21
- data/test/wsdl/ref/expectedDriver.rb +51 -0
- data/test/wsdl/ref/expectedProduct.rb +71 -71
- data/test/wsdl/ref/test_ref.rb +13 -35
- data/test/wsdl/rpc/rpc.wsdl +27 -1
- data/test/wsdl/rpc/test-rpc-lit-qualified.wsdl +74 -0
- data/test/wsdl/rpc/test-rpc-lit.wsdl +11 -4
- data/test/wsdl/rpc/test-rpc-lit12.wsdl +455 -0
- data/test/wsdl/rpc/test_rpc.rb +20 -19
- data/test/wsdl/rpc/test_rpc_lit.rb +82 -29
- data/test/wsdl/simplecontent/simplecontent.wsdl +1 -0
- data/test/wsdl/simplecontent/test_simplecontent.rb +5 -19
- data/test/wsdl/simpletype/rpc/expectedDriver.rb +6 -4
- data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +15 -0
- data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +64 -0
- data/test/wsdl/simpletype/rpc/expectedService.rb +6 -4
- data/test/wsdl/simpletype/rpc/rpc.wsdl +18 -0
- data/test/wsdl/simpletype/rpc/test_rpc.rb +6 -16
- data/test/wsdl/simpletype/simpletype.wsdl +19 -0
- data/test/wsdl/simpletype/test_simpletype.rb +2 -9
- data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +6 -4
- data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +40 -0
- data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +6 -4
- data/test/wsdl/soap/wsdl2ruby/expectedService.rb +6 -4
- data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +5 -6
- data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +3 -16
- data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +9 -17
- data/test/wsdl/soaptype/test_soaptype.rb +29 -11
- data/test/xsd/test_xsd.rb +115 -1
- metadata +421 -454
- data/test/interopR2/client.NetRemoting.rb.result +0 -3410
- data/test/interopR2/client.NetRemoting_Base.log +0 -6279
- data/test/interopR2/client.NetRemoting_GroupB.log +0 -1188
- data/test/interopR2/client4S4C2_Base.log +0 -4955
- data/test/interopR2/client4S4C2_GroupB.log +0 -1000
- data/test/interopR2/client4S4C_Base.log +0 -4635
- data/test/interopR2/client4S4C_GroupB.log +0 -900
- data/test/interopR2/clientASP.NET_Base.log +0 -5468
- data/test/interopR2/clientASP.NET_GroupB.log +0 -977
- data/test/interopR2/clientApacheAxis_Base.log +0 -3171
- data/test/interopR2/clientApacheAxis_GroupB.log +0 -498
- data/test/interopR2/clientApacheSOAP_Base.log +0 -3171
- data/test/interopR2/clientBEAWebLogic_Base.log +0 -3171
- data/test/interopR2/clientBEAWebLogic_GroupB.log +0 -498
- data/test/interopR2/clientCapeConnect_Base.log +0 -2126
- data/test/interopR2/clientDelphi_Base.log +0 -0
- data/test/interopR2/clientEasySoap_Base.log +0 -6187
- data/test/interopR2/clientEasySoap_GroupB.log +0 -1076
- data/test/interopR2/clientFrontier_Base.log +0 -5188
- data/test/interopR2/clientHP_Base.log +0 -3171
- data/test/interopR2/clientHP_GroupB.log +0 -498
- data/test/interopR2/clientJSOAP_Base.log +0 -4465
- data/test/interopR2/clientJSOAP_GroupB.log +0 -824
- data/test/interopR2/clientKafkaXSLT_Base.log +0 -10299
- data/test/interopR2/clientKafkaXSLT_GroupB.log +0 -1739
- data/test/interopR2/clientMSSOAPToolkit2.0_Base.log +0 -4805
- data/test/interopR2/clientMSSOAPToolkit2.0_GroupB.log +0 -871
- data/test/interopR2/clientMSSOAPToolkit3.0_Base.log +0 -5076
- data/test/interopR2/clientMSSOAPToolkit3.0_GroupB.log +0 -908
- data/test/interopR2/clientNuSOAP_Base.log +0 -5076
- data/test/interopR2/clientNuSOAP_GroupB.log +0 -958
- data/test/interopR2/clientNuWave_Base.log +0 -2019
- data/test/interopR2/clientOpenLink_Base.log +0 -6171
- data/test/interopR2/clientOpenLink_GroupB.log +0 -1094
- data/test/interopR2/clientOracle_Base.log +0 -5594
- data/test/interopR2/clientPEAR_Base.log +0 -6261
- data/test/interopR2/clientPEAR_GroupB.log +0 -1106
- data/test/interopR2/clientPhalanx_Base.log +0 -41036
- data/test/interopR2/clientPhalanx_GroupB.log +0 -6519
- data/test/interopR2/clientSIMACE_Base.log +0 -6171
- data/test/interopR2/clientSIMACE_GroupB.log +0 -1093
- data/test/interopR2/clientSOAP4R.rb.result +0 -3409
- data/test/interopR2/clientSOAP4R_Base.log +0 -6366
- data/test/interopR2/clientSOAP4R_GroupB.log +0 -1112
- data/test/interopR2/clientSQLData_Base.log +0 -4857
- data/test/interopR2/clientSQLData_GroupB.log +0 -770
- data/test/interopR2/clientSilverStream_Base.log +0 -3171
- data/test/interopR2/clientSpray2001_Base.log +0 -8187
- data/test/interopR2/clientSpray2001_GroupB.log +0 -1408
- data/test/interopR2/clientSun_Base.log +0 -4641
- data/test/interopR2/clientSun_GroupB.log +0 -856
- data/test/interopR2/clientVWOpentalkSoap_Base.log +0 -5402
- data/test/interopR2/clientVWOpentalkSoap_GroupB.log +0 -972
- data/test/interopR2/clientWASPC_Base.log +0 -4187
- data/test/interopR2/clientWASPC_GroupB.log +0 -763
- data/test/interopR2/clientWASP_Base.log +0 -5414
- data/test/interopR2/clientWASP_GroupB.log +0 -970
- data/test/interopR2/clientWebMethods_Base.log +0 -3075
- data/test/interopR2/clientWebMethods_GroupB.log +0 -483
- data/test/interopR2/clientWhiteMesa_Base.log +0 -4359
- data/test/interopR2/clientWhiteMesa_GroupB.log +0 -808
- data/test/interopR2/clientWingfoot_Base.log +0 -4445
- data/test/interopR2/clientWingfoot_GroupB.log +0 -848
- data/test/interopR2/clientXMLBus_Base.log +0 -3075
- data/test/interopR2/clientXMLBus_GroupB.log +0 -483
- data/test/interopR2/clientXSOAP_Base.log +0 -4445
- data/test/interopR2/clienteSOAP_Base.log +0 -8728
- data/test/interopR2/clientgSOAP_Base.log +0 -4689
- data/test/interopR2/clientgSOAP_GroupB.log +0 -1014
- data/test/interopR2/clientkSOAP_Base.log +0 -5625
@@ -1,5 +1,5 @@
|
|
1
1
|
# SOAP4R - Mapping registry.
|
2
|
-
# Copyright (C) 2000-
|
2
|
+
# Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
3
|
|
4
4
|
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
5
|
# redistribute it and/or modify it under the same terms of Ruby's license;
|
@@ -199,11 +199,18 @@ module RegistrySupport
|
|
199
199
|
end
|
200
200
|
|
201
201
|
def schema_definition_from_elename(qname)
|
202
|
-
@elename_schema_definition[qname]
|
202
|
+
@elename_schema_definition[qname]
|
203
203
|
end
|
204
204
|
|
205
205
|
def schema_definition_from_type(type)
|
206
|
-
@type_schema_definition[type]
|
206
|
+
@type_schema_definition[type]
|
207
|
+
end
|
208
|
+
|
209
|
+
def find_node_definition(node)
|
210
|
+
schema_definition_from_type(node.type) ||
|
211
|
+
schema_definition_from_elename(node.elename) ||
|
212
|
+
find_schema_definition(node.elename.name) ||
|
213
|
+
find_schema_definition(node.type.name)
|
207
214
|
end
|
208
215
|
|
209
216
|
def find_schema_definition(name)
|
@@ -219,8 +226,7 @@ module RegistrySupport
|
|
219
226
|
definition = Mapping.schema_definition_classdef(obj.class)
|
220
227
|
if definition && attributes = definition.attributes
|
221
228
|
attributes.each do |qname, param|
|
222
|
-
at = obj.
|
223
|
-
XSD::CodeGen::GenSupport.safemethodname('xmlattr_' + qname.name))
|
229
|
+
at = Mapping.get_attribute(obj, XSD::CodeGen::GenSupport.safemethodname('xmlattr_' + qname.name))
|
224
230
|
ele.extraattr[qname] = at
|
225
231
|
end
|
226
232
|
elsif obj.respond_to?(:__xmlattr)
|
@@ -245,12 +251,23 @@ module RegistrySupport
|
|
245
251
|
end
|
246
252
|
|
247
253
|
def base2obj(value, klass)
|
248
|
-
if value.respond_to?(:data)
|
249
|
-
|
254
|
+
v = if value.respond_to?(:data)
|
255
|
+
value.data
|
256
|
+
elsif value.respond_to?(:text)
|
257
|
+
value.text
|
258
|
+
else
|
259
|
+
nil
|
260
|
+
end
|
261
|
+
if value.is_a?(klass)
|
262
|
+
v
|
250
263
|
else
|
251
|
-
klass.new(
|
264
|
+
klass.new(v).data
|
252
265
|
end
|
253
266
|
end
|
267
|
+
|
268
|
+
def is_stubobj_elements_for_array(vars)
|
269
|
+
vars.keys.size == 1 and vars.values[0].is_a?(::Array)
|
270
|
+
end
|
254
271
|
end
|
255
272
|
|
256
273
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# SOAP4R - Ruby type mapping factory.
|
2
|
-
# Copyright (C) 2000-
|
2
|
+
# Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
3
|
|
4
4
|
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
5
|
# redistribute it and/or modify it under the same terms of Ruby's license;
|
@@ -0,0 +1,163 @@
|
|
1
|
+
# SOAP4R - Ruby type mapping schema definition utility.
|
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 'xsd/codegen/gensupport'
|
10
|
+
|
11
|
+
|
12
|
+
module SOAP
|
13
|
+
module Mapping
|
14
|
+
|
15
|
+
|
16
|
+
class SchemaElementDefinition
|
17
|
+
attr_reader :varname, :mapped_class, :elename, :minoccurs, :maxoccurs
|
18
|
+
|
19
|
+
def initialize(varname, mapped_class, elename, minoccurs, maxoccurs,
|
20
|
+
as_any, as_array)
|
21
|
+
@varname = varname
|
22
|
+
@mapped_class = mapped_class
|
23
|
+
@elename = elename
|
24
|
+
@minoccurs = minoccurs
|
25
|
+
@maxoccurs = maxoccurs
|
26
|
+
@as_any = as_any
|
27
|
+
@as_array = as_array
|
28
|
+
end
|
29
|
+
|
30
|
+
def as_any?
|
31
|
+
@as_any
|
32
|
+
end
|
33
|
+
|
34
|
+
def as_array?
|
35
|
+
@as_array
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
module SchemaComplexTypeDefinition
|
40
|
+
include Enumerable
|
41
|
+
|
42
|
+
def initialize
|
43
|
+
@content = []
|
44
|
+
@element_cache = {}
|
45
|
+
end
|
46
|
+
|
47
|
+
def is_concrete_definition
|
48
|
+
true
|
49
|
+
end
|
50
|
+
|
51
|
+
def <<(ele)
|
52
|
+
@content << ele
|
53
|
+
end
|
54
|
+
|
55
|
+
def each
|
56
|
+
@content.each do |ele|
|
57
|
+
yield ele
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def size
|
62
|
+
@content.size
|
63
|
+
end
|
64
|
+
|
65
|
+
def as_any?
|
66
|
+
false
|
67
|
+
end
|
68
|
+
|
69
|
+
def as_array?
|
70
|
+
false
|
71
|
+
end
|
72
|
+
|
73
|
+
def find_element(qname)
|
74
|
+
@element_cache[qname] ||= search_element(qname)
|
75
|
+
end
|
76
|
+
|
77
|
+
private
|
78
|
+
|
79
|
+
def search_element(qname)
|
80
|
+
each do |ele|
|
81
|
+
if ele.respond_to?(:find_element)
|
82
|
+
found = ele.find_element(qname)
|
83
|
+
return found if found
|
84
|
+
else
|
85
|
+
# relaxed match
|
86
|
+
if ele.elename == qname or
|
87
|
+
(qname.namespace.nil? and ele.elename.name == qname.name)
|
88
|
+
return ele
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
nil
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
class SchemaEmptyDefinition
|
97
|
+
include SchemaComplexTypeDefinition
|
98
|
+
|
99
|
+
def initialize
|
100
|
+
super()
|
101
|
+
@content.freeze
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
class SchemaSequenceDefinition
|
106
|
+
include SchemaComplexTypeDefinition
|
107
|
+
|
108
|
+
def initialize
|
109
|
+
super()
|
110
|
+
end
|
111
|
+
|
112
|
+
def choice?
|
113
|
+
false
|
114
|
+
end
|
115
|
+
|
116
|
+
# override
|
117
|
+
def as_array?
|
118
|
+
@as_array ||= false
|
119
|
+
end
|
120
|
+
|
121
|
+
def set_array
|
122
|
+
@as_array = true
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
class SchemaChoiceDefinition
|
127
|
+
include SchemaComplexTypeDefinition
|
128
|
+
|
129
|
+
def initialize
|
130
|
+
super()
|
131
|
+
end
|
132
|
+
|
133
|
+
def choice?
|
134
|
+
true
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
class SchemaDefinition
|
139
|
+
EMPTY = SchemaEmptyDefinition.new
|
140
|
+
|
141
|
+
attr_reader :class_for
|
142
|
+
attr_reader :elename, :type
|
143
|
+
attr_reader :qualified
|
144
|
+
attr_accessor :attributes
|
145
|
+
attr_accessor :elements
|
146
|
+
|
147
|
+
def initialize(class_for, elename, type, qualified)
|
148
|
+
@class_for = class_for
|
149
|
+
@elename = elename
|
150
|
+
@type = type
|
151
|
+
@qualified = qualified
|
152
|
+
@elements = EMPTY
|
153
|
+
@attributes = nil
|
154
|
+
end
|
155
|
+
|
156
|
+
def choice?
|
157
|
+
@elements.choice?
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
|
162
|
+
end
|
163
|
+
end
|
data/lib/soap/mapping/typeMap.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# SOAP4R - Base type mapping definition
|
2
|
-
# Copyright (C) 2000
|
2
|
+
# Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
3
|
|
4
4
|
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
5
|
# redistribute it and/or modify it under the same terms of Ruby's license;
|
@@ -13,6 +13,9 @@ TypeMap = {
|
|
13
13
|
XSD::XSDAnySimpleType::Type => SOAPAnySimpleType,
|
14
14
|
|
15
15
|
XSD::XSDString::Type => SOAPString,
|
16
|
+
XSD::XSDNormalizedString::Type => SOAPNormalizedString,
|
17
|
+
XSD::XSDToken::Type => SOAPToken,
|
18
|
+
XSD::XSDLanguage::Type => SOAPLanguage,
|
16
19
|
XSD::XSDBoolean::Type => SOAPBoolean,
|
17
20
|
XSD::XSDDecimal::Type => SOAPDecimal,
|
18
21
|
XSD::XSDFloat::Type => SOAPFloat,
|
@@ -46,6 +49,9 @@ TypeMap = {
|
|
46
49
|
|
47
50
|
# soap4r does not use soapenc types actively but it should be accepted.
|
48
51
|
SOAP::SOAPString::SOAPENCType => SOAPString,
|
52
|
+
SOAP::SOAPNormalizedString::Type => SOAPNormalizedString,
|
53
|
+
SOAP::SOAPToken::Type => SOAPToken,
|
54
|
+
SOAP::SOAPLanguage::Type => SOAPLanguage,
|
49
55
|
SOAP::SOAPBoolean::SOAPENCType => SOAPBoolean,
|
50
56
|
SOAP::SOAPDecimal::SOAPENCType => SOAPDecimal,
|
51
57
|
SOAP::SOAPFloat::SOAPENCType => SOAPFloat,
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# SOAP4R - WSDL encoded mapping registry.
|
2
|
-
# Copyright (C) 2000-
|
2
|
+
# Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
3
|
|
4
4
|
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
5
|
# redistribute it and/or modify it under the same terms of Ruby's license;
|
@@ -226,7 +226,7 @@ private
|
|
226
226
|
item = definition.elements.find { |k, v| k.elename == value.elename }
|
227
227
|
if item and item.mapped_class
|
228
228
|
# klass must be a SOAPBasetype or a class
|
229
|
-
if item.mapped_class.
|
229
|
+
if item.mapped_class.include?(::SOAP::SOAPBasetype)
|
230
230
|
if value.respond_to?(:data)
|
231
231
|
child = item.mapped_class.new(value.data).data
|
232
232
|
else
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# SOAP4R - WSDL literal mapping registry.
|
2
|
-
# Copyright (C)
|
2
|
+
# Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
3
|
|
4
4
|
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
5
|
# redistribute it and/or modify it under the same terms of Ruby's license;
|
@@ -77,7 +77,9 @@ private
|
|
77
77
|
def obj2elesoap(obj, eledef)
|
78
78
|
ele = nil
|
79
79
|
qualified = (eledef.elementform == 'qualified')
|
80
|
-
if
|
80
|
+
if obj.is_a?(SOAPNil)
|
81
|
+
ele = obj
|
82
|
+
elsif eledef.type
|
81
83
|
if type = @definedtypes[eledef.type]
|
82
84
|
ele = obj2typesoap(obj, type)
|
83
85
|
elsif type = TypeMap[eledef.type]
|
@@ -112,7 +114,7 @@ private
|
|
112
114
|
|
113
115
|
def simpleobj2soap(obj, type)
|
114
116
|
type.check_lexical_format(obj)
|
115
|
-
return SOAPNil.new if obj.nil?
|
117
|
+
return SOAPNil.new if obj.nil?
|
116
118
|
if type.base
|
117
119
|
ele = base2soap(obj, TypeMap[type.base])
|
118
120
|
elsif type.list
|
@@ -134,18 +136,12 @@ private
|
|
134
136
|
end
|
135
137
|
|
136
138
|
def complexobj2sequencesoap(obj, ele, type)
|
137
|
-
elements
|
138
|
-
any = nil
|
139
|
-
if type.have_any?
|
140
|
-
any = Mapping.get_attributes_for_any(obj, elements)
|
141
|
-
end
|
142
|
-
elements.each do |child_ele|
|
139
|
+
type.elements.each do |child_ele|
|
143
140
|
case child_ele
|
144
141
|
when WSDL::XMLSchema::Any
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
end
|
142
|
+
any = Mapping.get_attributes_for_any(obj)
|
143
|
+
SOAPElement.from_objs(any).each do |child|
|
144
|
+
ele.add(child)
|
149
145
|
end
|
150
146
|
when WSDL::XMLSchema::Element
|
151
147
|
complexobj2soapchildren(obj, ele, child_ele)
|
@@ -161,13 +157,7 @@ private
|
|
161
157
|
end
|
162
158
|
|
163
159
|
def complexobj2choicesoap(obj, ele, type)
|
164
|
-
elements
|
165
|
-
any = nil
|
166
|
-
if type.have_any?
|
167
|
-
raise MappingError.new(
|
168
|
-
"<any/> in <choice/> is not supported: #{ele.name.name}")
|
169
|
-
end
|
170
|
-
elements.each do |child_ele|
|
160
|
+
type.elements.each do |child_ele|
|
171
161
|
break if complexobj2soapchildren(obj, ele, child_ele, true)
|
172
162
|
end
|
173
163
|
ele
|
@@ -183,7 +173,7 @@ private
|
|
183
173
|
|
184
174
|
def complexobj2soapchildren_array(obj, ele, child_ele, allow_nil_value)
|
185
175
|
child = Mapping.get_attribute(obj, child_ele.name.name)
|
186
|
-
if child.nil? and obj.
|
176
|
+
if child.nil? and obj.is_a?(::Array)
|
187
177
|
child = obj
|
188
178
|
end
|
189
179
|
if child.nil?
|
@@ -233,10 +223,11 @@ private
|
|
233
223
|
def nil2soap(ele)
|
234
224
|
if ele.nillable
|
235
225
|
obj2elesoap(nil, ele) # add an empty element
|
236
|
-
elsif
|
226
|
+
elsif ele.minoccurs == 0
|
237
227
|
nil # intends no element
|
238
228
|
else
|
239
|
-
|
229
|
+
warn("nil not allowed: #{ele.name.name}")
|
230
|
+
nil
|
240
231
|
end
|
241
232
|
end
|
242
233
|
end
|
data/lib/soap/mappingRegistry.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# SOAP4R - RPC utility -- Mapping registry.
|
2
|
-
# Copyright (C)
|
2
|
+
# Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
3
|
|
4
4
|
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
5
|
# redistribute it and/or modify it under the same terms of Ruby's license;
|
data/lib/soap/marshal.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# SOAP4R - Marshalling/Unmarshalling Ruby's object using SOAP Encoding.
|
2
|
-
# Copyright (C)
|
2
|
+
# Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
3
|
|
4
4
|
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
5
|
# redistribute it and/or modify it under the same terms of Ruby's license;
|
data/lib/soap/namespace.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# SOAP4R - Namespace library
|
2
|
-
# Copyright (C)
|
2
|
+
# Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
3
|
|
4
4
|
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
5
|
# redistribute it and/or modify it under the same terms of Ruby's license;
|
data/lib/soap/netHttpClient.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# SOAP4R - net/http wrapper
|
2
|
-
# Copyright (C)
|
2
|
+
# Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
3
3
|
|
4
4
|
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
5
5
|
# redistribute it and/or modify it under the same terms of Ruby's license;
|
@@ -29,19 +29,17 @@ class NetHttpClient
|
|
29
29
|
attr_accessor :connect_timeout
|
30
30
|
attr_accessor :send_timeout # ignored for now.
|
31
31
|
attr_accessor :receive_timeout
|
32
|
+
attr_reader :test_loopback_response
|
32
33
|
|
33
34
|
def initialize(proxy = nil, agent = nil)
|
34
35
|
@proxy = proxy ? URI.parse(proxy) : nil
|
35
36
|
@agent = agent
|
36
37
|
@debug_dev = nil
|
38
|
+
@test_loopback_response = []
|
37
39
|
@session_manager = SessionManager.new
|
38
40
|
@no_proxy = @ssl_config = @protocol_version = nil
|
39
41
|
@connect_timeout = @send_timeout = @receive_timeout = nil
|
40
42
|
end
|
41
|
-
|
42
|
-
def test_loopback_response
|
43
|
-
raise NotImplementedError.new("not supported for now")
|
44
|
-
end
|
45
43
|
|
46
44
|
def proxy=(proxy)
|
47
45
|
if proxy.nil?
|
@@ -88,6 +86,9 @@ class NetHttpClient
|
|
88
86
|
end
|
89
87
|
|
90
88
|
def get_content(url, header = {})
|
89
|
+
if str = @test_loopback_response.shift
|
90
|
+
return str
|
91
|
+
end
|
91
92
|
unless url.is_a?(URI)
|
92
93
|
url = URI.parse(url)
|
93
94
|
end
|
@@ -102,12 +103,30 @@ class NetHttpClient
|
|
102
103
|
private
|
103
104
|
|
104
105
|
def post_redirect(url, req_body, header, redirect_count)
|
106
|
+
if str = @test_loopback_response.shift
|
107
|
+
if @debug_dev
|
108
|
+
@debug_dev << "= Request\n\n"
|
109
|
+
@debug_dev << req_body
|
110
|
+
@debug_dev << "\n\n= Response\n\n"
|
111
|
+
@debug_dev << str
|
112
|
+
end
|
113
|
+
status = 200
|
114
|
+
reason = nil
|
115
|
+
contenttype = 'text/xml'
|
116
|
+
content = str
|
117
|
+
return Response.new(status, reason, contenttype, content)
|
118
|
+
return str
|
119
|
+
end
|
105
120
|
unless url.is_a?(URI)
|
106
121
|
url = URI.parse(url)
|
107
122
|
end
|
108
123
|
extra = header.dup
|
109
124
|
extra['User-Agent'] = @agent if @agent
|
110
125
|
res = start(url) { |http|
|
126
|
+
if @debug_dev
|
127
|
+
@debug_dev << "= Request\n\n"
|
128
|
+
@debug_dev << req_body << "\n"
|
129
|
+
end
|
111
130
|
http.post(url.request_uri, req_body, extra)
|
112
131
|
}
|
113
132
|
case res
|
@@ -119,7 +138,7 @@ private
|
|
119
138
|
raise ArgumentError.new("Too many redirects")
|
120
139
|
end
|
121
140
|
else
|
122
|
-
Response.
|
141
|
+
Response.from_httpresponse(res)
|
123
142
|
end
|
124
143
|
end
|
125
144
|
|
@@ -130,7 +149,10 @@ private
|
|
130
149
|
response = yield(worker)
|
131
150
|
worker.finish
|
132
151
|
}
|
133
|
-
|
152
|
+
if @debug_dev
|
153
|
+
@debug_dev << "\n\n= Response\n\n"
|
154
|
+
@debug_dev << response.body << "\n"
|
155
|
+
end
|
134
156
|
response
|
135
157
|
end
|
136
158
|
|
@@ -186,16 +208,24 @@ private
|
|
186
208
|
end
|
187
209
|
|
188
210
|
class Response
|
189
|
-
attr_reader :content
|
190
211
|
attr_reader :status
|
191
212
|
attr_reader :reason
|
192
213
|
attr_reader :contenttype
|
214
|
+
attr_reader :content
|
215
|
+
|
216
|
+
def initialize(status, reason, contenttype, content)
|
217
|
+
@status = status
|
218
|
+
@reason = reason
|
219
|
+
@contenttype = contenttype
|
220
|
+
@content = content
|
221
|
+
end
|
193
222
|
|
194
|
-
def
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
223
|
+
def self.from_httpresponse(res)
|
224
|
+
status = res.code.to_i
|
225
|
+
reason = res.message
|
226
|
+
contenttype = res['content-type']
|
227
|
+
content = res.body
|
228
|
+
new(status, reason, contenttype, content)
|
199
229
|
end
|
200
230
|
end
|
201
231
|
end
|