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,241 @@
|
|
1
|
+
# encoding: ASCII-8BIT
|
2
|
+
# WSDL4R - Creating class code support 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 'soap/mapping'
|
12
|
+
require 'soap/mapping/typeMap'
|
13
|
+
require 'xsd/codegen/gensupport'
|
14
|
+
|
15
|
+
|
16
|
+
module WSDL
|
17
|
+
module SOAP
|
18
|
+
|
19
|
+
|
20
|
+
# requires @defined_const, @simpletypes, @name_creator
|
21
|
+
module ClassDefCreatorSupport
|
22
|
+
include XSD::CodeGen::GenSupport
|
23
|
+
|
24
|
+
def mapped_class_name(qname, modulepath)
|
25
|
+
@name_creator.assign_name(qname, modulepath)
|
26
|
+
end
|
27
|
+
|
28
|
+
def mapped_class_basename(qname, modulepath)
|
29
|
+
classname = @name_creator.assign_name(qname, modulepath)
|
30
|
+
classname.sub(/\A.*:/, '')
|
31
|
+
end
|
32
|
+
|
33
|
+
def basetype_mapped_class(name)
|
34
|
+
::SOAP::TypeMap[name]
|
35
|
+
end
|
36
|
+
|
37
|
+
def dump_method_signature(name, operation, element_definitions)
|
38
|
+
methodname = safemethodname(name)
|
39
|
+
input = operation.input
|
40
|
+
output = operation.output
|
41
|
+
fault = operation.fault
|
42
|
+
signature = "#{methodname}#{dump_inputparam(input)}"
|
43
|
+
str = <<__EOD__
|
44
|
+
# SYNOPSIS
|
45
|
+
# #{methodname}#{dump_inputparam(input)}
|
46
|
+
#
|
47
|
+
# ARGS
|
48
|
+
#{dump_inout_type(input, element_definitions).chomp}
|
49
|
+
#
|
50
|
+
# RETURNS
|
51
|
+
#{dump_inout_type(output, element_definitions).chomp}
|
52
|
+
#
|
53
|
+
__EOD__
|
54
|
+
unless fault.empty?
|
55
|
+
str += <<__EOD__
|
56
|
+
# RAISES
|
57
|
+
#{dump_fault_type(fault, element_definitions)}
|
58
|
+
#
|
59
|
+
__EOD__
|
60
|
+
end
|
61
|
+
str
|
62
|
+
end
|
63
|
+
|
64
|
+
def dq(ele)
|
65
|
+
ele.dump
|
66
|
+
end
|
67
|
+
|
68
|
+
def ndq(ele)
|
69
|
+
ele.nil? ? 'nil' : dq(ele)
|
70
|
+
end
|
71
|
+
|
72
|
+
def sym(ele)
|
73
|
+
':' + ele.id2name
|
74
|
+
end
|
75
|
+
|
76
|
+
def nsym(ele)
|
77
|
+
ele.nil? ? 'nil' : sym(ele)
|
78
|
+
end
|
79
|
+
|
80
|
+
def dqname(qname)
|
81
|
+
if @defined_const.key?(qname.namespace)
|
82
|
+
qname.dump(@defined_const[qname.namespace])
|
83
|
+
else
|
84
|
+
qname.dump
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def assign_const(value, prefix = '')
|
89
|
+
return if value.nil? or @defined_const.key?(value)
|
90
|
+
name = value.scan(/[^:\/]+\/?\z/)[0] || 'C'
|
91
|
+
tag = prefix + safeconstname(name)
|
92
|
+
if @defined_const.value?(tag)
|
93
|
+
idx = 0
|
94
|
+
while true
|
95
|
+
tag = prefix + safeconstname(name + "_#{idx}")
|
96
|
+
break unless @defined_const.value?(tag)
|
97
|
+
idx += 1
|
98
|
+
raise RuntimeError.new("too much similar names") if idx > 100
|
99
|
+
end
|
100
|
+
end
|
101
|
+
@defined_const[value] = tag
|
102
|
+
end
|
103
|
+
|
104
|
+
def create_type_name(modulepath, element)
|
105
|
+
if element.type == XSD::AnyTypeName
|
106
|
+
# nil means anyType.
|
107
|
+
nil
|
108
|
+
elsif simpletype = @simpletypes[element.type]
|
109
|
+
if simpletype.restriction and simpletype.restriction.enumeration?
|
110
|
+
mapped_class_name(element.type, modulepath)
|
111
|
+
else
|
112
|
+
nil
|
113
|
+
end
|
114
|
+
elsif klass = element_basetype(element)
|
115
|
+
klass.name
|
116
|
+
elsif element.type
|
117
|
+
mapped_class_name(element.type, modulepath)
|
118
|
+
elsif element.ref
|
119
|
+
mapped_class_name(element.ref, modulepath)
|
120
|
+
elsif element.anonymous_type?
|
121
|
+
# inner class
|
122
|
+
mapped_class_name(element.name, modulepath)
|
123
|
+
else
|
124
|
+
nil
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
private
|
129
|
+
|
130
|
+
def dump_inout_type(param, element_definitions)
|
131
|
+
if param
|
132
|
+
message = param.find_message
|
133
|
+
params = ""
|
134
|
+
message.parts.each do |part|
|
135
|
+
name = safevarname(part.name)
|
136
|
+
if part.type
|
137
|
+
typename = safeconstname(part.type.name)
|
138
|
+
qname = part.type
|
139
|
+
params << add_at("# #{name}", "#{typename} - #{qname}\n", 20)
|
140
|
+
elsif part.element
|
141
|
+
ele = element_definitions[part.element]
|
142
|
+
if ele.type
|
143
|
+
typename = safeconstname(ele.type.name)
|
144
|
+
qname = ele.type
|
145
|
+
else
|
146
|
+
typename = safeconstname(ele.name.name)
|
147
|
+
qname = ele.name
|
148
|
+
end
|
149
|
+
params << add_at("# #{name}", "#{typename} - #{qname}\n", 20)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
unless params.empty?
|
153
|
+
return params
|
154
|
+
end
|
155
|
+
end
|
156
|
+
"# N/A\n"
|
157
|
+
end
|
158
|
+
|
159
|
+
def dump_inputparam(input)
|
160
|
+
message = input.find_message
|
161
|
+
params = ""
|
162
|
+
message.parts.each do |part|
|
163
|
+
params << ", " unless params.empty?
|
164
|
+
params << safevarname(part.name)
|
165
|
+
end
|
166
|
+
if params.empty?
|
167
|
+
""
|
168
|
+
else
|
169
|
+
"(#{ params })"
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
def add_at(base, str, pos)
|
174
|
+
if base.size >= pos
|
175
|
+
base + ' ' + str
|
176
|
+
else
|
177
|
+
base + ' ' * (pos - base.size) + str
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
def dump_fault_type(fault, element_definitions)
|
182
|
+
fault.collect { |ele|
|
183
|
+
dump_inout_type(ele, element_definitions).chomp
|
184
|
+
}.join("\n")
|
185
|
+
end
|
186
|
+
|
187
|
+
def element_basetype(ele)
|
188
|
+
if klass = basetype_class(ele.type)
|
189
|
+
klass
|
190
|
+
elsif ele.local_simpletype
|
191
|
+
basetype_class(ele.local_simpletype.base)
|
192
|
+
else
|
193
|
+
nil
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
def attribute_basetype(attr)
|
198
|
+
if klass = basetype_class(attr.type)
|
199
|
+
klass
|
200
|
+
elsif attr.local_simpletype
|
201
|
+
basetype_class(attr.local_simpletype.base)
|
202
|
+
else
|
203
|
+
nil
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
def basetype_class(type)
|
208
|
+
return nil if type.nil?
|
209
|
+
if simpletype = @simpletypes[type]
|
210
|
+
basetype_mapped_class(simpletype.base)
|
211
|
+
else
|
212
|
+
basetype_mapped_class(type)
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
def name_element(element)
|
217
|
+
return element.name if element.name
|
218
|
+
return element.ref if element.ref
|
219
|
+
raise RuntimeError.new("cannot define name of #{element}")
|
220
|
+
end
|
221
|
+
|
222
|
+
def name_attribute(attribute)
|
223
|
+
return attribute.name if attribute.name
|
224
|
+
return attribute.ref if attribute.ref
|
225
|
+
raise RuntimeError.new("cannot define name of #{attribute}")
|
226
|
+
end
|
227
|
+
|
228
|
+
# TODO: run MethodDefCreator just once in 1.6.X.
|
229
|
+
# MethodDefCreator should return parsed struct, not a String.
|
230
|
+
def collect_assigned_method(wsdl, porttypename, modulepath = nil)
|
231
|
+
name_creator = WSDL::SOAP::ClassNameCreator.new
|
232
|
+
methoddefcreator =
|
233
|
+
WSDL::SOAP::MethodDefCreator.new(wsdl, name_creator, modulepath, {})
|
234
|
+
methoddefcreator.dump(porttypename)
|
235
|
+
methoddefcreator.assigned_method
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
|
240
|
+
end
|
241
|
+
end
|
@@ -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
|