tomdz-soap4r 1.5.8.20111103171510
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.
- data/bin/wsdl2ruby.rb +139 -0
- data/bin/xsd2ruby.rb +91 -0
- data/lib/soap/attachment.rb +109 -0
- data/lib/soap/attrproxy.rb +35 -0
- data/lib/soap/baseData.rb +1095 -0
- data/lib/soap/element.rb +278 -0
- data/lib/soap/encodingstyle/aspDotNetHandler.rb +208 -0
- data/lib/soap/encodingstyle/handler.rb +121 -0
- data/lib/soap/encodingstyle/literalHandler.rb +196 -0
- data/lib/soap/encodingstyle/soapHandler.rb +560 -0
- data/lib/soap/filter.rb +14 -0
- data/lib/soap/filter/filterchain.rb +52 -0
- data/lib/soap/filter/handler.rb +32 -0
- data/lib/soap/filter/streamhandler.rb +30 -0
- data/lib/soap/generator.rb +299 -0
- data/lib/soap/header/handler.rb +62 -0
- data/lib/soap/header/handlerset.rb +71 -0
- data/lib/soap/header/mappinghandler.rb +48 -0
- data/lib/soap/header/simplehandler.rb +45 -0
- data/lib/soap/httpconfigloader.rb +140 -0
- data/lib/soap/mapping.rb +13 -0
- data/lib/soap/mapping/encodedregistry.rb +539 -0
- data/lib/soap/mapping/factory.rb +389 -0
- data/lib/soap/mapping/literalregistry.rb +392 -0
- data/lib/soap/mapping/mapping.rb +577 -0
- data/lib/soap/mapping/registry.rb +296 -0
- data/lib/soap/mapping/rubytypeFactory.rb +446 -0
- data/lib/soap/mapping/schemadefinition.rb +171 -0
- data/lib/soap/mapping/typeMap.rb +107 -0
- data/lib/soap/mapping/wsdlencodedregistry.rb +212 -0
- data/lib/soap/mapping/wsdlliteralregistry.rb +249 -0
- data/lib/soap/marshal.rb +60 -0
- data/lib/soap/mimemessage.rb +243 -0
- data/lib/soap/nestedexception.rb +43 -0
- data/lib/soap/netHttpClient.rb +242 -0
- data/lib/soap/ns.rb +39 -0
- data/lib/soap/parser.rb +253 -0
- data/lib/soap/processor.rb +67 -0
- data/lib/soap/property.rb +340 -0
- data/lib/soap/proxy.rb +15 -0
- data/lib/soap/rpc/cgistub.rb +248 -0
- data/lib/soap/rpc/driver.rb +222 -0
- data/lib/soap/rpc/element.rb +375 -0
- data/lib/soap/rpc/httpserver.rb +143 -0
- data/lib/soap/rpc/methodDef.rb +69 -0
- data/lib/soap/rpc/proxy.rb +573 -0
- data/lib/soap/rpc/router.rb +663 -0
- data/lib/soap/rpc/rpc.rb +26 -0
- data/lib/soap/rpc/soaplet.rb +201 -0
- data/lib/soap/rpc/standaloneServer.rb +44 -0
- data/lib/soap/soap.rb +154 -0
- data/lib/soap/streamHandler.rb +302 -0
- data/lib/soap/version.rb +9 -0
- data/lib/soap/wsdlDriver.rb +165 -0
- data/lib/wsdl/binding.rb +66 -0
- data/lib/wsdl/data.rb +65 -0
- data/lib/wsdl/definitions.rb +237 -0
- data/lib/wsdl/documentation.rb +33 -0
- data/lib/wsdl/import.rb +81 -0
- data/lib/wsdl/importer.rb +39 -0
- data/lib/wsdl/info.rb +51 -0
- data/lib/wsdl/message.rb +55 -0
- data/lib/wsdl/operation.rb +152 -0
- data/lib/wsdl/operationBinding.rb +241 -0
- data/lib/wsdl/param.rb +94 -0
- data/lib/wsdl/parser.rb +165 -0
- data/lib/wsdl/part.rb +53 -0
- data/lib/wsdl/port.rb +67 -0
- data/lib/wsdl/portType.rb +76 -0
- data/lib/wsdl/service.rb +62 -0
- data/lib/wsdl/soap/address.rb +41 -0
- data/lib/wsdl/soap/binding.rb +50 -0
- data/lib/wsdl/soap/body.rb +59 -0
- data/lib/wsdl/soap/cgiStubCreator.rb +93 -0
- data/lib/wsdl/soap/classDefCreator.rb +434 -0
- data/lib/wsdl/soap/classDefCreatorSupport.rb +241 -0
- data/lib/wsdl/soap/classNameCreator.rb +55 -0
- data/lib/wsdl/soap/clientSkeltonCreator.rb +107 -0
- data/lib/wsdl/soap/complexType.rb +174 -0
- data/lib/wsdl/soap/data.rb +43 -0
- data/lib/wsdl/soap/definitions.rb +201 -0
- data/lib/wsdl/soap/driverCreator.rb +121 -0
- data/lib/wsdl/soap/element.rb +34 -0
- data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +74 -0
- data/lib/wsdl/soap/fault.rb +57 -0
- data/lib/wsdl/soap/header.rb +87 -0
- data/lib/wsdl/soap/headerfault.rb +57 -0
- data/lib/wsdl/soap/literalMappingRegistryCreator.rb +116 -0
- data/lib/wsdl/soap/mappingRegistryCreator.rb +59 -0
- data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +377 -0
- data/lib/wsdl/soap/methodDefCreator.rb +200 -0
- data/lib/wsdl/soap/operation.rb +113 -0
- data/lib/wsdl/soap/servantSkeltonCreator.rb +92 -0
- data/lib/wsdl/soap/servletStubCreator.rb +105 -0
- data/lib/wsdl/soap/standaloneServerStubCreator.rb +101 -0
- data/lib/wsdl/soap/wsdl2ruby.rb +226 -0
- data/lib/wsdl/types.rb +45 -0
- data/lib/wsdl/wsdl.rb +25 -0
- data/lib/wsdl/xmlSchema/all.rb +25 -0
- data/lib/wsdl/xmlSchema/annotation.rb +35 -0
- data/lib/wsdl/xmlSchema/any.rb +62 -0
- data/lib/wsdl/xmlSchema/anyAttribute.rb +49 -0
- data/lib/wsdl/xmlSchema/attribute.rb +105 -0
- data/lib/wsdl/xmlSchema/attributeGroup.rb +69 -0
- data/lib/wsdl/xmlSchema/choice.rb +59 -0
- data/lib/wsdl/xmlSchema/complexContent.rb +98 -0
- data/lib/wsdl/xmlSchema/complexExtension.rb +120 -0
- data/lib/wsdl/xmlSchema/complexRestriction.rb +105 -0
- data/lib/wsdl/xmlSchema/complexType.rb +194 -0
- data/lib/wsdl/xmlSchema/content.rb +96 -0
- data/lib/wsdl/xmlSchema/data.rb +117 -0
- data/lib/wsdl/xmlSchema/element.rb +154 -0
- data/lib/wsdl/xmlSchema/enumeration.rb +37 -0
- data/lib/wsdl/xmlSchema/fractiondigits.rb +38 -0
- data/lib/wsdl/xmlSchema/group.rb +101 -0
- data/lib/wsdl/xmlSchema/import.rb +54 -0
- data/lib/wsdl/xmlSchema/importHandler.rb +46 -0
- data/lib/wsdl/xmlSchema/importer.rb +103 -0
- data/lib/wsdl/xmlSchema/include.rb +49 -0
- data/lib/wsdl/xmlSchema/length.rb +38 -0
- data/lib/wsdl/xmlSchema/list.rb +49 -0
- data/lib/wsdl/xmlSchema/maxexclusive.rb +38 -0
- data/lib/wsdl/xmlSchema/maxinclusive.rb +38 -0
- data/lib/wsdl/xmlSchema/maxlength.rb +38 -0
- data/lib/wsdl/xmlSchema/minexclusive.rb +38 -0
- data/lib/wsdl/xmlSchema/mininclusive.rb +38 -0
- data/lib/wsdl/xmlSchema/minlength.rb +38 -0
- data/lib/wsdl/xmlSchema/parser.rb +168 -0
- data/lib/wsdl/xmlSchema/pattern.rb +37 -0
- data/lib/wsdl/xmlSchema/ref.rb +34 -0
- data/lib/wsdl/xmlSchema/schema.rb +179 -0
- data/lib/wsdl/xmlSchema/sequence.rb +55 -0
- data/lib/wsdl/xmlSchema/simpleContent.rb +70 -0
- data/lib/wsdl/xmlSchema/simpleExtension.rb +63 -0
- data/lib/wsdl/xmlSchema/simpleRestriction.rb +133 -0
- data/lib/wsdl/xmlSchema/simpleType.rb +88 -0
- data/lib/wsdl/xmlSchema/totaldigits.rb +38 -0
- data/lib/wsdl/xmlSchema/union.rb +36 -0
- data/lib/wsdl/xmlSchema/unique.rb +35 -0
- data/lib/wsdl/xmlSchema/whitespace.rb +38 -0
- data/lib/wsdl/xmlSchema/xsd2ruby.rb +176 -0
- data/lib/xsd/charset.rb +190 -0
- data/lib/xsd/codegen.rb +13 -0
- data/lib/xsd/codegen/classdef.rb +209 -0
- data/lib/xsd/codegen/commentdef.rb +35 -0
- data/lib/xsd/codegen/gensupport.rb +277 -0
- data/lib/xsd/codegen/methoddef.rb +71 -0
- data/lib/xsd/codegen/moduledef.rb +209 -0
- data/lib/xsd/datatypes.rb +1466 -0
- data/lib/xsd/datatypes1999.rb +21 -0
- data/lib/xsd/iconvcharset.rb +34 -0
- data/lib/xsd/mapping.rb +69 -0
- data/lib/xsd/namedelements.rb +133 -0
- data/lib/xsd/ns.rb +183 -0
- data/lib/xsd/qname.rb +80 -0
- data/lib/xsd/xmlparser.rb +77 -0
- data/lib/xsd/xmlparser/libxmlparser.rb +116 -0
- data/lib/xsd/xmlparser/parser.rb +101 -0
- data/lib/xsd/xmlparser/rexmlparser.rb +59 -0
- data/lib/xsd/xmlparser/xmlparser.rb +51 -0
- data/lib/xsd/xmlparser/xmlscanner.rb +150 -0
- data/test/16runner.rb +69 -0
- data/test/helper.rb +7 -0
- data/test/interopR2/README.txt +2 -0
- data/test/interopR2/SOAPBuildersInterop_R2.wsdl +461 -0
- data/test/interopR2/SOAPBuildersInterop_R2GrB.wsdl +19 -0
- data/test/interopR2/base.rb +289 -0
- data/test/interopR2/client.NetRemoting.rb +18 -0
- data/test/interopR2/client.rb +1235 -0
- data/test/interopR2/client4S4C.rb +16 -0
- data/test/interopR2/client4S4C2.rb +15 -0
- data/test/interopR2/clientASP.NET.rb +18 -0
- data/test/interopR2/clientApacheAxis.rb +17 -0
- data/test/interopR2/clientApacheSOAP.rb +18 -0
- data/test/interopR2/clientBEAWebLogic.rb +18 -0
- data/test/interopR2/clientBase.rb +1968 -0
- data/test/interopR2/clientCapeConnect.rb +19 -0
- data/test/interopR2/clientDelphi.rb +20 -0
- data/test/interopR2/clientEasySoap.rb +15 -0
- data/test/interopR2/clientFrontier.rb +26 -0
- data/test/interopR2/clientGLUE.rb +33 -0
- data/test/interopR2/clientHP.rb +14 -0
- data/test/interopR2/clientJAX-RPC.rb +20 -0
- data/test/interopR2/clientJSOAP.rb +15 -0
- data/test/interopR2/clientKafkaXSLT.rb +16 -0
- data/test/interopR2/clientMSSOAPToolkit2.0.rb +18 -0
- data/test/interopR2/clientMSSOAPToolkit3.0.rb +18 -0
- data/test/interopR2/clientNuSOAP.rb +20 -0
- data/test/interopR2/clientNuWave.rb +16 -0
- data/test/interopR2/clientOpenLink.rb +16 -0
- data/test/interopR2/clientOracle.rb +16 -0
- data/test/interopR2/clientPEAR.rb +19 -0
- data/test/interopR2/clientPhalanx.rb +19 -0
- data/test/interopR2/clientSIMACE.rb +19 -0
- data/test/interopR2/clientSOAP4R.rb +19 -0
- data/test/interopR2/clientSOAP__Lite.rb +15 -0
- data/test/interopR2/clientSQLData.rb +19 -0
- data/test/interopR2/clientSilverStream.rb +18 -0
- data/test/interopR2/clientSpray2001.rb +18 -0
- data/test/interopR2/clientSun.rb +20 -0
- data/test/interopR2/clientVWOpentalkSoap.rb +20 -0
- data/test/interopR2/clientWASP.rb +20 -0
- data/test/interopR2/clientWASPC.rb +19 -0
- data/test/interopR2/clientWebMethods.rb +16 -0
- data/test/interopR2/clientWhiteMesa.rb +29 -0
- data/test/interopR2/clientWingfoot.rb +16 -0
- data/test/interopR2/clientXMLBus.rb +20 -0
- data/test/interopR2/clientXMLRPC-EPI.rb +18 -0
- data/test/interopR2/clientXSOAP.rb +15 -0
- data/test/interopR2/clientZSI.rb +20 -0
- data/test/interopR2/clienteSOAP.rb +19 -0
- data/test/interopR2/clientgSOAP.rb +19 -0
- data/test/interopR2/clientkSOAP.rb +18 -0
- data/test/interopR2/iSimonReg.rb +113 -0
- data/test/interopR2/interopResultBase.rb +115 -0
- data/test/interopR2/interopService.rb +248 -0
- data/test/interopR2/rwikiInteropService.rb +106 -0
- data/test/interopR2/server.cgi +271 -0
- data/test/interopR2/server.rb +276 -0
- data/test/interopR2/simonReg.rb +124 -0
- data/test/interopR2/test.sh +49 -0
- data/test/interopR4/client.rb +113 -0
- data/test/runner.rb +8 -0
- data/test/sm11/classDef.rb +157 -0
- data/test/sm11/client.rb +543 -0
- data/test/sm11/driver.rb +184 -0
- data/test/sm11/servant.rb +1068 -0
- data/test/sm11/server.rb +26 -0
- data/test/soap/asp.net/hello.wsdl +96 -0
- data/test/soap/asp.net/test_aspdotnet.rb +124 -0
- data/test/soap/auth/htdigest +2 -0
- data/test/soap/auth/htpasswd +2 -0
- data/test/soap/auth/test_basic.rb +118 -0
- data/test/soap/auth/test_digest.rb +119 -0
- data/test/soap/calc/calc.rb +18 -0
- data/test/soap/calc/calc2.rb +30 -0
- data/test/soap/calc/server.cgi +16 -0
- data/test/soap/calc/server.rb +18 -0
- data/test/soap/calc/server2.rb +21 -0
- data/test/soap/calc/test_calc.rb +53 -0
- data/test/soap/calc/test_calc2.rb +57 -0
- data/test/soap/calc/test_calc_cgi.rb +72 -0
- data/test/soap/case/test_mapping.rb +58 -0
- data/test/soap/fault/test_customfault.rb +61 -0
- data/test/soap/fault/test_fault.rb +47 -0
- data/test/soap/fault/test_soaparray.rb +36 -0
- data/test/soap/filter/test_filter.rb +147 -0
- data/test/soap/header/server.cgi +121 -0
- data/test/soap/header/test_authheader.rb +241 -0
- data/test/soap/header/test_authheader_cgi.rb +122 -0
- data/test/soap/header/test_simplehandler.rb +117 -0
- data/test/soap/helloworld/hw_s.rb +17 -0
- data/test/soap/helloworld/test_helloworld.rb +45 -0
- data/test/soap/htpasswd +2 -0
- data/test/soap/literalArrayMapping/amazonEc.rb +4779 -0
- data/test/soap/literalArrayMapping/amazonEcDriver.rb +173 -0
- data/test/soap/literalArrayMapping/amazonresponse.xml +100 -0
- data/test/soap/literalArrayMapping/test_definedarray.rb +35 -0
- data/test/soap/marshal/marshaltestlib.rb +498 -0
- data/test/soap/marshal/test_digraph.rb +57 -0
- data/test/soap/marshal/test_marshal.rb +28 -0
- data/test/soap/marshal/test_struct.rb +48 -0
- data/test/soap/ssl/README +1 -0
- data/test/soap/ssl/ca.cert +23 -0
- data/test/soap/ssl/client.cert +19 -0
- data/test/soap/ssl/client.key +15 -0
- data/test/soap/ssl/server.cert +19 -0
- data/test/soap/ssl/server.key +15 -0
- data/test/soap/ssl/sslsvr.rb +59 -0
- data/test/soap/ssl/subca.cert +21 -0
- data/test/soap/ssl/test_ssl.rb +236 -0
- data/test/soap/struct/test_struct.rb +71 -0
- data/test/soap/styleuse/client.rb +21 -0
- data/test/soap/styleuse/server.rb +87 -0
- data/test/soap/swa/test_file.rb +76 -0
- data/test/soap/test_basetype.rb +1091 -0
- data/test/soap/test_cookie.rb +113 -0
- data/test/soap/test_custom_ns.rb +106 -0
- data/test/soap/test_custommap.rb +111 -0
- data/test/soap/test_empty.rb +106 -0
- data/test/soap/test_envelopenamespace.rb +86 -0
- data/test/soap/test_extraattr.rb +55 -0
- data/test/soap/test_generator.rb +32 -0
- data/test/soap/test_httpconfigloader.rb +72 -0
- data/test/soap/test_mapping.rb +132 -0
- data/test/soap/test_nestedexception.rb +71 -0
- data/test/soap/test_nil.rb +71 -0
- data/test/soap/test_no_indent.rb +89 -0
- data/test/soap/test_property.rb +429 -0
- data/test/soap/test_response_as_xml.rb +118 -0
- data/test/soap/test_soapelement.rb +139 -0
- data/test/soap/test_streamhandler.rb +271 -0
- data/test/soap/test_styleuse.rb +327 -0
- data/test/soap/wsdlDriver/README.txt +2 -0
- data/test/soap/wsdlDriver/calc.wsdl +126 -0
- data/test/soap/wsdlDriver/document.wsdl +54 -0
- data/test/soap/wsdlDriver/echo_version.rb +30 -0
- data/test/soap/wsdlDriver/simpletype.wsdl +63 -0
- data/test/soap/wsdlDriver/test_calc.rb +72 -0
- data/test/soap/wsdlDriver/test_document.rb +72 -0
- data/test/soap/wsdlDriver/test_simpletype.rb +82 -0
- data/test/testutil.rb +55 -0
- data/test/wsdl/abstract/abstract.wsdl +176 -0
- data/test/wsdl/abstract/test_abstract.rb +160 -0
- data/test/wsdl/anonymous/expectedClassDef.rb +129 -0
- data/test/wsdl/anonymous/expectedDriver.rb +60 -0
- data/test/wsdl/anonymous/expectedMappingRegistry.rb +177 -0
- data/test/wsdl/anonymous/lp.wsdl +147 -0
- data/test/wsdl/anonymous/test_anonymous.rb +131 -0
- data/test/wsdl/any/any.wsdl +114 -0
- data/test/wsdl/any/expectedDriver.rb +69 -0
- data/test/wsdl/any/expectedEcho.rb +58 -0
- data/test/wsdl/any/expectedMappingRegistry.rb +64 -0
- data/test/wsdl/any/expectedService.rb +70 -0
- data/test/wsdl/any/test_any.rb +194 -0
- data/test/wsdl/axisArray/axisArray.wsdl +87 -0
- data/test/wsdl/axisArray/test_axisarray.rb +125 -0
- data/test/wsdl/choice/choice.wsdl +167 -0
- data/test/wsdl/choice/test_choice.rb +311 -0
- data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
- data/test/wsdl/complexcontent/test_echo.rb +91 -0
- data/test/wsdl/datetime/DatetimeService.rb +45 -0
- data/test/wsdl/datetime/datetime.rb +0 -0
- data/test/wsdl/datetime/datetime.wsdl +45 -0
- data/test/wsdl/datetime/datetimeServant.rb +23 -0
- data/test/wsdl/datetime/test_datetime.rb +88 -0
- data/test/wsdl/document/array/double.wsdl +161 -0
- data/test/wsdl/document/array/test_array.rb +202 -0
- data/test/wsdl/document/document.wsdl +76 -0
- data/test/wsdl/document/number.wsdl +54 -0
- data/test/wsdl/document/ping_nosoapaction.wsdl +66 -0
- data/test/wsdl/document/test_nosoapaction.rb +103 -0
- data/test/wsdl/document/test_number.rb +93 -0
- data/test/wsdl/document/test_rpc.rb +356 -0
- data/test/wsdl/emptycomplextype.wsdl +31 -0
- data/test/wsdl/fault/fault.wsdl +79 -0
- data/test/wsdl/fault/multifault.wsdl +96 -0
- data/test/wsdl/fault/test_fault.rb +120 -0
- data/test/wsdl/fault/test_multifault.rb +135 -0
- data/test/wsdl/group/expectedClassdef.rb +59 -0
- data/test/wsdl/group/expectedDriver.rb +52 -0
- data/test/wsdl/group/expectedMappingRegistry.rb +68 -0
- data/test/wsdl/group/group.wsdl +88 -0
- data/test/wsdl/group/test_rpc.rb +146 -0
- data/test/wsdl/list/list.wsdl +93 -0
- data/test/wsdl/list/test_list.rb +125 -0
- data/test/wsdl/map/map.wsdl +92 -0
- data/test/wsdl/map/map.xml +43 -0
- data/test/wsdl/map/test_map.rb +100 -0
- data/test/wsdl/marshal/person.wsdl +21 -0
- data/test/wsdl/marshal/person_org.rb +24 -0
- data/test/wsdl/marshal/test_wsdlmarshal.rb +76 -0
- data/test/wsdl/multiplefault.wsdl +75 -0
- data/test/wsdl/oneway/oneway.wsdl +36 -0
- data/test/wsdl/oneway/test_oneway.rb +109 -0
- data/test/wsdl/overload/expectedClient.rb +38 -0
- data/test/wsdl/overload/expectedDriver.rb +62 -0
- data/test/wsdl/overload/expectedServant.rb +36 -0
- data/test/wsdl/overload/overload.wsdl +70 -0
- data/test/wsdl/overload/test_overload.rb +132 -0
- data/test/wsdl/qualified/lp.wsdl +47 -0
- data/test/wsdl/qualified/lp.xsd +26 -0
- data/test/wsdl/qualified/np.wsdl +51 -0
- data/test/wsdl/qualified/test_qualified.rb +138 -0
- data/test/wsdl/qualified/test_unqualified.rb +139 -0
- data/test/wsdl/raa/RAAService.rb +126 -0
- data/test/wsdl/raa/README.txt +8 -0
- data/test/wsdl/raa/expectedClassDef.rb +101 -0
- data/test/wsdl/raa/expectedDriver.rb +97 -0
- data/test/wsdl/raa/expectedMappingRegistry.rb +122 -0
- data/test/wsdl/raa/raa.wsdl +264 -0
- data/test/wsdl/raa/test_raa.rb +127 -0
- data/test/wsdl/ref/expectedDriver.rb +52 -0
- data/test/wsdl/ref/expectedProduct.rb +244 -0
- data/test/wsdl/ref/product.wsdl +147 -0
- data/test/wsdl/ref/test_ref.rb +269 -0
- data/test/wsdl/rpc/rpc.wsdl +109 -0
- data/test/wsdl/rpc/test-rpc-lit.wsdl +371 -0
- data/test/wsdl/rpc/test_rpc.rb +177 -0
- data/test/wsdl/rpc/test_rpc_lit.rb +471 -0
- data/test/wsdl/simplecontent/simplecontent.wsdl +84 -0
- data/test/wsdl/simplecontent/test_simplecontent.rb +103 -0
- data/test/wsdl/simpletype/rpc/expectedClient.rb +35 -0
- data/test/wsdl/simpletype/rpc/expectedDriver.rb +59 -0
- data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +37 -0
- data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +58 -0
- data/test/wsdl/simpletype/rpc/expectedServant.rb +33 -0
- data/test/wsdl/simpletype/rpc/expectedService.rb +56 -0
- data/test/wsdl/simpletype/rpc/rpc.wsdl +98 -0
- data/test/wsdl/simpletype/rpc/test_rpc.rb +53 -0
- data/test/wsdl/simpletype/simpletype.wsdl +114 -0
- data/test/wsdl/simpletype/test_simpletype.rb +93 -0
- data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
- data/test/wsdl/soap/test_soapbodyparts.rb +80 -0
- data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +22 -0
- data/test/wsdl/soap/wsdl2ruby/expectedClient.rb +35 -0
- data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +59 -0
- data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +37 -0
- data/test/wsdl/soap/wsdl2ruby/expectedServant.rb +33 -0
- data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +49 -0
- data/test/wsdl/soap/wsdl2ruby/expectedService.rb +56 -0
- data/test/wsdl/soap/wsdl2ruby/rpc.wsdl +80 -0
- data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +38 -0
- data/test/wsdl/soap/wsdl2ruby/section/section.xsd +31 -0
- data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +54 -0
- data/test/wsdl/soap/wsdl2ruby/soapenc/soapenc.wsdl +64 -0
- data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +84 -0
- data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +103 -0
- data/test/wsdl/soaptype/soaptype.wsdl +61 -0
- data/test/wsdl/soaptype/test_soaptype.rb +179 -0
- data/test/wsdl/test_emptycomplextype.rb +22 -0
- data/test/wsdl/test_fault.rb +51 -0
- data/test/wsdl/test_multiplefault.rb +42 -0
- data/test/xsd/codegen/test_classdef.rb +245 -0
- data/test/xsd/noencoding.xml +4 -0
- data/test/xsd/test_noencoding.rb +33 -0
- data/test/xsd/test_ns.rb +42 -0
- data/test/xsd/test_xmlschemaparser.rb +23 -0
- data/test/xsd/test_xsd.rb +1639 -0
- data/test/xsd/xmllang.xml +43 -0
- data/test/xsd/xmlschema.xml +12 -0
- data/test/xsd/xsd2ruby/expected_mysample.rb +66 -0
- data/test/xsd/xsd2ruby/expected_mysample_mapper.rb +12 -0
- data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +52 -0
- data/test/xsd/xsd2ruby/section.xsd +49 -0
- data/test/xsd/xsd2ruby/test_xsd2ruby.rb +91 -0
- metadata +490 -0
@@ -0,0 +1,121 @@
|
|
1
|
+
# encoding: ASCII-8BIT
|
2
|
+
# SOAP4R - EncodingStyle handler library
|
3
|
+
# Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
4
|
+
|
5
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
6
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
7
|
+
# either the dual license version in 2003, or any later version.
|
8
|
+
|
9
|
+
|
10
|
+
require 'soap/soap'
|
11
|
+
require 'soap/baseData'
|
12
|
+
require 'soap/element'
|
13
|
+
|
14
|
+
|
15
|
+
module SOAP
|
16
|
+
module EncodingStyle
|
17
|
+
|
18
|
+
|
19
|
+
class Handler
|
20
|
+
@@handlers = {}
|
21
|
+
|
22
|
+
class EncodingStyleError < Error; end
|
23
|
+
|
24
|
+
class << self
|
25
|
+
def uri
|
26
|
+
self::Namespace
|
27
|
+
end
|
28
|
+
|
29
|
+
def handler(uri)
|
30
|
+
@@handlers[uri]
|
31
|
+
end
|
32
|
+
|
33
|
+
def each
|
34
|
+
@@handlers.each do |key, value|
|
35
|
+
yield(value)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def add_handler
|
42
|
+
@@handlers[self.uri] = self
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
attr_reader :charset
|
47
|
+
attr_accessor :generate_explicit_type
|
48
|
+
def decode_typemap=(definedtypes)
|
49
|
+
@decode_typemap = definedtypes
|
50
|
+
end
|
51
|
+
|
52
|
+
def initialize(charset)
|
53
|
+
@charset = charset
|
54
|
+
@generate_explicit_type = true
|
55
|
+
@decode_typemap = nil
|
56
|
+
end
|
57
|
+
|
58
|
+
###
|
59
|
+
## encode interface.
|
60
|
+
#
|
61
|
+
# Returns a XML instance as a string.
|
62
|
+
def encode_data(generator, ns, data, parent)
|
63
|
+
raise NotImplementError
|
64
|
+
end
|
65
|
+
|
66
|
+
def encode_data_end(generator, ns, data, parent)
|
67
|
+
raise NotImplementError
|
68
|
+
end
|
69
|
+
|
70
|
+
def encode_prologue
|
71
|
+
end
|
72
|
+
|
73
|
+
def encode_epilogue
|
74
|
+
end
|
75
|
+
|
76
|
+
###
|
77
|
+
## decode interface.
|
78
|
+
#
|
79
|
+
# Returns SOAP/OM data.
|
80
|
+
def decode_tag(ns, name, attrs, parent)
|
81
|
+
raise NotImplementError
|
82
|
+
end
|
83
|
+
|
84
|
+
def decode_tag_end(ns, name)
|
85
|
+
raise NotImplementError
|
86
|
+
end
|
87
|
+
|
88
|
+
def decode_text(ns, text)
|
89
|
+
raise NotImplementError
|
90
|
+
end
|
91
|
+
|
92
|
+
def decode_prologue
|
93
|
+
end
|
94
|
+
|
95
|
+
def decode_epilogue
|
96
|
+
end
|
97
|
+
|
98
|
+
def encode_attr_key(attrs, ns, qname)
|
99
|
+
if qname.namespace.nil?
|
100
|
+
qname.name
|
101
|
+
else
|
102
|
+
unless ns.assigned_as_tagged?(qname.namespace)
|
103
|
+
Generator.assign_ns!(attrs, ns, qname.namespace)
|
104
|
+
end
|
105
|
+
ns.name_attr(qname)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def encode_qname(attrs, ns, qname)
|
110
|
+
if qname.namespace.nil?
|
111
|
+
qname.name
|
112
|
+
else
|
113
|
+
Generator.assign_ns(attrs, ns, qname.namespace)
|
114
|
+
ns.name(qname)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
|
120
|
+
end
|
121
|
+
end
|
@@ -0,0 +1,196 @@
|
|
1
|
+
# encoding: ASCII-8BIT
|
2
|
+
# SOAP4R - XML Literal EncodingStyle handler library
|
3
|
+
# Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
4
|
+
|
5
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
6
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
7
|
+
# either the dual license version in 2003, or any later version.
|
8
|
+
|
9
|
+
|
10
|
+
require 'soap/encodingstyle/handler'
|
11
|
+
|
12
|
+
|
13
|
+
module SOAP
|
14
|
+
module EncodingStyle
|
15
|
+
|
16
|
+
|
17
|
+
class LiteralHandler < Handler
|
18
|
+
Namespace = SOAP::LiteralNamespace
|
19
|
+
add_handler
|
20
|
+
|
21
|
+
def initialize(charset = nil)
|
22
|
+
super(charset)
|
23
|
+
@textbuf = []
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
###
|
28
|
+
## encode interface.
|
29
|
+
#
|
30
|
+
def encode_data(generator, ns, data, parent)
|
31
|
+
attrs = {}
|
32
|
+
name = generator.encode_name(ns, data, attrs)
|
33
|
+
if data.type and data.type.name and
|
34
|
+
(@generate_explicit_type or data.force_typed)
|
35
|
+
data.extraattr[XSD::AttrTypeName] = data.type
|
36
|
+
end
|
37
|
+
data.extraattr.each do |key, value|
|
38
|
+
keytag = key
|
39
|
+
if key.is_a?(XSD::QName)
|
40
|
+
keytag = encode_attr_key(attrs, ns, key)
|
41
|
+
end
|
42
|
+
if value.is_a?(XSD::QName)
|
43
|
+
value = encode_qname(attrs, ns, value)
|
44
|
+
end
|
45
|
+
attrs[keytag] = value
|
46
|
+
end
|
47
|
+
case data
|
48
|
+
when SOAPExternalReference
|
49
|
+
# do not encode SOAPExternalReference in
|
50
|
+
# literalHandler (which is used for literal service)
|
51
|
+
data.referred
|
52
|
+
when SOAPRawString
|
53
|
+
generator.encode_tag(name, attrs)
|
54
|
+
generator.encode_rawstring(data.to_s)
|
55
|
+
when XSD::XSDString
|
56
|
+
generator.encode_tag(name, attrs)
|
57
|
+
str = decode_str(data.to_s)
|
58
|
+
generator.encode_string(str)
|
59
|
+
when XSD::XSDAnySimpleType
|
60
|
+
generator.encode_tag(name, attrs)
|
61
|
+
generator.encode_string(data.to_s)
|
62
|
+
when SOAPStruct
|
63
|
+
generator.encode_tag(name, attrs)
|
64
|
+
data.each do |key, value|
|
65
|
+
generator.encode_child(ns, value, data)
|
66
|
+
end
|
67
|
+
when SOAPArray
|
68
|
+
generator.encode_tag(name, attrs)
|
69
|
+
data.traverse do |child, *rank|
|
70
|
+
data.position = nil
|
71
|
+
generator.encode_child(ns, child, data)
|
72
|
+
end
|
73
|
+
when SOAPElement
|
74
|
+
unless generator.use_default_namespace
|
75
|
+
# passes 2 times for simplifying namespace definition
|
76
|
+
data.each do |key, value|
|
77
|
+
if value.elename.namespace
|
78
|
+
Generator.assign_ns(attrs, ns, value.elename.namespace)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
if data.text and data.text.is_a?(XSD::QName)
|
83
|
+
Generator.assign_ns(attrs, ns, data.text.namespace)
|
84
|
+
end
|
85
|
+
generator.encode_tag(name, attrs)
|
86
|
+
if data.text
|
87
|
+
if data.text.is_a?(XSD::QName)
|
88
|
+
text = ns.name(data.text)
|
89
|
+
else
|
90
|
+
text = data.text
|
91
|
+
end
|
92
|
+
generator.encode_string(text)
|
93
|
+
end
|
94
|
+
data.each do |key, value|
|
95
|
+
generator.encode_child(ns, value, data)
|
96
|
+
end
|
97
|
+
else
|
98
|
+
raise EncodingStyleError.new(
|
99
|
+
"unknown object:#{data} in this encodingStyle")
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def encode_data_end(generator, ns, data, parent)
|
104
|
+
# do not encode SOAPExternalReference in
|
105
|
+
# literalHandler (which is used for literal service)
|
106
|
+
return nil if data.is_a?(SOAPExternalReference)
|
107
|
+
name = generator.encode_name_end(ns, data)
|
108
|
+
cr = (data.is_a?(SOAPCompoundtype) and data.have_member)
|
109
|
+
generator.encode_tag_end(name, cr)
|
110
|
+
end
|
111
|
+
|
112
|
+
|
113
|
+
###
|
114
|
+
## decode interface.
|
115
|
+
#
|
116
|
+
def decode_tag(ns, elename, attrs, parent)
|
117
|
+
@textbuf.clear
|
118
|
+
if attrs[XSD::AttrNilName] == 'true'
|
119
|
+
o = SOAPNil.decode(elename)
|
120
|
+
else
|
121
|
+
o = SOAPElement.decode(elename)
|
122
|
+
end
|
123
|
+
if definedtype = attrs[XSD::AttrTypeName]
|
124
|
+
o.type = ns.parse(definedtype)
|
125
|
+
end
|
126
|
+
o.parent = parent
|
127
|
+
o.extraattr.update(attrs)
|
128
|
+
decode_parent(parent, o)
|
129
|
+
o
|
130
|
+
end
|
131
|
+
|
132
|
+
def decode_tag_end(ns, node)
|
133
|
+
textbufstr = @textbuf.join
|
134
|
+
@textbuf.clear
|
135
|
+
o = node.node
|
136
|
+
decode_textbuf(o, textbufstr)
|
137
|
+
end
|
138
|
+
|
139
|
+
def decode_text(ns, text)
|
140
|
+
# @textbuf is set at decode_tag_end.
|
141
|
+
@textbuf << text
|
142
|
+
end
|
143
|
+
|
144
|
+
def decode_prologue
|
145
|
+
end
|
146
|
+
|
147
|
+
def decode_epilogue
|
148
|
+
end
|
149
|
+
|
150
|
+
def decode_parent(parent, node)
|
151
|
+
return unless parent.node
|
152
|
+
case parent.node
|
153
|
+
when SOAPElement
|
154
|
+
parent.node.add(node)
|
155
|
+
node.parent = parent.node
|
156
|
+
when SOAPStruct
|
157
|
+
parent.node.add(node.elename.name, node)
|
158
|
+
node.parent = parent.node
|
159
|
+
when SOAPArray
|
160
|
+
if node.position
|
161
|
+
parent.node[*(decode_arypos(node.position))] = node
|
162
|
+
parent.node.sparse = true
|
163
|
+
else
|
164
|
+
parent.node.add(node)
|
165
|
+
end
|
166
|
+
node.parent = parent.node
|
167
|
+
else
|
168
|
+
raise EncodingStyleError.new("illegal parent: #{parent.node}")
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
private
|
173
|
+
|
174
|
+
def decode_textbuf(node, textbufstr)
|
175
|
+
case node
|
176
|
+
when XSD::XSDString, SOAPElement
|
177
|
+
if @charset
|
178
|
+
node.set(decode_str(textbufstr))
|
179
|
+
else
|
180
|
+
node.set(textbufstr)
|
181
|
+
end
|
182
|
+
else
|
183
|
+
# Nothing to do...
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
def decode_str(str)
|
188
|
+
@charset ? XSD::Charset.encoding_from_xml(str, @charset) : str
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
LiteralHandler.new
|
193
|
+
|
194
|
+
|
195
|
+
end
|
196
|
+
end
|
@@ -0,0 +1,560 @@
|
|
1
|
+
# encoding: ASCII-8BIT
|
2
|
+
# SOAP4R - SOAP EncodingStyle handler library
|
3
|
+
# Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
|
4
|
+
|
5
|
+
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
6
|
+
# redistribute it and/or modify it under the same terms of Ruby's license;
|
7
|
+
# either the dual license version in 2003, or any later version.
|
8
|
+
|
9
|
+
|
10
|
+
require 'soap/encodingstyle/handler'
|
11
|
+
require 'soap/mapping/registry'
|
12
|
+
|
13
|
+
|
14
|
+
module SOAP
|
15
|
+
module EncodingStyle
|
16
|
+
|
17
|
+
|
18
|
+
class SOAPHandler < Handler
|
19
|
+
Namespace = SOAP::EncodingNamespace
|
20
|
+
add_handler
|
21
|
+
|
22
|
+
def initialize(charset = nil)
|
23
|
+
super(charset)
|
24
|
+
@refpool = []
|
25
|
+
@idpool = []
|
26
|
+
@textbuf = []
|
27
|
+
@is_first_top_ele = true
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
###
|
32
|
+
## encode interface.
|
33
|
+
#
|
34
|
+
def encode_data(generator, ns, data, parent)
|
35
|
+
attrs = encode_attrs(generator, ns, data, parent)
|
36
|
+
if parent && parent.is_a?(SOAPArray) && parent.position
|
37
|
+
attrs[ns.name(AttrPositionName)] = "[#{parent.position.join(',')}]"
|
38
|
+
end
|
39
|
+
name = generator.encode_name(ns, data, attrs)
|
40
|
+
case data
|
41
|
+
when SOAPReference
|
42
|
+
attrs['href'] = data.refidstr
|
43
|
+
generator.encode_tag(name, attrs)
|
44
|
+
when SOAPExternalReference
|
45
|
+
data.referred
|
46
|
+
attrs['href'] = data.refidstr
|
47
|
+
generator.encode_tag(name, attrs)
|
48
|
+
when SOAPRawString
|
49
|
+
generator.encode_tag(name, attrs)
|
50
|
+
generator.encode_rawstring(data.to_s)
|
51
|
+
when XSD::XSDString
|
52
|
+
generator.encode_tag(name, attrs)
|
53
|
+
generator.encode_string(@charset ?
|
54
|
+
XSD::Charset.encoding_to_xml(data.to_s, @charset) : data.to_s)
|
55
|
+
when XSD::XSDAnySimpleType
|
56
|
+
generator.encode_tag(name, attrs)
|
57
|
+
generator.encode_string(data.to_s)
|
58
|
+
when SOAPStruct
|
59
|
+
generator.encode_tag(name, attrs)
|
60
|
+
data.each do |key, value|
|
61
|
+
generator.encode_child(ns, value, data)
|
62
|
+
end
|
63
|
+
when SOAPArray
|
64
|
+
generator.encode_tag(name, attrs)
|
65
|
+
data.traverse do |child, *rank|
|
66
|
+
data.position = data.sparse ? rank : nil
|
67
|
+
generator.encode_child(ns, child, data)
|
68
|
+
end
|
69
|
+
else
|
70
|
+
raise EncodingStyleError.new(
|
71
|
+
"unknown object:#{data} in this encodingStyle")
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def encode_data_end(generator, ns, data, parent)
|
76
|
+
name = generator.encode_name_end(ns, data)
|
77
|
+
cr = (data.is_a?(SOAPCompoundtype) and data.have_member)
|
78
|
+
generator.encode_tag_end(name, cr)
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
###
|
83
|
+
## decode interface.
|
84
|
+
#
|
85
|
+
class SOAPTemporalObject
|
86
|
+
attr_accessor :parent
|
87
|
+
attr_accessor :position
|
88
|
+
attr_accessor :id
|
89
|
+
attr_accessor :root
|
90
|
+
|
91
|
+
def initialize
|
92
|
+
@parent = nil
|
93
|
+
@position = nil
|
94
|
+
@id = nil
|
95
|
+
@root = nil
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
class SOAPUnknown < SOAPTemporalObject
|
100
|
+
attr_reader :type
|
101
|
+
attr_accessor :definedtype
|
102
|
+
attr_reader :extraattr
|
103
|
+
|
104
|
+
def initialize(handler, elename, type, extraattr)
|
105
|
+
super()
|
106
|
+
@handler = handler
|
107
|
+
@elename = elename
|
108
|
+
@type = type
|
109
|
+
@extraattr = extraattr
|
110
|
+
@definedtype = nil
|
111
|
+
end
|
112
|
+
|
113
|
+
def as_struct
|
114
|
+
if @extraattr[XSD::AttrNilName] == 'true'
|
115
|
+
return as_nil
|
116
|
+
end
|
117
|
+
o = SOAPStruct.decode(@elename, @type)
|
118
|
+
o.id = @id
|
119
|
+
o.root = @root
|
120
|
+
o.parent = @parent
|
121
|
+
o.position = @position
|
122
|
+
o.extraattr.update(@extraattr)
|
123
|
+
@handler.decode_parent(@parent, o)
|
124
|
+
o
|
125
|
+
end
|
126
|
+
|
127
|
+
def as_string
|
128
|
+
if @extraattr[XSD::AttrNilName] == 'true'
|
129
|
+
return as_nil
|
130
|
+
end
|
131
|
+
o = SOAPString.decode(@elename)
|
132
|
+
o.id = @id
|
133
|
+
o.root = @root
|
134
|
+
o.parent = @parent
|
135
|
+
o.position = @position
|
136
|
+
o.extraattr.update(@extraattr)
|
137
|
+
@handler.decode_parent(@parent, o)
|
138
|
+
o
|
139
|
+
end
|
140
|
+
|
141
|
+
def as_nil
|
142
|
+
o = SOAPNil.decode(@elename)
|
143
|
+
o.id = @id
|
144
|
+
o.root = @root
|
145
|
+
o.parent = @parent
|
146
|
+
o.position = @position
|
147
|
+
o.extraattr.update(@extraattr)
|
148
|
+
@handler.decode_parent(@parent, o)
|
149
|
+
o
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
def decode_tag(ns, elename, attrs, parent)
|
154
|
+
@textbuf.clear
|
155
|
+
is_nil, type, arytype, root, offset, position, href, id =
|
156
|
+
extract_attrs(ns, attrs)
|
157
|
+
o = nil
|
158
|
+
if is_nil
|
159
|
+
o = SOAPNil.decode(elename)
|
160
|
+
elsif href
|
161
|
+
o = SOAPReference.decode(elename, href)
|
162
|
+
@refpool << o
|
163
|
+
elsif @decode_typemap
|
164
|
+
o = decode_tag_by_wsdl(ns, elename, type, parent.node, arytype, attrs)
|
165
|
+
else
|
166
|
+
o = decode_tag_by_type(ns, elename, type, parent.node, arytype, attrs)
|
167
|
+
end
|
168
|
+
|
169
|
+
if o.is_a?(SOAPArray)
|
170
|
+
if offset
|
171
|
+
o.offset = decode_arypos(offset)
|
172
|
+
o.sparse = true
|
173
|
+
else
|
174
|
+
o.sparse = false
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
o.parent = parent
|
179
|
+
o.id = id
|
180
|
+
o.root = root
|
181
|
+
o.position = position
|
182
|
+
|
183
|
+
unless o.is_a?(SOAPTemporalObject)
|
184
|
+
@idpool << o if o.id
|
185
|
+
decode_parent(parent, o)
|
186
|
+
end
|
187
|
+
o
|
188
|
+
end
|
189
|
+
|
190
|
+
def decode_tag_end(ns, node)
|
191
|
+
textbufstr = @textbuf.join
|
192
|
+
@textbuf.clear
|
193
|
+
o = node.node
|
194
|
+
if o.is_a?(SOAPUnknown)
|
195
|
+
newnode = if /\A\s*\z/ =~ textbufstr
|
196
|
+
o.as_struct
|
197
|
+
else
|
198
|
+
o.as_string
|
199
|
+
end
|
200
|
+
if newnode.id
|
201
|
+
@idpool << newnode
|
202
|
+
end
|
203
|
+
node.replace_node(newnode)
|
204
|
+
o = node.node
|
205
|
+
end
|
206
|
+
decode_textbuf(o, textbufstr)
|
207
|
+
# unlink definedtype
|
208
|
+
o.definedtype = nil
|
209
|
+
end
|
210
|
+
|
211
|
+
def decode_text(ns, text)
|
212
|
+
@textbuf << text
|
213
|
+
end
|
214
|
+
|
215
|
+
def decode_prologue
|
216
|
+
@refpool.clear
|
217
|
+
@idpool.clear
|
218
|
+
@is_first_top_ele = true
|
219
|
+
end
|
220
|
+
|
221
|
+
def decode_epilogue
|
222
|
+
decode_resolve_id
|
223
|
+
end
|
224
|
+
|
225
|
+
def decode_parent(parent, node)
|
226
|
+
return unless parent.node
|
227
|
+
case parent.node
|
228
|
+
when SOAPUnknown
|
229
|
+
newparent = parent.node.as_struct
|
230
|
+
node.parent = newparent
|
231
|
+
if newparent.id
|
232
|
+
@idpool << newparent
|
233
|
+
end
|
234
|
+
parent.replace_node(newparent)
|
235
|
+
decode_parent(parent, node)
|
236
|
+
when SOAPStruct
|
237
|
+
parent.node.add(node.elename.name, node)
|
238
|
+
node.parent = parent.node
|
239
|
+
when SOAPArray
|
240
|
+
if node.position
|
241
|
+
parent.node[*(decode_arypos(node.position))] = node
|
242
|
+
parent.node.sparse = true
|
243
|
+
else
|
244
|
+
parent.node.add(node)
|
245
|
+
end
|
246
|
+
node.parent = parent.node
|
247
|
+
else
|
248
|
+
raise EncodingStyleError.new("illegal parent: #{parent.node}")
|
249
|
+
end
|
250
|
+
end
|
251
|
+
|
252
|
+
private
|
253
|
+
|
254
|
+
def content_ranksize(typename)
|
255
|
+
typename.scan(/\[[\d,]*\]$/)[0]
|
256
|
+
end
|
257
|
+
|
258
|
+
def content_typename(typename)
|
259
|
+
typename.sub(/\[,*\]$/, '')
|
260
|
+
end
|
261
|
+
|
262
|
+
def create_arytype(ns, data)
|
263
|
+
XSD::QName.new(data.arytype.namespace,
|
264
|
+
content_typename(data.arytype.name) + "[#{data.size.join(',')}]")
|
265
|
+
end
|
266
|
+
|
267
|
+
def encode_attrs(generator, ns, data, parent)
|
268
|
+
attrs = {}
|
269
|
+
return attrs if data.is_a?(SOAPReference)
|
270
|
+
|
271
|
+
if !parent || parent.encodingstyle != EncodingNamespace
|
272
|
+
if @generate_explicit_type
|
273
|
+
Generator.assign_ns(attrs, ns, EnvelopeNamespace)
|
274
|
+
attrs[ns.name(AttrEncodingStyleName)] = EncodingNamespace
|
275
|
+
end
|
276
|
+
data.encodingstyle = EncodingNamespace
|
277
|
+
end
|
278
|
+
|
279
|
+
if data.is_a?(SOAPNil)
|
280
|
+
attrs[ns.name(XSD::AttrNilName)] = XSD::NilValue
|
281
|
+
elsif @generate_explicit_type
|
282
|
+
if data.type.namespace
|
283
|
+
Generator.assign_ns(attrs, ns, data.type.namespace)
|
284
|
+
end
|
285
|
+
if data.is_a?(SOAPArray)
|
286
|
+
if data.arytype.namespace
|
287
|
+
Generator.assign_ns(attrs, ns, data.arytype.namespace)
|
288
|
+
end
|
289
|
+
Generator.assign_ns(attrs, ns, EncodingNamespace)
|
290
|
+
attrs[ns.name(AttrArrayTypeName)] = ns.name(create_arytype(ns, data))
|
291
|
+
if data.type.name
|
292
|
+
attrs[ns.name(XSD::AttrTypeName)] = ns.name(data.type)
|
293
|
+
end
|
294
|
+
elsif parent && parent.is_a?(SOAPArray) && (parent.arytype == data.type)
|
295
|
+
# No need to add.
|
296
|
+
elsif !data.type.namespace
|
297
|
+
# No need to add.
|
298
|
+
else
|
299
|
+
attrs[ns.name(XSD::AttrTypeName)] = ns.name(data.type)
|
300
|
+
end
|
301
|
+
end
|
302
|
+
data.extraattr.each do |key, value|
|
303
|
+
keytag = key
|
304
|
+
if key.is_a?(XSD::QName)
|
305
|
+
keytag = encode_attr_key(attrs, ns, key)
|
306
|
+
end
|
307
|
+
if value.is_a?(XSD::QName)
|
308
|
+
value = encode_qname(attrs, ns, value)
|
309
|
+
else
|
310
|
+
value = encode_attr_value(generator, ns, key, value)
|
311
|
+
end
|
312
|
+
attrs[keytag] = value
|
313
|
+
end
|
314
|
+
if data.id
|
315
|
+
attrs['id'] = data.id
|
316
|
+
end
|
317
|
+
attrs
|
318
|
+
end
|
319
|
+
|
320
|
+
def encode_attr_value(generator, ns, qname, value)
|
321
|
+
case value
|
322
|
+
when SOAPType
|
323
|
+
ref = SOAPReference.new(value)
|
324
|
+
generator.add_reftarget(qname.name, value)
|
325
|
+
ref.refidstr
|
326
|
+
else
|
327
|
+
value.to_s
|
328
|
+
end
|
329
|
+
end
|
330
|
+
|
331
|
+
def decode_tag_by_wsdl(ns, elename, typestr, parent, arytypestr, attrs)
|
332
|
+
o = nil
|
333
|
+
if parent.class == SOAPBody
|
334
|
+
# root element: should branch by root attribute?
|
335
|
+
if @is_first_top_ele
|
336
|
+
# Unqualified name is allowed here.
|
337
|
+
@is_first_top_ele = false
|
338
|
+
type = @decode_typemap[elename] ||
|
339
|
+
@decode_typemap.find_name(elename.name)
|
340
|
+
if type
|
341
|
+
o = SOAPStruct.new(elename)
|
342
|
+
o.elename = elename
|
343
|
+
o.definedtype = type
|
344
|
+
return o
|
345
|
+
end
|
346
|
+
end
|
347
|
+
# multi-ref element.
|
348
|
+
if typestr
|
349
|
+
typename = ns.parse(typestr)
|
350
|
+
typedef = @decode_typemap[typename]
|
351
|
+
if typedef
|
352
|
+
return decode_definedtype(elename, typename, typedef, arytypestr)
|
353
|
+
end
|
354
|
+
end
|
355
|
+
return decode_tag_by_type(ns, elename, typestr, parent, arytypestr, attrs)
|
356
|
+
end
|
357
|
+
|
358
|
+
if parent.type == XSD::AnyTypeName
|
359
|
+
return decode_tag_by_type(ns, elename, typestr, parent, arytypestr, attrs)
|
360
|
+
end
|
361
|
+
|
362
|
+
# parent.definedtype == nil means the parent is SOAPUnknown. SOAPUnknown
|
363
|
+
# is generated by decode_tag_by_type when its type is anyType.
|
364
|
+
parenttype = parent.definedtype || @decode_typemap[parent.type]
|
365
|
+
unless parenttype
|
366
|
+
return decode_tag_by_type(ns, elename, typestr, parent, arytypestr, attrs)
|
367
|
+
end
|
368
|
+
|
369
|
+
definedtype_name = parenttype.child_type(elename)
|
370
|
+
if definedtype_name and (klass = TypeMap[definedtype_name])
|
371
|
+
return decode_basetype(klass, elename)
|
372
|
+
elsif definedtype_name == XSD::AnyTypeName
|
373
|
+
return decode_tag_by_type(ns, elename, typestr, parent, arytypestr, attrs)
|
374
|
+
end
|
375
|
+
|
376
|
+
if definedtype_name
|
377
|
+
typedef = @decode_typemap[definedtype_name]
|
378
|
+
else
|
379
|
+
typedef = parenttype.child_defined_complextype(elename)
|
380
|
+
end
|
381
|
+
decode_definedtype(elename, definedtype_name, typedef, arytypestr)
|
382
|
+
end
|
383
|
+
|
384
|
+
def decode_definedtype(elename, typename, typedef, arytypestr)
|
385
|
+
unless typedef
|
386
|
+
raise EncodingStyleError.new("unknown type '#{typename}'")
|
387
|
+
end
|
388
|
+
if typedef.is_a?(::WSDL::XMLSchema::SimpleType)
|
389
|
+
decode_defined_simpletype(elename, typename, typedef, arytypestr)
|
390
|
+
else
|
391
|
+
decode_defined_complextype(elename, typename, typedef, arytypestr)
|
392
|
+
end
|
393
|
+
end
|
394
|
+
|
395
|
+
def decode_basetype(klass, elename)
|
396
|
+
klass.decode(elename)
|
397
|
+
end
|
398
|
+
|
399
|
+
def decode_defined_simpletype(elename, typename, typedef, arytypestr)
|
400
|
+
if typedef.base
|
401
|
+
o = decode_basetype(TypeMap[typedef.base], elename)
|
402
|
+
o.definedtype = typedef
|
403
|
+
o
|
404
|
+
else
|
405
|
+
raise RuntimeError.new("unsupported simpleType: #{typedef}")
|
406
|
+
end
|
407
|
+
end
|
408
|
+
|
409
|
+
def decode_defined_complextype(elename, typename, typedef, arytypestr)
|
410
|
+
case typedef.compoundtype
|
411
|
+
when :TYPE_STRUCT, :TYPE_MAP
|
412
|
+
o = SOAPStruct.decode(elename, typename)
|
413
|
+
o.definedtype = typedef
|
414
|
+
return o
|
415
|
+
when :TYPE_ARRAY
|
416
|
+
expected_arytype = typedef.find_arytype
|
417
|
+
if arytypestr
|
418
|
+
actual_arytype = XSD::QName.new(expected_arytype.namespace,
|
419
|
+
content_typename(expected_arytype.name) <<
|
420
|
+
content_ranksize(arytypestr))
|
421
|
+
o = SOAPArray.decode(elename, typename, actual_arytype)
|
422
|
+
else
|
423
|
+
o = SOAPArray.new(typename, 1, expected_arytype)
|
424
|
+
o.elename = elename
|
425
|
+
end
|
426
|
+
o.definedtype = typedef
|
427
|
+
return o
|
428
|
+
when :TYPE_EMPTY
|
429
|
+
o = SOAPNil.decode(elename)
|
430
|
+
o.definedtype = typedef
|
431
|
+
return o
|
432
|
+
else
|
433
|
+
raise RuntimeError.new(
|
434
|
+
"Unknown kind of complexType: #{typedef.compoundtype}")
|
435
|
+
end
|
436
|
+
nil
|
437
|
+
end
|
438
|
+
|
439
|
+
def decode_tag_by_type(ns, elename, typestr, parent, arytypestr, attrs)
|
440
|
+
if arytypestr
|
441
|
+
type = typestr ? ns.parse(typestr) : ValueArrayName
|
442
|
+
node = SOAPArray.decode(elename, type, ns.parse(arytypestr))
|
443
|
+
node.extraattr.update(attrs)
|
444
|
+
return node
|
445
|
+
end
|
446
|
+
|
447
|
+
type = nil
|
448
|
+
if typestr
|
449
|
+
type = ns.parse(typestr)
|
450
|
+
elsif parent.is_a?(SOAPArray)
|
451
|
+
type = parent.arytype
|
452
|
+
else
|
453
|
+
# Since it's in dynamic(without any type) encoding process,
|
454
|
+
# assumes entity as its type itself.
|
455
|
+
# <SOAP-ENC:Array ...> => type Array in SOAP-ENC.
|
456
|
+
# <Country xmlns="foo"> => type Country in foo.
|
457
|
+
type = elename
|
458
|
+
end
|
459
|
+
|
460
|
+
if klass = TypeMap[type]
|
461
|
+
node = decode_basetype(klass, elename)
|
462
|
+
node.extraattr.update(attrs)
|
463
|
+
return node
|
464
|
+
end
|
465
|
+
|
466
|
+
# Unknown type... Struct or String
|
467
|
+
SOAPUnknown.new(self, elename, type, attrs)
|
468
|
+
end
|
469
|
+
|
470
|
+
def decode_textbuf(node, textbufstr)
|
471
|
+
case node
|
472
|
+
when XSD::XSDHexBinary, XSD::XSDBase64Binary
|
473
|
+
node.set_encoded(textbufstr)
|
474
|
+
when XSD::XSDString
|
475
|
+
if @charset
|
476
|
+
textbufstr = XSD::Charset.encoding_from_xml(textbufstr, @charset)
|
477
|
+
end
|
478
|
+
if node.definedtype
|
479
|
+
node.definedtype.check_lexical_format(textbufstr)
|
480
|
+
end
|
481
|
+
node.set(textbufstr)
|
482
|
+
when SOAPNil
|
483
|
+
# Nothing to do.
|
484
|
+
when SOAPBasetype
|
485
|
+
node.set(textbufstr)
|
486
|
+
else
|
487
|
+
# Nothing to do...
|
488
|
+
end
|
489
|
+
end
|
490
|
+
|
491
|
+
NilLiteralMap = {
|
492
|
+
'true' => true,
|
493
|
+
'1' => true,
|
494
|
+
'false' => false,
|
495
|
+
'0' => false
|
496
|
+
}
|
497
|
+
RootLiteralMap = {
|
498
|
+
'1' => 1,
|
499
|
+
'0' => 0
|
500
|
+
}
|
501
|
+
def extract_attrs(ns, attrs)
|
502
|
+
is_nil = NilLiteralMap[attrs[XSD::AttrNilName]]
|
503
|
+
type = attrs[XSD::AttrTypeName]
|
504
|
+
arytype = attrs[AttrArrayTypeName]
|
505
|
+
root = attrs[AttrRootName]
|
506
|
+
offset = attrs[AttrOffsetName]
|
507
|
+
position = attrs[AttrPositionName]
|
508
|
+
href = attrs[AttrHrefName]
|
509
|
+
id = attrs[AttrIdName]
|
510
|
+
if attrs.key?(Mapping::RubyIVarName)
|
511
|
+
attrs[Mapping::RubyIVarName] =
|
512
|
+
decode_ref_value(ns, attrs[Mapping::RubyIVarName])
|
513
|
+
end
|
514
|
+
return is_nil, type, arytype, root, offset, position, href, id
|
515
|
+
end
|
516
|
+
|
517
|
+
def decode_ref_value(ns, value)
|
518
|
+
if /\A#/ =~ value
|
519
|
+
o = SOAPReference.decode(nil, value)
|
520
|
+
@refpool << o
|
521
|
+
o
|
522
|
+
else
|
523
|
+
value
|
524
|
+
end
|
525
|
+
end
|
526
|
+
|
527
|
+
def decode_arypos(position)
|
528
|
+
/^\[(.+)\]$/ =~ position
|
529
|
+
$1.split(',').collect { |s| s.to_i }
|
530
|
+
end
|
531
|
+
|
532
|
+
def decode_resolve_id
|
533
|
+
count = @refpool.length # To avoid infinite loop
|
534
|
+
while !@refpool.empty? && count > 0
|
535
|
+
@refpool = @refpool.find_all { |ref|
|
536
|
+
o = @idpool.find { |item|
|
537
|
+
item.id == ref.refid
|
538
|
+
}
|
539
|
+
if o.is_a?(SOAPReference)
|
540
|
+
true # link of link.
|
541
|
+
elsif o
|
542
|
+
ref.__setobj__(o)
|
543
|
+
false
|
544
|
+
elsif o = ref.rootnode.external_content[ref.refid]
|
545
|
+
ref.__setobj__(o)
|
546
|
+
false
|
547
|
+
else
|
548
|
+
raise EncodingStyleError.new("unresolved reference: #{ref.refid}")
|
549
|
+
end
|
550
|
+
}
|
551
|
+
count -= 1
|
552
|
+
end
|
553
|
+
end
|
554
|
+
end
|
555
|
+
|
556
|
+
SOAPHandler.new
|
557
|
+
|
558
|
+
|
559
|
+
end
|
560
|
+
end
|