rtiss_soap4r 1.6.0
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/filterchain.rb +52 -0
- data/lib/soap/filter/handler.rb +32 -0
- data/lib/soap/filter/streamhandler.rb +30 -0
- data/lib/soap/filter.rb +14 -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/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/mapping.rb +13 -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 +306 -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/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/codegen.rb +13 -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/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/lib/xsd/xmlparser.rb +77 -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 +489 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# WSDL4R - Class name creator.
|
|
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/mapping/typeMap'
|
|
11
|
+
require 'xsd/codegen/gensupport'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
module WSDL
|
|
15
|
+
module SOAP
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class ClassNameCreator
|
|
19
|
+
include XSD::CodeGen::GenSupport
|
|
20
|
+
|
|
21
|
+
def initialize
|
|
22
|
+
@classname = {}
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def assign_name(qname, modulepath = nil)
|
|
26
|
+
key = [modulepath, qname]
|
|
27
|
+
unless @classname.key?(key)
|
|
28
|
+
if klass = ::SOAP::TypeMap[qname]
|
|
29
|
+
name =
|
|
30
|
+
::SOAP::Mapping::DefaultRegistry.find_mapped_obj_class(klass).name
|
|
31
|
+
else
|
|
32
|
+
name = safeconstname(qname.name)
|
|
33
|
+
if modulepath
|
|
34
|
+
name = [modulepath, name].join('::')
|
|
35
|
+
end
|
|
36
|
+
while @classname.value?(name)
|
|
37
|
+
name += '_'
|
|
38
|
+
end
|
|
39
|
+
check_classname(name)
|
|
40
|
+
end
|
|
41
|
+
@classname[key] = name.freeze
|
|
42
|
+
end
|
|
43
|
+
@classname[key]
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def check_classname(name)
|
|
47
|
+
if Object.constants.include?(name)
|
|
48
|
+
warn("created definition re-opens an existing toplevel class: #{name}. consider to use --module_path option of wsdl2ruby.rb")
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# WSDL4R - Creating client skelton code from WSDL.
|
|
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 'wsdl/info'
|
|
11
|
+
require 'wsdl/soap/classDefCreatorSupport'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
module WSDL
|
|
15
|
+
module SOAP
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class ClientSkeltonCreator
|
|
19
|
+
include ClassDefCreatorSupport
|
|
20
|
+
|
|
21
|
+
attr_reader :definitions
|
|
22
|
+
|
|
23
|
+
def initialize(definitions, name_creator, modulepath = nil)
|
|
24
|
+
@definitions = definitions
|
|
25
|
+
@name_creator = name_creator
|
|
26
|
+
@modulepath = modulepath
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def dump(service_name)
|
|
30
|
+
services = @definitions.service(service_name)
|
|
31
|
+
unless services
|
|
32
|
+
raise RuntimeError.new("service not defined: #{service_name}")
|
|
33
|
+
end
|
|
34
|
+
result = ""
|
|
35
|
+
if @modulepath
|
|
36
|
+
result << "\n"
|
|
37
|
+
modulepath = @modulepath.respond_to?(:lines) ? @modulepath.lines : @modulepath # RubyJedi: compatible with Ruby 1.8.6 and above
|
|
38
|
+
result << modulepath.collect { |ele| "module #{ele}" }.join("; ")
|
|
39
|
+
result << "\n\n"
|
|
40
|
+
end
|
|
41
|
+
services.ports.each do |port|
|
|
42
|
+
result << dump_porttype(port.porttype)
|
|
43
|
+
result << "\n"
|
|
44
|
+
end
|
|
45
|
+
if @modulepath
|
|
46
|
+
result << "\n\n"
|
|
47
|
+
modulepath = @modulepath.respond_to?(:lines) ? @modulepath.lines : @modulepath # RubyJedi: compatible with Ruby 1.8.6 and above
|
|
48
|
+
result << modulepath.collect { |ele| "end" }.join("; ")
|
|
49
|
+
result << "\n"
|
|
50
|
+
end
|
|
51
|
+
result
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
private
|
|
55
|
+
|
|
56
|
+
def dump_porttype(porttype)
|
|
57
|
+
assigned_method = collect_assigned_method(@definitions, porttype.name, @modulepath)
|
|
58
|
+
drv_name = mapped_class_basename(porttype.name, @modulepath)
|
|
59
|
+
|
|
60
|
+
result = ""
|
|
61
|
+
result << <<__EOD__
|
|
62
|
+
endpoint_url = ARGV.shift
|
|
63
|
+
obj = #{ drv_name }.new(endpoint_url)
|
|
64
|
+
|
|
65
|
+
# run ruby with -d to see SOAP wiredumps.
|
|
66
|
+
obj.wiredump_dev = STDERR if $DEBUG
|
|
67
|
+
|
|
68
|
+
__EOD__
|
|
69
|
+
element_definitions = @definitions.collect_elements
|
|
70
|
+
binding = porttype.find_binding
|
|
71
|
+
if binding
|
|
72
|
+
binding.operations.each do |op_bind|
|
|
73
|
+
operation = op_bind.find_operation
|
|
74
|
+
if operation.nil?
|
|
75
|
+
warn("operation not found for binding: #{op_bind}")
|
|
76
|
+
next
|
|
77
|
+
end
|
|
78
|
+
name = assigned_method[op_bind.boundid] || operation.name
|
|
79
|
+
result << dump_method_signature(name, operation, element_definitions)
|
|
80
|
+
result << dump_input_init(operation.input) << "\n"
|
|
81
|
+
result << dump_operation(name, operation) << "\n\n"
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
result
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def dump_operation(name, operation)
|
|
88
|
+
input = operation.input
|
|
89
|
+
"puts obj.#{ safemethodname(name) }#{ dump_inputparam(input) }"
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def dump_input_init(input)
|
|
93
|
+
result = input.find_message.parts.collect { |part|
|
|
94
|
+
safevarname(part.name)
|
|
95
|
+
}.join(" = ")
|
|
96
|
+
if result.empty?
|
|
97
|
+
""
|
|
98
|
+
else
|
|
99
|
+
result << " = nil"
|
|
100
|
+
end
|
|
101
|
+
result
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
end
|
|
107
|
+
end
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# WSDL4R - SOAP complexType definition for WSDL.
|
|
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 'wsdl/xmlSchema/complexType'
|
|
11
|
+
require 'soap/mapping'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
module WSDL
|
|
15
|
+
module XMLSchema
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class ComplexType < Info
|
|
19
|
+
def compoundtype
|
|
20
|
+
@compoundtype ||= check_type
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def check_type
|
|
24
|
+
if have_any?
|
|
25
|
+
:TYPE_STRUCT
|
|
26
|
+
elsif content
|
|
27
|
+
if attributes.empty? and map_as_array?
|
|
28
|
+
if name == ::SOAP::Mapping::MapQName
|
|
29
|
+
:TYPE_MAP
|
|
30
|
+
else
|
|
31
|
+
:TYPE_ARRAY
|
|
32
|
+
end
|
|
33
|
+
else
|
|
34
|
+
:TYPE_STRUCT
|
|
35
|
+
end
|
|
36
|
+
elsif complexcontent
|
|
37
|
+
complexcontent.check_type
|
|
38
|
+
elsif simplecontent
|
|
39
|
+
:TYPE_SIMPLE
|
|
40
|
+
elsif !attributes.empty?
|
|
41
|
+
:TYPE_STRUCT
|
|
42
|
+
else # empty complexType definition (seen in partner.wsdl of salesforce)
|
|
43
|
+
:TYPE_EMPTY
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def child_type(name = nil)
|
|
48
|
+
case compoundtype
|
|
49
|
+
when :TYPE_STRUCT
|
|
50
|
+
if ele = find_element(name)
|
|
51
|
+
ele.type
|
|
52
|
+
elsif ele = find_element_by_name(name.name)
|
|
53
|
+
ele.type
|
|
54
|
+
end
|
|
55
|
+
when :TYPE_ARRAY
|
|
56
|
+
@contenttype ||= content_arytype
|
|
57
|
+
when :TYPE_MAP
|
|
58
|
+
item_ele = find_element_by_name("item") or
|
|
59
|
+
raise RuntimeError.new("'item' element not found in Map definition.")
|
|
60
|
+
content = item_ele.local_complextype or
|
|
61
|
+
raise RuntimeError.new("No complexType definition for 'item'.")
|
|
62
|
+
if ele = content.find_element(name)
|
|
63
|
+
ele.type
|
|
64
|
+
elsif ele = content.find_element_by_name(name.name)
|
|
65
|
+
ele.type
|
|
66
|
+
end
|
|
67
|
+
else
|
|
68
|
+
raise NotImplementedError.new("Unknown kind of complexType.")
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def child_defined_complextype(name)
|
|
73
|
+
ele = nil
|
|
74
|
+
case compoundtype
|
|
75
|
+
when :TYPE_STRUCT, :TYPE_MAP
|
|
76
|
+
unless ele = find_element(name)
|
|
77
|
+
if name.namespace.nil?
|
|
78
|
+
ele = find_element_by_name(name.name)
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
when :TYPE_ARRAY
|
|
82
|
+
e = elements
|
|
83
|
+
if e.size == 1
|
|
84
|
+
ele = e[0]
|
|
85
|
+
else
|
|
86
|
+
raise RuntimeError.new("Assert: must not reach.")
|
|
87
|
+
end
|
|
88
|
+
else
|
|
89
|
+
raise RuntimeError.new("Assert: Not implemented.")
|
|
90
|
+
end
|
|
91
|
+
unless ele
|
|
92
|
+
raise RuntimeError.new("Cannot find #{name} as a children of #{@name}.")
|
|
93
|
+
end
|
|
94
|
+
ele.local_complextype
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def find_soapenc_arytype
|
|
98
|
+
unless compoundtype == :TYPE_ARRAY
|
|
99
|
+
raise RuntimeError.new("Assert: not for array")
|
|
100
|
+
end
|
|
101
|
+
if complexcontent
|
|
102
|
+
if complexcontent.restriction
|
|
103
|
+
complexcontent.restriction.attributes.each do |attribute|
|
|
104
|
+
if attribute.ref == ::SOAP::AttrArrayTypeName
|
|
105
|
+
return attribute.arytype
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
nil
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def find_arytype
|
|
114
|
+
unless compoundtype == :TYPE_ARRAY
|
|
115
|
+
raise RuntimeError.new("Assert: not for array")
|
|
116
|
+
end
|
|
117
|
+
if arytype = find_soapenc_arytype
|
|
118
|
+
return arytype
|
|
119
|
+
end
|
|
120
|
+
if map_as_array?
|
|
121
|
+
return element_simpletype(elements[0])
|
|
122
|
+
end
|
|
123
|
+
raise RuntimeError.new("Assert: Unknown array definition.")
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def find_aryelement
|
|
127
|
+
unless compoundtype == :TYPE_ARRAY
|
|
128
|
+
raise RuntimeError.new("Assert: not for array")
|
|
129
|
+
end
|
|
130
|
+
if map_as_array?
|
|
131
|
+
return nested_elements[0]
|
|
132
|
+
end
|
|
133
|
+
nil # use default item name
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
private
|
|
137
|
+
|
|
138
|
+
def element_simpletype(element)
|
|
139
|
+
case element
|
|
140
|
+
when XMLSchema::Element
|
|
141
|
+
if element.type
|
|
142
|
+
element.type
|
|
143
|
+
elsif element.local_simpletype
|
|
144
|
+
element.local_simpletype.base
|
|
145
|
+
else
|
|
146
|
+
# element definition
|
|
147
|
+
nil
|
|
148
|
+
end
|
|
149
|
+
when XMLSchema::Any
|
|
150
|
+
XSD::AnyTypeName
|
|
151
|
+
else
|
|
152
|
+
nil
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def map_as_array?
|
|
157
|
+
e = nested_elements
|
|
158
|
+
e.size == 1 and e[0].map_as_array?
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def content_arytype
|
|
162
|
+
if arytype = find_arytype
|
|
163
|
+
ns = arytype.namespace
|
|
164
|
+
name = arytype.name.sub(/\[(?:,)*\]$/, '')
|
|
165
|
+
XSD::QName.new(ns, name)
|
|
166
|
+
else
|
|
167
|
+
nil
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
end
|
|
174
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# WSDL4R - WSDL SOAP binding data definitions.
|
|
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 'xsd/qname'
|
|
11
|
+
require 'wsdl/soap/definitions'
|
|
12
|
+
require 'wsdl/soap/binding'
|
|
13
|
+
require 'wsdl/soap/operation'
|
|
14
|
+
require 'wsdl/soap/body'
|
|
15
|
+
require 'wsdl/soap/element'
|
|
16
|
+
require 'wsdl/soap/header'
|
|
17
|
+
require 'wsdl/soap/headerfault'
|
|
18
|
+
require 'wsdl/soap/fault'
|
|
19
|
+
require 'wsdl/soap/address'
|
|
20
|
+
require 'wsdl/soap/complexType'
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
module WSDL
|
|
24
|
+
module SOAP
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
HeaderFaultName = XSD::QName.new(SOAPBindingNamespace, 'headerfault')
|
|
28
|
+
|
|
29
|
+
LocationAttrName = XSD::QName.new(nil, 'location')
|
|
30
|
+
StyleAttrName = XSD::QName.new(nil, 'style')
|
|
31
|
+
TransportAttrName = XSD::QName.new(nil, 'transport')
|
|
32
|
+
UseAttrName = XSD::QName.new(nil, 'use')
|
|
33
|
+
PartsAttrName = XSD::QName.new(nil, 'parts')
|
|
34
|
+
PartAttrName = XSD::QName.new(nil, 'part')
|
|
35
|
+
NameAttrName = XSD::QName.new(nil, 'name')
|
|
36
|
+
MessageAttrName = XSD::QName.new(nil, 'message')
|
|
37
|
+
EncodingStyleAttrName = XSD::QName.new(nil, 'encodingStyle')
|
|
38
|
+
NamespaceAttrName = XSD::QName.new(nil, 'namespace')
|
|
39
|
+
SOAPActionAttrName = XSD::QName.new(nil, 'soapAction')
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# WSDL4R - WSDL additional definitions for SOAP.
|
|
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 'wsdl/info'
|
|
11
|
+
require 'xsd/namedelements'
|
|
12
|
+
require 'soap/mapping'
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
module WSDL
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class Definitions < Info
|
|
19
|
+
def self.soap_rpc_complextypes
|
|
20
|
+
types = XSD::NamedElements.new
|
|
21
|
+
types << array_complextype
|
|
22
|
+
types << fault_complextype
|
|
23
|
+
types << exception_complextype
|
|
24
|
+
types
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.array_complextype
|
|
28
|
+
type = XMLSchema::ComplexType.new(::SOAP::ValueArrayName)
|
|
29
|
+
type.complexcontent = XMLSchema::ComplexContent.new
|
|
30
|
+
type.complexcontent.restriction = XMLSchema::ComplexRestriction.new
|
|
31
|
+
type.complexcontent.restriction.base = ::SOAP::ValueArrayName
|
|
32
|
+
attr = XMLSchema::Attribute.new
|
|
33
|
+
attr.ref = ::SOAP::AttrArrayTypeName
|
|
34
|
+
anyarray = XSD::QName.new(
|
|
35
|
+
XSD::AnyTypeName.namespace,
|
|
36
|
+
XSD::AnyTypeName.name + '[]')
|
|
37
|
+
attr.arytype = anyarray
|
|
38
|
+
type.complexcontent.restriction.attributes << attr
|
|
39
|
+
type
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
=begin
|
|
43
|
+
<xs:complexType name="Fault" final="extension">
|
|
44
|
+
<xs:sequence>
|
|
45
|
+
<xs:element name="faultcode" type="xs:QName" />
|
|
46
|
+
<xs:element name="faultstring" type="xs:string" />
|
|
47
|
+
<xs:element name="faultactor" type="xs:anyURI" minOccurs="0" />
|
|
48
|
+
<xs:element name="detail" type="tns:detail" minOccurs="0" />
|
|
49
|
+
</xs:sequence>
|
|
50
|
+
</xs:complexType>
|
|
51
|
+
=end
|
|
52
|
+
def self.fault_complextype
|
|
53
|
+
type = XMLSchema::ComplexType.new(::SOAP::EleFaultName)
|
|
54
|
+
faultcode = XMLSchema::Element.new(::SOAP::EleFaultCodeName, XSD::XSDQName::Type)
|
|
55
|
+
faultstring = XMLSchema::Element.new(::SOAP::EleFaultStringName, XSD::XSDString::Type)
|
|
56
|
+
faultactor = XMLSchema::Element.new(::SOAP::EleFaultActorName, XSD::XSDAnyURI::Type)
|
|
57
|
+
faultactor.minoccurs = 0
|
|
58
|
+
detail = XMLSchema::Element.new(::SOAP::EleFaultDetailName, XSD::AnyTypeName)
|
|
59
|
+
detail.minoccurs = 0
|
|
60
|
+
type.all_elements = [faultcode, faultstring, faultactor, detail]
|
|
61
|
+
type.final = 'extension'
|
|
62
|
+
type
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def self.exception_complextype
|
|
66
|
+
type = XMLSchema::ComplexType.new(XSD::QName.new(
|
|
67
|
+
::SOAP::Mapping::RubyCustomTypeNamespace, 'SOAPException'))
|
|
68
|
+
excn_name = XMLSchema::Element.new(XSD::QName.new(nil, 'excn_type_name'), XSD::XSDString::Type)
|
|
69
|
+
cause = XMLSchema::Element.new(XSD::QName.new(nil, 'cause'), XSD::AnyTypeName)
|
|
70
|
+
backtrace = XMLSchema::Element.new(XSD::QName.new(nil, 'backtrace'), ::SOAP::ValueArrayName)
|
|
71
|
+
message = XMLSchema::Element.new(XSD::QName.new(nil, 'message'), XSD::XSDString::Type)
|
|
72
|
+
type.all_elements = [excn_name, cause, backtrace, message]
|
|
73
|
+
type
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def soap_rpc_complextypes(binding)
|
|
77
|
+
types = rpc_operation_complextypes(binding)
|
|
78
|
+
types + self.class.soap_rpc_complextypes
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def collect_faulttypes
|
|
82
|
+
result = []
|
|
83
|
+
collect_fault_messages.each do |name|
|
|
84
|
+
faultparts = message(name).parts
|
|
85
|
+
if faultparts.size != 1
|
|
86
|
+
raise RuntimeError.new("Expecting fault message \"#{name}\" to have ONE part")
|
|
87
|
+
end
|
|
88
|
+
fault_part = faultparts[0]
|
|
89
|
+
# WS-I Basic Profile Version 1.1 (R2205) requires fault message parts
|
|
90
|
+
# to refer to elements rather than types
|
|
91
|
+
faulttype = fault_part.element
|
|
92
|
+
if not faulttype
|
|
93
|
+
warn("Fault message \"#{name}\" part \"#{fault_part.name}\" must specify an \"element\" attribute")
|
|
94
|
+
faulttype = fault_part.type
|
|
95
|
+
end
|
|
96
|
+
if faulttype and result.index(faulttype).nil?
|
|
97
|
+
result << faulttype
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
result
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
private
|
|
104
|
+
|
|
105
|
+
def get_fault_binding(op_binding, fault_name)
|
|
106
|
+
op_binding.fault.each do |fault|
|
|
107
|
+
return fault if fault.name == fault_name
|
|
108
|
+
end
|
|
109
|
+
return nil
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def op_binding_declares_fault(op_binding, fault_name)
|
|
113
|
+
return get_fault_binding(op_binding, fault_name) != nil
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def collect_fault_messages
|
|
117
|
+
result = []
|
|
118
|
+
porttypes.each do |porttype|
|
|
119
|
+
port_binding = porttype.find_binding()
|
|
120
|
+
next unless port_binding
|
|
121
|
+
porttype.operations.each do |operation|
|
|
122
|
+
op_binding = port_binding.operations.find { |ele| ele.name == operation.name }
|
|
123
|
+
next unless op_binding
|
|
124
|
+
operation.fault.each do |fault|
|
|
125
|
+
# Make sure the operation fault has a name
|
|
126
|
+
if not fault.name
|
|
127
|
+
warn("Operation \"#{operation.name}\": fault must specify a \"name\" attribute")
|
|
128
|
+
next
|
|
129
|
+
end
|
|
130
|
+
# Make sure that portType fault has a corresponding soap:fault
|
|
131
|
+
# definition in binding section.
|
|
132
|
+
if not op_binding_declares_fault(op_binding, fault.name)
|
|
133
|
+
warn("Operation \"#{operation.name}\", fault \"#{fault.name}\": no corresponding wsdl:fault binding found with a matching \"name\" attribute")
|
|
134
|
+
next
|
|
135
|
+
end
|
|
136
|
+
fault_binding = get_fault_binding(op_binding, fault.name)
|
|
137
|
+
if fault_binding.soapfault.nil?
|
|
138
|
+
warn("WARNING: no soap:fault found for wsdl:fault \"#{fault_binding.name}\" in operation \"#{operation.name}\" \n\n")
|
|
139
|
+
next
|
|
140
|
+
end
|
|
141
|
+
if fault_binding.soapfault.name != fault_binding.name
|
|
142
|
+
warn("WARNING: name of soap:fault \"#{fault_binding.soapfault.name}\" doesn't match the name of wsdl:fault \"#{fault_binding.name}\" in operation \"#{operation.name}\" \n\n")
|
|
143
|
+
next
|
|
144
|
+
end
|
|
145
|
+
# According to WS-I (R2723): if in a wsdl:binding the use attribute
|
|
146
|
+
# on a contained soapbind:fault element is present, its value MUST
|
|
147
|
+
# be "literal".
|
|
148
|
+
if fault_binding.soapfault.use and fault_binding.soapfault.use != "literal"
|
|
149
|
+
warn("Operation \"#{operation.name}\", fault \"#{fault.name}\": soap:fault \"use\" attribute must be \"literal\"")
|
|
150
|
+
end
|
|
151
|
+
if result.index(fault.message).nil?
|
|
152
|
+
result << fault.message
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
result
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def rpc_operation_complextypes(binding)
|
|
161
|
+
types = XSD::NamedElements.new
|
|
162
|
+
binding.operations.each do |op_bind|
|
|
163
|
+
if op_bind_rpc?(op_bind)
|
|
164
|
+
operation = op_bind.find_operation
|
|
165
|
+
if op_bind.input
|
|
166
|
+
type = XMLSchema::ComplexType.new(op_bind.soapoperation_name)
|
|
167
|
+
message = messages[operation.input.message]
|
|
168
|
+
type.sequence_elements = elements_from_message(message)
|
|
169
|
+
types << type
|
|
170
|
+
end
|
|
171
|
+
if op_bind.output
|
|
172
|
+
type = XMLSchema::ComplexType.new(operation.outputname)
|
|
173
|
+
message = messages[operation.output.message]
|
|
174
|
+
type.sequence_elements = elements_from_message(message)
|
|
175
|
+
types << type
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
types
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def op_bind_rpc?(op_bind)
|
|
183
|
+
op_bind.soapoperation_style == :rpc
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def elements_from_message(message)
|
|
187
|
+
message.parts.collect { |part|
|
|
188
|
+
if part.element
|
|
189
|
+
collect_elements[part.element]
|
|
190
|
+
elsif part.name.nil? or part.type.nil?
|
|
191
|
+
raise RuntimeError.new("part of a message must be an element or typed")
|
|
192
|
+
else
|
|
193
|
+
qname = XSD::QName.new(nil, part.name)
|
|
194
|
+
XMLSchema::Element.new(qname, part.type)
|
|
195
|
+
end
|
|
196
|
+
}
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
end
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# WSDL4R - Creating driver code from WSDL.
|
|
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 'wsdl/info'
|
|
11
|
+
require 'wsdl/soap/mappingRegistryCreator'
|
|
12
|
+
require 'wsdl/soap/methodDefCreator'
|
|
13
|
+
require 'wsdl/soap/classDefCreatorSupport'
|
|
14
|
+
require 'xsd/codegen'
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
module WSDL
|
|
18
|
+
module SOAP
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class DriverCreator
|
|
22
|
+
include ClassDefCreatorSupport
|
|
23
|
+
|
|
24
|
+
attr_reader :definitions
|
|
25
|
+
attr_accessor :drivername_postfix
|
|
26
|
+
|
|
27
|
+
def initialize(definitions, name_creator, modulepath = nil)
|
|
28
|
+
@definitions = definitions
|
|
29
|
+
@name_creator = name_creator
|
|
30
|
+
@modulepath = modulepath
|
|
31
|
+
@drivername_postfix = ''
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def dump(porttype = nil)
|
|
35
|
+
result = "require 'soap/rpc/driver'\n\n"
|
|
36
|
+
if @modulepath
|
|
37
|
+
modulepath = @modulepath.respond_to?(:lines) ? @modulepath.lines : @modulepath # RubyJedi: compatible with Ruby 1.8.6 and above
|
|
38
|
+
modulepath.each do |name|
|
|
39
|
+
result << "module #{name}\n"
|
|
40
|
+
end
|
|
41
|
+
result << "\n"
|
|
42
|
+
end
|
|
43
|
+
if porttype.nil?
|
|
44
|
+
@definitions.porttypes.each do |type|
|
|
45
|
+
result << dump_porttype(type.name)
|
|
46
|
+
result << "\n"
|
|
47
|
+
end
|
|
48
|
+
else
|
|
49
|
+
result << dump_porttype(porttype)
|
|
50
|
+
end
|
|
51
|
+
if @modulepath
|
|
52
|
+
result << "\n"
|
|
53
|
+
modulepath = @modulepath.respond_to?(:lines) ? @modulepath.lines : @modulepath # RubyJedi: compatible with Ruby 1.8.6 and above
|
|
54
|
+
modulepath.each do |name|
|
|
55
|
+
result << "end\n"
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
result
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
private
|
|
62
|
+
|
|
63
|
+
def dump_porttype(porttype)
|
|
64
|
+
drivername = porttype.name + @drivername_postfix
|
|
65
|
+
qname = XSD::QName.new(porttype.namespace, drivername)
|
|
66
|
+
class_name = mapped_class_basename(qname, @modulepath)
|
|
67
|
+
defined_const = {}
|
|
68
|
+
mdcreator = MethodDefCreator.new(@definitions, @name_creator, @modulepath, defined_const)
|
|
69
|
+
methoddef = mdcreator.dump(porttype)
|
|
70
|
+
binding = @definitions.bindings.find { |item| item.type == porttype }
|
|
71
|
+
if binding.nil? or binding.soapbinding.nil?
|
|
72
|
+
# not bound or not a SOAP binding
|
|
73
|
+
return ''
|
|
74
|
+
end
|
|
75
|
+
address = @definitions.porttype(porttype).locations[0]
|
|
76
|
+
|
|
77
|
+
c = XSD::CodeGen::ClassDef.new(class_name, "::SOAP::RPC::Driver")
|
|
78
|
+
c.def_const("DefaultEndpointUrl", ndq(address))
|
|
79
|
+
c.def_code <<-EOD
|
|
80
|
+
Methods = [
|
|
81
|
+
#{methoddef.gsub(/^/, " ")}
|
|
82
|
+
]
|
|
83
|
+
EOD
|
|
84
|
+
wsdl_name = @definitions.name ? @definitions.name.name : 'default'
|
|
85
|
+
mrname = safeconstname(wsdl_name + 'MappingRegistry')
|
|
86
|
+
c.def_method("initialize", "endpoint_url = nil") do
|
|
87
|
+
%Q[endpoint_url ||= DefaultEndpointUrl\n] +
|
|
88
|
+
%Q[super(endpoint_url, nil)\n] +
|
|
89
|
+
%Q[self.mapping_registry = #{mrname}::EncodedRegistry\n] +
|
|
90
|
+
%Q[self.literal_mapping_registry = #{mrname}::LiteralRegistry\n] +
|
|
91
|
+
%Q[init_methods]
|
|
92
|
+
end
|
|
93
|
+
c.def_privatemethod("init_methods") do
|
|
94
|
+
<<-EOD
|
|
95
|
+
Methods.each do |definitions|
|
|
96
|
+
opt = definitions.last
|
|
97
|
+
if opt[:request_style] == :document
|
|
98
|
+
add_document_operation(*definitions)
|
|
99
|
+
else
|
|
100
|
+
add_rpc_operation(*definitions)
|
|
101
|
+
qname = definitions[0]
|
|
102
|
+
name = definitions[2]
|
|
103
|
+
if qname.name != name and qname.name.capitalize == name.capitalize
|
|
104
|
+
::SOAP::Mapping.define_singleton_method(self, qname.name) do |*arg|
|
|
105
|
+
__send__(name, *arg)
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
EOD
|
|
111
|
+
end
|
|
112
|
+
defined_const.each do |ns, tag|
|
|
113
|
+
c.def_const(tag, dq(ns))
|
|
114
|
+
end
|
|
115
|
+
c.dump
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
end
|
|
121
|
+
end
|