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
data/lib/soap/parser.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# SOAP4R - SOAP XML Instance Parser 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;
|
@@ -28,7 +28,9 @@ private
|
|
28
28
|
class ParseFrame
|
29
29
|
attr_reader :node
|
30
30
|
attr_reader :name
|
31
|
-
attr_reader :ns
|
31
|
+
attr_reader :ns
|
32
|
+
attr_reader :encodingstyle
|
33
|
+
attr_reader :handler
|
32
34
|
|
33
35
|
class NodeContainer
|
34
36
|
def initialize(node)
|
@@ -46,15 +48,22 @@ private
|
|
46
48
|
|
47
49
|
public
|
48
50
|
|
49
|
-
def initialize(ns, name, node, encodingstyle)
|
51
|
+
def initialize(ns, name, node, encodingstyle, handler)
|
50
52
|
@ns = ns
|
51
53
|
@name = name
|
52
|
-
|
54
|
+
@node = NodeContainer.new(node)
|
53
55
|
@encodingstyle = encodingstyle
|
56
|
+
@handler = handler
|
54
57
|
end
|
55
58
|
|
56
|
-
|
57
|
-
|
59
|
+
# to avoid memory consumption
|
60
|
+
def update(ns, name, node, encodingstyle, handler)
|
61
|
+
@ns = ns
|
62
|
+
@name = name
|
63
|
+
@node.replace_node(node)
|
64
|
+
@encodingstyle = encodingstyle
|
65
|
+
@handler = handler
|
66
|
+
self
|
58
67
|
end
|
59
68
|
end
|
60
69
|
|
@@ -69,6 +78,7 @@ public
|
|
69
78
|
@opt = opt
|
70
79
|
@parser = XSD::XMLParser.create_parser(self, opt)
|
71
80
|
@parsestack = nil
|
81
|
+
@recycleframe = nil
|
72
82
|
@lastnode = nil
|
73
83
|
@handlers = {}
|
74
84
|
@envelopenamespace = opt[:envelopenamespace] || EnvelopeNamespace
|
@@ -106,7 +116,7 @@ public
|
|
106
116
|
lastframe = @parsestack.last
|
107
117
|
ns = parent = parent_encodingstyle = nil
|
108
118
|
if lastframe
|
109
|
-
ns = lastframe.ns
|
119
|
+
ns = lastframe.ns
|
110
120
|
parent = lastframe.node
|
111
121
|
parent_encodingstyle = lastframe.encodingstyle
|
112
122
|
else
|
@@ -114,10 +124,9 @@ public
|
|
114
124
|
parent = ParseFrame::NodeContainer.new(nil)
|
115
125
|
parent_encodingstyle = nil
|
116
126
|
end
|
117
|
-
|
118
|
-
attrs = XSD::XMLParser.filter_ns(ns, attrs)
|
127
|
+
# ns might be the same
|
128
|
+
ns, attrs = XSD::XMLParser.filter_ns(ns, attrs)
|
119
129
|
encodingstyle = find_encodingstyle(ns, attrs)
|
120
|
-
|
121
130
|
# Children's encodingstyle is derived from its parent.
|
122
131
|
if encodingstyle.nil?
|
123
132
|
if parent.node.is_a?(SOAPHeader)
|
@@ -126,17 +135,24 @@ public
|
|
126
135
|
encodingstyle = parent_encodingstyle || @default_encodingstyle
|
127
136
|
end
|
128
137
|
end
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
138
|
+
handler = find_handler(encodingstyle)
|
139
|
+
unless handler
|
140
|
+
raise FormatDecodeError.new("Unknown encodingStyle: #{ encodingstyle }.")
|
141
|
+
end
|
142
|
+
node = decode_tag(ns, name, attrs, parent, handler)
|
143
|
+
if @recycleframe
|
144
|
+
@parsestack << @recycleframe.update(ns, name, node, encodingstyle, handler)
|
145
|
+
@recycleframe = nil
|
146
|
+
else
|
147
|
+
@parsestack << ParseFrame.new(ns, name, node, encodingstyle, handler)
|
148
|
+
end
|
133
149
|
end
|
134
150
|
|
135
151
|
def characters(text)
|
136
152
|
lastframe = @parsestack.last
|
137
153
|
if lastframe
|
138
154
|
# Need not to be cloned because character does not have attr.
|
139
|
-
decode_text(lastframe.ns, text, lastframe.
|
155
|
+
decode_text(lastframe.ns, text, lastframe.handler)
|
140
156
|
else
|
141
157
|
# Ignore Text outside of SOAP Envelope.
|
142
158
|
p text if $DEBUG
|
@@ -148,8 +164,9 @@ public
|
|
148
164
|
unless name == lastframe.name
|
149
165
|
raise UnexpectedElementError.new("Closing element name '#{ name }' does not match with opening element '#{ lastframe.name }'.")
|
150
166
|
end
|
151
|
-
decode_tag_end(lastframe.ns, lastframe.node, lastframe.
|
167
|
+
decode_tag_end(lastframe.ns, lastframe.node, lastframe.handler)
|
152
168
|
@lastnode = lastframe.node.node
|
169
|
+
@recycleframe = lastframe
|
153
170
|
end
|
154
171
|
|
155
172
|
private
|
@@ -163,44 +180,24 @@ private
|
|
163
180
|
nil
|
164
181
|
end
|
165
182
|
|
166
|
-
def decode_tag(ns, name, attrs, parent,
|
183
|
+
def decode_tag(ns, name, attrs, parent, handler)
|
167
184
|
ele = ns.parse(name)
|
168
|
-
|
169
185
|
# Envelope based parsing.
|
170
186
|
if ((ele.namespace == @envelopenamespace) ||
|
171
187
|
(@allow_unqualified_element && ele.namespace.nil?))
|
172
188
|
o = decode_soap_envelope(ns, ele, attrs, parent)
|
173
189
|
return o if o
|
174
190
|
end
|
175
|
-
|
176
191
|
# Encoding based parsing.
|
177
|
-
handler
|
178
|
-
if handler
|
179
|
-
return handler.decode_tag(ns, ele, attrs, parent)
|
180
|
-
else
|
181
|
-
raise FormatDecodeError.new("Unknown encodingStyle: #{ encodingstyle }.")
|
182
|
-
end
|
192
|
+
return handler.decode_tag(ns, ele, attrs, parent)
|
183
193
|
end
|
184
194
|
|
185
|
-
def decode_tag_end(ns, node,
|
186
|
-
return
|
187
|
-
|
188
|
-
handler = find_handler(encodingstyle)
|
189
|
-
if handler
|
190
|
-
return handler.decode_tag_end(ns, node)
|
191
|
-
else
|
192
|
-
raise FormatDecodeError.new("Unknown encodingStyle: #{ encodingstyle }.")
|
193
|
-
end
|
195
|
+
def decode_tag_end(ns, node, handler)
|
196
|
+
return handler.decode_tag_end(ns, node)
|
194
197
|
end
|
195
198
|
|
196
|
-
def decode_text(ns, text,
|
197
|
-
handler
|
198
|
-
|
199
|
-
if handler
|
200
|
-
handler.decode_text(ns, text)
|
201
|
-
else
|
202
|
-
# How should I do?
|
203
|
-
end
|
199
|
+
def decode_text(ns, text, handler)
|
200
|
+
handler.decode_text(ns, text)
|
204
201
|
end
|
205
202
|
|
206
203
|
def decode_soap_envelope(ns, ele, attrs, parent)
|
@@ -231,6 +228,7 @@ private
|
|
231
228
|
o = SOAPFault.new
|
232
229
|
parent.node.fault = o
|
233
230
|
end
|
231
|
+
o.extraattr.update(attrs) if o
|
234
232
|
o
|
235
233
|
end
|
236
234
|
|
data/lib/soap/processor.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# SOAP4R - marshal/unmarshal interface.
|
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;
|
data/lib/soap/property.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# soap/property.rb: SOAP4R - Property implementation.
|
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;
|
@@ -65,13 +65,13 @@ class Property
|
|
65
65
|
|
66
66
|
KEY_REGSRC = '([^=:\\\\]*(?:\\\\.[^=:\\\\]*)*)'
|
67
67
|
DEF_REGSRC = '\\s*' + KEY_REGSRC + '\\s*[=:]\\s*(.*)'
|
68
|
-
COMMENT_REGEXP = Regexp.new('^(?:#.*|)$')
|
69
|
-
CATDEF_REGEXP = Regexp.new("^\\[\\s*#{KEY_REGSRC}\\s*\\]$")
|
70
|
-
LINE_REGEXP = Regexp.new("^#{DEF_REGSRC}$")
|
68
|
+
COMMENT_REGEXP = Regexp.new('^(?:#.*|)$', nil, 'u')
|
69
|
+
CATDEF_REGEXP = Regexp.new("^\\[\\s*#{KEY_REGSRC}\\s*\\]$", nil, 'u')
|
70
|
+
LINE_REGEXP = Regexp.new("^#{DEF_REGSRC}$", nil, 'u')
|
71
71
|
def load(stream)
|
72
72
|
key_prefix = ""
|
73
73
|
stream.each_with_index do |line, lineno|
|
74
|
-
line.sub!(/\r?\n\z
|
74
|
+
line.sub!(/\r?\n\z/u, '')
|
75
75
|
case line
|
76
76
|
when COMMENT_REGEXP
|
77
77
|
next
|
@@ -279,7 +279,7 @@ private
|
|
279
279
|
when Symbol
|
280
280
|
[name]
|
281
281
|
when String
|
282
|
-
name.scan(/[^.\\]+(?:\\.[^.\\])*/) # split with unescaped '.'
|
282
|
+
name.scan(/[^.\\]+(?:\\.[^.\\])*/u) # split with unescaped '.'
|
283
283
|
when Array
|
284
284
|
name
|
285
285
|
else
|
@@ -311,7 +311,7 @@ private
|
|
311
311
|
end
|
312
312
|
|
313
313
|
def loadstr(str)
|
314
|
-
str.gsub(/\\./) { |c| eval("\"#{c}\"") }
|
314
|
+
str.gsub(/\\./u) { |c| eval("\"#{c}\"") }
|
315
315
|
end
|
316
316
|
end
|
317
317
|
|
data/lib/soap/proxy.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# SOAP4R - Proxy library.
|
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;
|
data/lib/soap/qname.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# SOAP4R - XML QName definition.
|
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/rpc/cgistub.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# SOAP4R - CGI/mod_ruby stub 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;
|
@@ -34,6 +34,11 @@ class CGIStub < Logger::Application
|
|
34
34
|
def [](var); end
|
35
35
|
|
36
36
|
def meta_vars; end
|
37
|
+
|
38
|
+
EMPTY_COOKIES = [].freeze
|
39
|
+
def cookies; EMPTY_COOKIES; end
|
40
|
+
|
41
|
+
def user; end
|
37
42
|
end
|
38
43
|
|
39
44
|
class SOAPStdinRequest < SOAPRequest
|
@@ -53,6 +58,18 @@ class CGIStub < Logger::Application
|
|
53
58
|
'HTTP_SOAPACTION' => ENV['HTTP_SOAPAction']
|
54
59
|
}
|
55
60
|
end
|
61
|
+
|
62
|
+
def cookies
|
63
|
+
if cookie = ENV['HTTP_Cookie'] || ENV['Cookie']
|
64
|
+
[WEBrick::Cookie.parse(cookie)]
|
65
|
+
else
|
66
|
+
EMPTY_COOKIES
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def user
|
71
|
+
ENV['REMOTE_USER']
|
72
|
+
end
|
56
73
|
end
|
57
74
|
|
58
75
|
class SOAPFCGIRequest < SOAPRequest
|
@@ -72,6 +89,18 @@ class CGIStub < Logger::Application
|
|
72
89
|
'HTTP_SOAPACTION' => @request.env['HTTP_SOAPAction']
|
73
90
|
}
|
74
91
|
end
|
92
|
+
|
93
|
+
def cookies
|
94
|
+
if cookie = @request.env['HTTP_Cookie'] || @request.env['Cookie']
|
95
|
+
[WEBrick::Cookie.parse(cookie)]
|
96
|
+
else
|
97
|
+
EMPTY_COOKIES
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def user
|
102
|
+
@request.env['REMOTE_USER']
|
103
|
+
end
|
75
104
|
end
|
76
105
|
|
77
106
|
def initialize(appname, default_namespace)
|
@@ -125,6 +154,10 @@ class CGIStub < Logger::Application
|
|
125
154
|
end
|
126
155
|
alias add_rpc_headerhandler add_headerhandler
|
127
156
|
|
157
|
+
def filterchain
|
158
|
+
@router.filterchain
|
159
|
+
end
|
160
|
+
|
128
161
|
# method entry interface
|
129
162
|
|
130
163
|
def add_rpc_method(obj, name, *param)
|
data/lib/soap/rpc/driver.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# SOAP4R - SOAP RPC driver
|
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;
|
@@ -62,6 +62,7 @@ class Driver
|
|
62
62
|
__attr_proxy :generate_explicit_type, true
|
63
63
|
__attr_proxy :return_response_as_xml, true
|
64
64
|
__attr_proxy :headerhandler
|
65
|
+
__attr_proxy :filterchain
|
65
66
|
__attr_proxy :streamhandler
|
66
67
|
__attr_proxy :test_loopback_response
|
67
68
|
__attr_proxy :reset_stream
|
data/lib/soap/rpc/element.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# SOAP4R - RPC element 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;
|
@@ -100,6 +100,10 @@ class SOAPMethod < SOAPStruct
|
|
100
100
|
init_param(@param_def) if @param_def
|
101
101
|
end
|
102
102
|
|
103
|
+
def have_member
|
104
|
+
true
|
105
|
+
end
|
106
|
+
|
103
107
|
def have_outparam?
|
104
108
|
@outparam_names.size > 0
|
105
109
|
end
|
@@ -112,6 +116,14 @@ class SOAPMethod < SOAPStruct
|
|
112
116
|
collect_params(OUT, INOUT)
|
113
117
|
end
|
114
118
|
|
119
|
+
def input_param_types
|
120
|
+
collect_param_types(IN, INOUT)
|
121
|
+
end
|
122
|
+
|
123
|
+
def output_param_types
|
124
|
+
collect_param_types(OUT, INOUT)
|
125
|
+
end
|
126
|
+
|
115
127
|
def set_param(params)
|
116
128
|
params.each do |param, data|
|
117
129
|
@inparam[param] = data
|
@@ -129,9 +141,9 @@ class SOAPMethod < SOAPStruct
|
|
129
141
|
|
130
142
|
def get_paramtypes(names)
|
131
143
|
types = []
|
132
|
-
@signature.each do |io_type, name,
|
133
|
-
if
|
134
|
-
types[idx] =
|
144
|
+
@signature.each do |io_type, name, type_qname|
|
145
|
+
if type_qname && idx = names.index(name)
|
146
|
+
types[idx] = type_qname
|
135
147
|
end
|
136
148
|
end
|
137
149
|
types
|
@@ -189,9 +201,17 @@ class SOAPMethod < SOAPStruct
|
|
189
201
|
|
190
202
|
private
|
191
203
|
|
204
|
+
def collect_param_types(*type)
|
205
|
+
names = []
|
206
|
+
@signature.each do |io_type, name, type_qname|
|
207
|
+
names << type_qname if type.include?(io_type)
|
208
|
+
end
|
209
|
+
names
|
210
|
+
end
|
211
|
+
|
192
212
|
def collect_params(*type)
|
193
213
|
names = []
|
194
|
-
@signature.each do |io_type, name,
|
214
|
+
@signature.each do |io_type, name, type_qname|
|
195
215
|
names << name if type.include?(io_type)
|
196
216
|
end
|
197
217
|
names
|
@@ -199,15 +219,24 @@ private
|
|
199
219
|
|
200
220
|
def init_param(param_def)
|
201
221
|
param_def.each do |io_type, name, param_type|
|
222
|
+
mapped_class, nsdef, namedef = param_type
|
223
|
+
if mapped_class.is_a?(String)
|
224
|
+
mapped_class = Mapping.class_from_name(mapped_class)
|
225
|
+
end
|
226
|
+
if nsdef && namedef
|
227
|
+
type_qname = XSD::QName.new(nsdef, namedef)
|
228
|
+
elsif mapped_class
|
229
|
+
type_qname = TypeMap.index(mapped_class)
|
230
|
+
end
|
202
231
|
case io_type
|
203
232
|
when IN
|
204
|
-
@signature.push([IN, name,
|
233
|
+
@signature.push([IN, name, type_qname])
|
205
234
|
@inparam_names.push(name)
|
206
235
|
when OUT
|
207
|
-
@signature.push([OUT, name,
|
236
|
+
@signature.push([OUT, name, type_qname])
|
208
237
|
@outparam_names.push(name)
|
209
238
|
when INOUT
|
210
|
-
@signature.push([INOUT, name,
|
239
|
+
@signature.push([INOUT, name, type_qname])
|
211
240
|
@inoutparam_names.push(name)
|
212
241
|
when RETVAL
|
213
242
|
if @retval_name
|
@@ -215,13 +244,7 @@ private
|
|
215
244
|
end
|
216
245
|
@retval_name = name
|
217
246
|
@retval_class_name = nil
|
218
|
-
|
219
|
-
if param_type[0].is_a?(String)
|
220
|
-
@retval_class_name = Mapping.class_from_name(param_type[0])
|
221
|
-
else
|
222
|
-
@retval_class_name = param_type[0]
|
223
|
-
end
|
224
|
-
end
|
247
|
+
@retval_class_name = mapped_class
|
225
248
|
else
|
226
249
|
raise MethodDefinitionError.new("unknown type: #{io_type}")
|
227
250
|
end
|
@@ -284,6 +307,10 @@ class SOAPMethodResponse < SOAPMethod
|
|
284
307
|
@retval = nil
|
285
308
|
end
|
286
309
|
|
310
|
+
def retval
|
311
|
+
@retval
|
312
|
+
end
|
313
|
+
|
287
314
|
def retval=(retval)
|
288
315
|
@retval = retval
|
289
316
|
@retval.elename = @retval.elename.dup_name(@retval_name || 'return')
|
data/lib/soap/rpc/httpserver.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# SOAP4R - WEBrick HTTP Server
|
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;
|
@@ -52,6 +52,14 @@ class HTTPServer < Logger::Application
|
|
52
52
|
@server.shutdown if @server
|
53
53
|
end
|
54
54
|
|
55
|
+
def authenticator
|
56
|
+
@soaplet.authenticator
|
57
|
+
end
|
58
|
+
|
59
|
+
def authenticator=(authenticator)
|
60
|
+
@soaplet.authenticator = authenticator
|
61
|
+
end
|
62
|
+
|
55
63
|
def mapping_registry
|
56
64
|
@router.mapping_registry
|
57
65
|
end
|
@@ -95,6 +103,10 @@ class HTTPServer < Logger::Application
|
|
95
103
|
end
|
96
104
|
alias add_rpc_headerhandler add_headerhandler
|
97
105
|
|
106
|
+
def filterchain
|
107
|
+
@router.filterchain
|
108
|
+
end
|
109
|
+
|
98
110
|
# method entry interface
|
99
111
|
|
100
112
|
def add_rpc_method(obj, name, *param)
|