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
data/lib/wsdl/service.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
# encoding: ASCII-8BIT
|
2
|
+
# WSDL4R - WSDL service definition.
|
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
|
+
|
13
|
+
|
14
|
+
module WSDL
|
15
|
+
|
16
|
+
|
17
|
+
class Service < Info
|
18
|
+
attr_reader :name # required
|
19
|
+
attr_reader :ports
|
20
|
+
attr_reader :soap_address
|
21
|
+
|
22
|
+
def initialize
|
23
|
+
super
|
24
|
+
@name = nil
|
25
|
+
@ports = XSD::NamedElements.new
|
26
|
+
@soap_address = nil
|
27
|
+
end
|
28
|
+
|
29
|
+
def targetnamespace
|
30
|
+
parent.targetnamespace
|
31
|
+
end
|
32
|
+
|
33
|
+
def parse_element(element)
|
34
|
+
case element
|
35
|
+
when PortName
|
36
|
+
o = Port.new
|
37
|
+
@ports << o
|
38
|
+
o
|
39
|
+
when SOAPAddressName
|
40
|
+
o = WSDL::SOAP::Address.new
|
41
|
+
@soap_address = o
|
42
|
+
o
|
43
|
+
when DocumentationName
|
44
|
+
o = Documentation.new
|
45
|
+
o
|
46
|
+
else
|
47
|
+
nil
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def parse_attr(attr, value)
|
52
|
+
case attr
|
53
|
+
when NameAttrName
|
54
|
+
@name = XSD::QName.new(targetnamespace, value.source)
|
55
|
+
else
|
56
|
+
nil
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# encoding: ASCII-8BIT
|
2
|
+
# WSDL4R - WSDL SOAP address definition.
|
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
|
+
|
12
|
+
|
13
|
+
module WSDL
|
14
|
+
module SOAP
|
15
|
+
|
16
|
+
|
17
|
+
class Address < Info
|
18
|
+
attr_reader :location
|
19
|
+
|
20
|
+
def initialize
|
21
|
+
super
|
22
|
+
@location = nil
|
23
|
+
end
|
24
|
+
|
25
|
+
def parse_element(element)
|
26
|
+
nil
|
27
|
+
end
|
28
|
+
|
29
|
+
def parse_attr(attr, value)
|
30
|
+
case attr
|
31
|
+
when LocationAttrName
|
32
|
+
@location = value.source
|
33
|
+
else
|
34
|
+
nil
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# encoding: ASCII-8BIT
|
2
|
+
# WSDL4R - WSDL SOAP binding definition.
|
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
|
+
|
12
|
+
|
13
|
+
module WSDL
|
14
|
+
module SOAP
|
15
|
+
|
16
|
+
|
17
|
+
class Binding < Info
|
18
|
+
attr_reader :style
|
19
|
+
attr_reader :transport
|
20
|
+
|
21
|
+
def initialize
|
22
|
+
super
|
23
|
+
@style = nil
|
24
|
+
@transport = nil
|
25
|
+
end
|
26
|
+
|
27
|
+
def parse_element(element)
|
28
|
+
nil
|
29
|
+
end
|
30
|
+
|
31
|
+
def parse_attr(attr, value)
|
32
|
+
case attr
|
33
|
+
when StyleAttrName
|
34
|
+
if ["document", "rpc"].include?(value.source)
|
35
|
+
@style = value.source.intern
|
36
|
+
else
|
37
|
+
raise Parser::AttributeConstraintError.new(
|
38
|
+
"Unexpected value #{ value }.")
|
39
|
+
end
|
40
|
+
when TransportAttrName
|
41
|
+
@transport = value.source
|
42
|
+
else
|
43
|
+
nil
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# encoding: ASCII-8BIT
|
2
|
+
# WSDL4R - WSDL SOAP body definition.
|
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
|
+
|
12
|
+
|
13
|
+
module WSDL
|
14
|
+
module SOAP
|
15
|
+
|
16
|
+
|
17
|
+
class Body < Info
|
18
|
+
attr_reader :parts
|
19
|
+
attr_reader :use # required
|
20
|
+
attr_reader :encodingstyle
|
21
|
+
attr_reader :namespace
|
22
|
+
|
23
|
+
def initialize
|
24
|
+
super
|
25
|
+
@parts = nil
|
26
|
+
@use = nil
|
27
|
+
@encodingstyle = nil
|
28
|
+
@namespace = nil
|
29
|
+
end
|
30
|
+
|
31
|
+
def parse_element(element)
|
32
|
+
nil
|
33
|
+
end
|
34
|
+
|
35
|
+
def parse_attr(attr, value)
|
36
|
+
case attr
|
37
|
+
when PartsAttrName
|
38
|
+
@parts = value.source
|
39
|
+
when UseAttrName
|
40
|
+
if ['literal', 'encoded'].include?(value.source)
|
41
|
+
@use = value.source.intern
|
42
|
+
else
|
43
|
+
raise RuntimeError.new("unknown use of soap:body: #{value.source}")
|
44
|
+
end
|
45
|
+
when EncodingStyleAttrName
|
46
|
+
@encodingstyle = value.source
|
47
|
+
@encodingstyle = nil if @encodingstyle.to_s.empty?
|
48
|
+
value.source
|
49
|
+
when NamespaceAttrName
|
50
|
+
@namespace = value.source
|
51
|
+
else
|
52
|
+
nil
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# encoding: ASCII-8BIT
|
2
|
+
# WSDL4R - Creating CGI stub 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
|
+
|
15
|
+
|
16
|
+
module WSDL
|
17
|
+
module SOAP
|
18
|
+
|
19
|
+
|
20
|
+
class CGIStubCreator
|
21
|
+
include ClassDefCreatorSupport
|
22
|
+
|
23
|
+
attr_reader :definitions
|
24
|
+
|
25
|
+
def initialize(definitions, name_creator, modulepath = nil)
|
26
|
+
@definitions = definitions
|
27
|
+
@name_creator = name_creator
|
28
|
+
@modulepath = modulepath
|
29
|
+
end
|
30
|
+
|
31
|
+
def dump(service_name)
|
32
|
+
warn("CGI stub can have only 1 port. Creating stub for the first port... Rests are ignored.")
|
33
|
+
services = @definitions.service(service_name)
|
34
|
+
unless services
|
35
|
+
raise RuntimeError.new("service not defined: #{service_name}")
|
36
|
+
end
|
37
|
+
ports = services.ports
|
38
|
+
if ports.empty?
|
39
|
+
raise RuntimeError.new("ports not found for #{service_name}")
|
40
|
+
end
|
41
|
+
port = ports[0]
|
42
|
+
if port.porttype.nil?
|
43
|
+
raise RuntimeError.new("porttype not found for #{port}")
|
44
|
+
end
|
45
|
+
dump_porttype(port.porttype)
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def dump_porttype(porttype)
|
51
|
+
class_name = mapped_class_name(porttype.name, @modulepath)
|
52
|
+
defined_const = {}
|
53
|
+
methoddef = MethodDefCreator.new(@definitions, @name_creator, @modulepath, defined_const).dump(porttype.name)
|
54
|
+
wsdl_name = @definitions.name ? @definitions.name.name : 'default'
|
55
|
+
mrname = safeconstname(wsdl_name + 'MappingRegistry')
|
56
|
+
c1 = XSD::CodeGen::ClassDef.new(class_name)
|
57
|
+
c1.def_require("soap/rpc/cgistub")
|
58
|
+
c1.def_code <<-EOD
|
59
|
+
Methods = [
|
60
|
+
#{methoddef.gsub(/^/, " ")}
|
61
|
+
]
|
62
|
+
EOD
|
63
|
+
defined_const.each do |ns, tag|
|
64
|
+
c1.def_const(tag, dq(ns))
|
65
|
+
end
|
66
|
+
c2 = XSD::CodeGen::ClassDef.new(class_name + "App",
|
67
|
+
"::SOAP::RPC::CGIStub")
|
68
|
+
c2.def_method("initialize", "*arg") do
|
69
|
+
<<-EOD
|
70
|
+
super(*arg)
|
71
|
+
servant = #{class_name}.new
|
72
|
+
#{class_name}::Methods.each do |definitions|
|
73
|
+
opt = definitions.last
|
74
|
+
if opt[:request_style] == :document
|
75
|
+
@router.add_document_operation(servant, *definitions)
|
76
|
+
else
|
77
|
+
@router.add_rpc_operation(servant, *definitions)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
self.mapping_registry = #{mrname}::EncodedRegistry
|
81
|
+
self.literal_mapping_registry = #{mrname}::LiteralRegistry
|
82
|
+
self.level = Logger::Severity::ERROR
|
83
|
+
EOD
|
84
|
+
end
|
85
|
+
c1.dump + "\n" + c2.dump + format(<<-EOD)
|
86
|
+
#{class_name}App.new('app', nil).start
|
87
|
+
EOD
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,434 @@
|
|
1
|
+
# encoding: ASCII-8BIT
|
2
|
+
# WSDL4R - Creating class definition 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/data'
|
11
|
+
require 'wsdl/soap/classDefCreatorSupport'
|
12
|
+
require 'xsd/codegen'
|
13
|
+
require 'set'
|
14
|
+
|
15
|
+
|
16
|
+
module WSDL
|
17
|
+
module SOAP
|
18
|
+
|
19
|
+
|
20
|
+
class ClassDefCreator
|
21
|
+
include ClassDefCreatorSupport
|
22
|
+
include XSD::CodeGen
|
23
|
+
|
24
|
+
def initialize(definitions, name_creator, modulepath = nil)
|
25
|
+
@definitions = definitions
|
26
|
+
@name_creator = name_creator
|
27
|
+
@modulepath = modulepath
|
28
|
+
@elements = definitions.collect_elements
|
29
|
+
@elements.uniq!
|
30
|
+
@attributes = definitions.collect_attributes
|
31
|
+
@attributes.uniq!
|
32
|
+
@simpletypes = definitions.collect_simpletypes
|
33
|
+
@simpletypes.uniq!
|
34
|
+
@complextypes = definitions.collect_complextypes
|
35
|
+
@complextypes.uniq!
|
36
|
+
@modelgroups = definitions.collect_modelgroups
|
37
|
+
@modelgroups.uniq!
|
38
|
+
@faulttypes = nil
|
39
|
+
if definitions.respond_to?(:collect_faulttypes)
|
40
|
+
@faulttypes = definitions.collect_faulttypes
|
41
|
+
end
|
42
|
+
@defined_const = {}
|
43
|
+
end
|
44
|
+
|
45
|
+
def dump(type = nil)
|
46
|
+
result = "require 'xsd/qname'\n"
|
47
|
+
# cannot use @modulepath because of multiple classes
|
48
|
+
if @modulepath
|
49
|
+
result << "\n"
|
50
|
+
result << modulepath_split(@modulepath).collect { |ele| "module #{ele}" }.join("; ")
|
51
|
+
result << "\n\n"
|
52
|
+
end
|
53
|
+
str = dump_group(type)
|
54
|
+
unless str.empty?
|
55
|
+
result << "\n" unless result.empty?
|
56
|
+
result << str
|
57
|
+
end
|
58
|
+
str = dump_complextype(type)
|
59
|
+
unless str.empty?
|
60
|
+
result << "\n" unless result.empty?
|
61
|
+
result << str
|
62
|
+
end
|
63
|
+
str = dump_simpletype(type)
|
64
|
+
unless str.empty?
|
65
|
+
result << "\n" unless result.empty?
|
66
|
+
result << str
|
67
|
+
end
|
68
|
+
str = dump_element(type)
|
69
|
+
unless str.empty?
|
70
|
+
result << "\n" unless result.empty?
|
71
|
+
result << str
|
72
|
+
end
|
73
|
+
str = dump_attribute(type)
|
74
|
+
unless str.empty?
|
75
|
+
result << "\n" unless result.empty?
|
76
|
+
result << str
|
77
|
+
end
|
78
|
+
if @modulepath
|
79
|
+
result << "\n\n"
|
80
|
+
result << modulepath_split(@modulepath).collect { |ele| "end" }.join("; ")
|
81
|
+
result << "\n"
|
82
|
+
end
|
83
|
+
result
|
84
|
+
end
|
85
|
+
|
86
|
+
private
|
87
|
+
|
88
|
+
def dump_element(target = nil)
|
89
|
+
@elements.collect { |ele|
|
90
|
+
next if @complextypes[ele.name]
|
91
|
+
next if target and target != ele.name
|
92
|
+
c = create_elementdef(@modulepath, ele)
|
93
|
+
c ? c.dump : nil
|
94
|
+
}.compact.join("\n")
|
95
|
+
end
|
96
|
+
|
97
|
+
def dump_attribute(target = nil)
|
98
|
+
@attributes.collect { |attribute|
|
99
|
+
next if target and target != attribute.name
|
100
|
+
if attribute.local_simpletype
|
101
|
+
c = create_simpletypedef(@modulepath, attribute.name, attribute.local_simpletype)
|
102
|
+
end
|
103
|
+
c ? c.dump : nil
|
104
|
+
}.compact.join("\n")
|
105
|
+
end
|
106
|
+
|
107
|
+
def dump_simpletype(target = nil)
|
108
|
+
@simpletypes.collect { |type|
|
109
|
+
next if target and target != type.name
|
110
|
+
c = create_simpletypedef(@modulepath, type.name, type)
|
111
|
+
c ? c.dump : nil
|
112
|
+
}.compact.join("\n")
|
113
|
+
end
|
114
|
+
|
115
|
+
def dump_complextype(target = nil)
|
116
|
+
definitions = sort_dependency(@complextypes).collect { |type|
|
117
|
+
next if target and target != type.name
|
118
|
+
c = create_complextypedef(@modulepath, type.name, type)
|
119
|
+
c ? c.dump : nil
|
120
|
+
}.compact.join("\n")
|
121
|
+
end
|
122
|
+
|
123
|
+
def dump_group(target = nil)
|
124
|
+
definitions = @modelgroups.collect { |group|
|
125
|
+
# TODO: not dumped for now but may be useful in the future
|
126
|
+
}.compact.join("\n")
|
127
|
+
end
|
128
|
+
|
129
|
+
def create_elementdef(mpath, ele)
|
130
|
+
qualified = (ele.elementform == 'qualified')
|
131
|
+
if ele.local_complextype
|
132
|
+
create_complextypedef(mpath, ele.name, ele.local_complextype, qualified)
|
133
|
+
elsif ele.local_simpletype
|
134
|
+
create_simpletypedef(mpath, ele.name, ele.local_simpletype, qualified)
|
135
|
+
elsif ele.empty?
|
136
|
+
create_simpleclassdef(mpath, ele.name, nil)
|
137
|
+
else
|
138
|
+
# ignores type only element
|
139
|
+
nil
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
def create_simpletypedef(mpath, qname, simpletype, qualified = false)
|
144
|
+
if simpletype.restriction
|
145
|
+
create_simpletypedef_restriction(mpath, qname, simpletype, qualified)
|
146
|
+
elsif simpletype.list
|
147
|
+
create_simpletypedef_list(mpath, qname, simpletype, qualified)
|
148
|
+
elsif simpletype.union
|
149
|
+
create_simpletypedef_union(mpath, qname, simpletype, qualified)
|
150
|
+
else
|
151
|
+
raise RuntimeError.new("unknown kind of simpletype: #{simpletype}")
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
def create_simpletypedef_restriction(mpath, qname, typedef, qualified)
|
156
|
+
restriction = typedef.restriction
|
157
|
+
unless restriction.enumeration?
|
158
|
+
# not supported. minlength?
|
159
|
+
return nil
|
160
|
+
end
|
161
|
+
classname = mapped_class_basename(qname, mpath)
|
162
|
+
c = ClassDef.new(classname, '::String')
|
163
|
+
c.comment = "#{qname}"
|
164
|
+
define_classenum_restriction(c, classname, restriction.enumeration)
|
165
|
+
c
|
166
|
+
end
|
167
|
+
|
168
|
+
def create_simpletypedef_list(mpath, qname, typedef, qualified)
|
169
|
+
list = typedef.list
|
170
|
+
classname = mapped_class_basename(qname, mpath)
|
171
|
+
c = ClassDef.new(classname, '::Array')
|
172
|
+
c.comment = "#{qname}"
|
173
|
+
if simpletype = list.local_simpletype
|
174
|
+
if simpletype.restriction.nil?
|
175
|
+
raise RuntimeError.new(
|
176
|
+
"unknown kind of simpletype: #{simpletype}")
|
177
|
+
end
|
178
|
+
define_stringenum_restriction(c, simpletype.restriction.enumeration)
|
179
|
+
c.comment << "\n contains list of #{classname}::*"
|
180
|
+
elsif list.itemtype
|
181
|
+
c.comment << "\n contains list of #{mapped_class_basename(list.itemtype, mpath)}::*"
|
182
|
+
else
|
183
|
+
raise RuntimeError.new("unknown kind of list: #{list}")
|
184
|
+
end
|
185
|
+
c
|
186
|
+
end
|
187
|
+
|
188
|
+
def create_simpletypedef_union(mpath, qname, typedef, qualified)
|
189
|
+
union = typedef.union
|
190
|
+
classname = mapped_class_basename(qname, mpath)
|
191
|
+
c = ClassDef.new(classname, '::String')
|
192
|
+
c.comment = "#{qname}"
|
193
|
+
if union.member_types
|
194
|
+
# fixme
|
195
|
+
c.comment << "\n any of #{union.member_types}"
|
196
|
+
end
|
197
|
+
c
|
198
|
+
end
|
199
|
+
|
200
|
+
def define_stringenum_restriction(c, enumeration)
|
201
|
+
const = {}
|
202
|
+
enumeration.each do |value|
|
203
|
+
constname = safeconstname(value)
|
204
|
+
const[constname] ||= 0
|
205
|
+
if (const[constname] += 1) > 1
|
206
|
+
constname += "_#{const[constname]}"
|
207
|
+
end
|
208
|
+
c.def_const(constname, ndq(value))
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
def define_classenum_restriction(c, classname, enumeration)
|
213
|
+
const = {}
|
214
|
+
enumeration.each do |value|
|
215
|
+
constname = safeconstname(value)
|
216
|
+
const[constname] ||= 0
|
217
|
+
if (const[constname] += 1) > 1
|
218
|
+
constname += "_#{const[constname]}"
|
219
|
+
end
|
220
|
+
c.def_const(constname, "new(#{ndq(value)})")
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
def create_simpleclassdef(mpath, qname, type_or_element)
|
225
|
+
classname = mapped_class_basename(qname, mpath)
|
226
|
+
c = ClassDef.new(classname, '::String')
|
227
|
+
c.comment = "#{qname}"
|
228
|
+
init_lines = []
|
229
|
+
if type_or_element and !type_or_element.attributes.empty?
|
230
|
+
define_attribute(c, type_or_element.attributes)
|
231
|
+
init_lines << "@__xmlattr = {}"
|
232
|
+
end
|
233
|
+
c.def_method('initialize', '*arg') do
|
234
|
+
"super\n" + init_lines.join("\n")
|
235
|
+
end
|
236
|
+
c
|
237
|
+
end
|
238
|
+
|
239
|
+
def create_complextypedef(mpath, qname, type, qualified = false)
|
240
|
+
case type.compoundtype
|
241
|
+
when :TYPE_STRUCT, :TYPE_EMPTY
|
242
|
+
create_structdef(mpath, qname, type, qualified)
|
243
|
+
when :TYPE_ARRAY
|
244
|
+
create_arraydef(mpath, qname, type)
|
245
|
+
when :TYPE_SIMPLE
|
246
|
+
create_simpleclassdef(mpath, qname, type)
|
247
|
+
when :TYPE_MAP
|
248
|
+
# mapped as a general Hash
|
249
|
+
nil
|
250
|
+
else
|
251
|
+
raise RuntimeError.new(
|
252
|
+
"unknown kind of complexContent: #{type.compoundtype}")
|
253
|
+
end
|
254
|
+
end
|
255
|
+
|
256
|
+
def create_structdef(mpath, qname, typedef, qualified = false)
|
257
|
+
classname = mapped_class_basename(qname, mpath)
|
258
|
+
baseclassname = nil
|
259
|
+
if typedef.complexcontent
|
260
|
+
if base = typedef.complexcontent.base
|
261
|
+
# :TYPE_ARRAY must not be derived (#424)
|
262
|
+
basedef = @complextypes[base]
|
263
|
+
if basedef and basedef.compoundtype != :TYPE_ARRAY
|
264
|
+
# baseclass should be a toplevel complexType
|
265
|
+
baseclassname = mapped_class_basename(base, @modulepath)
|
266
|
+
end
|
267
|
+
end
|
268
|
+
end
|
269
|
+
if @faulttypes and @faulttypes.index(qname)
|
270
|
+
c = ClassDef.new(classname, '::StandardError')
|
271
|
+
else
|
272
|
+
c = ClassDef.new(classname, baseclassname)
|
273
|
+
end
|
274
|
+
c.comment = "#{qname}"
|
275
|
+
c.comment << "\nabstract" if typedef.abstract
|
276
|
+
parentmodule = mapped_class_name(qname, mpath)
|
277
|
+
init_lines, init_params =
|
278
|
+
parse_elements(c, typedef.elements, qname.namespace, parentmodule)
|
279
|
+
unless typedef.attributes.empty?
|
280
|
+
define_attribute(c, typedef.attributes)
|
281
|
+
init_lines << "@__xmlattr = {}"
|
282
|
+
end
|
283
|
+
c.def_method('initialize', *init_params) do
|
284
|
+
init_lines.join("\n")
|
285
|
+
end
|
286
|
+
c
|
287
|
+
end
|
288
|
+
|
289
|
+
def parse_elements(c, elements, base_namespace, mpath, as_array = false)
|
290
|
+
init_lines = []
|
291
|
+
init_params = []
|
292
|
+
any = false
|
293
|
+
elements.each do |element|
|
294
|
+
case element
|
295
|
+
when XMLSchema::Any
|
296
|
+
# only 1 <any/> is allowed for now.
|
297
|
+
raise RuntimeError.new("duplicated 'any'") if any
|
298
|
+
any = true
|
299
|
+
attrname = '__xmlele_any'
|
300
|
+
c.def_attr(attrname, false, attrname)
|
301
|
+
c.def_method('set_any', 'elements') do
|
302
|
+
'@__xmlele_any = elements'
|
303
|
+
end
|
304
|
+
init_lines << "@__xmlele_any = nil"
|
305
|
+
when XMLSchema::Element
|
306
|
+
next if element.ref == SchemaName
|
307
|
+
name = name_element(element).name
|
308
|
+
typebase = @modulepath
|
309
|
+
if element.anonymous_type?
|
310
|
+
inner = create_elementdef(mpath, element)
|
311
|
+
unless as_array
|
312
|
+
inner.comment = "inner class for member: #{name}\n" + inner.comment
|
313
|
+
end
|
314
|
+
c.innermodule << inner
|
315
|
+
typebase = mpath
|
316
|
+
end
|
317
|
+
unless as_array
|
318
|
+
attrname = safemethodname(name)
|
319
|
+
varname = safevarname(name)
|
320
|
+
c.def_attr(attrname, true, varname)
|
321
|
+
init_lines << "@#{varname} = #{varname}"
|
322
|
+
if element.map_as_array?
|
323
|
+
init_params << "#{varname} = []"
|
324
|
+
else
|
325
|
+
init_params << "#{varname} = nil"
|
326
|
+
end
|
327
|
+
c.comment << "\n #{attrname} - #{create_type_name(typebase, element) || '(any)'}"
|
328
|
+
end
|
329
|
+
when WSDL::XMLSchema::Sequence
|
330
|
+
child_init_lines, child_init_params =
|
331
|
+
parse_elements(c, element.elements, base_namespace, mpath, as_array)
|
332
|
+
init_lines.concat(child_init_lines)
|
333
|
+
init_params.concat(child_init_params)
|
334
|
+
when WSDL::XMLSchema::Choice
|
335
|
+
child_init_lines, child_init_params =
|
336
|
+
parse_elements(c, element.elements, base_namespace, mpath, as_array)
|
337
|
+
init_lines.concat(child_init_lines)
|
338
|
+
init_params.concat(child_init_params)
|
339
|
+
when WSDL::XMLSchema::Group
|
340
|
+
if element.content.nil?
|
341
|
+
warn("no group definition found: #{element}")
|
342
|
+
next
|
343
|
+
end
|
344
|
+
child_init_lines, child_init_params =
|
345
|
+
parse_elements(c, element.content.elements, base_namespace, mpath, as_array)
|
346
|
+
init_lines.concat(child_init_lines)
|
347
|
+
init_params.concat(child_init_params)
|
348
|
+
else
|
349
|
+
raise RuntimeError.new("unknown type: #{element}")
|
350
|
+
end
|
351
|
+
end
|
352
|
+
[init_lines, init_params]
|
353
|
+
end
|
354
|
+
|
355
|
+
def define_attribute(c, attributes)
|
356
|
+
const = {}
|
357
|
+
unless attributes.empty?
|
358
|
+
c.def_method("__xmlattr") do <<-__EOD__
|
359
|
+
@__xmlattr ||= {}
|
360
|
+
__EOD__
|
361
|
+
end
|
362
|
+
end
|
363
|
+
attributes.each do |attribute|
|
364
|
+
name = name_attribute(attribute)
|
365
|
+
methodname = safemethodname('xmlattr_' + name.name)
|
366
|
+
constname = 'Attr' + safeconstname(name.name)
|
367
|
+
const[constname] ||= 0
|
368
|
+
if (const[constname] += 1) > 1
|
369
|
+
constname += "_#{const[constname]}"
|
370
|
+
end
|
371
|
+
c.def_const(constname, dqname(name))
|
372
|
+
c.def_method(methodname) do <<-__EOD__
|
373
|
+
__xmlattr[#{constname}]
|
374
|
+
__EOD__
|
375
|
+
end
|
376
|
+
c.def_method(methodname + '=', 'value') do <<-__EOD__
|
377
|
+
__xmlattr[#{constname}] = value
|
378
|
+
__EOD__
|
379
|
+
end
|
380
|
+
c.comment << "\n #{methodname} - #{attribute_basetype(attribute) || '(any)'}"
|
381
|
+
end
|
382
|
+
end
|
383
|
+
|
384
|
+
def create_arraydef(mpath, qname, typedef)
|
385
|
+
classname = mapped_class_basename(qname, mpath)
|
386
|
+
c = ClassDef.new(classname, '::Array')
|
387
|
+
c.comment = "#{qname}"
|
388
|
+
parentmodule = mapped_class_name(qname, mpath)
|
389
|
+
parse_elements(c, typedef.elements, qname.namespace, parentmodule, true)
|
390
|
+
c
|
391
|
+
end
|
392
|
+
|
393
|
+
def sort_dependency(types)
|
394
|
+
dep = {}
|
395
|
+
root = []
|
396
|
+
types.each do |type|
|
397
|
+
if type.complexcontent and (base = type.complexcontent.base)
|
398
|
+
dep[base] ||= []
|
399
|
+
dep[base] << type
|
400
|
+
else
|
401
|
+
root << type
|
402
|
+
end
|
403
|
+
end
|
404
|
+
sorted = []
|
405
|
+
root.each do |type|
|
406
|
+
sorted.concat(collect_dependency(type, dep))
|
407
|
+
end
|
408
|
+
sorted.concat(dep.values.flatten)
|
409
|
+
sorted
|
410
|
+
end
|
411
|
+
|
412
|
+
# removes collected key from dep
|
413
|
+
def collect_dependency(type, dep)
|
414
|
+
result = [type]
|
415
|
+
return result unless dep.key?(type.name)
|
416
|
+
dep[type.name].each do |deptype|
|
417
|
+
result.concat(collect_dependency(deptype, dep))
|
418
|
+
end
|
419
|
+
dep.delete(type.name)
|
420
|
+
result
|
421
|
+
end
|
422
|
+
|
423
|
+
def modulepath_split(modulepath)
|
424
|
+
if modulepath.is_a?(::Array)
|
425
|
+
modulepath
|
426
|
+
else
|
427
|
+
modulepath.to_s.split('::')
|
428
|
+
end
|
429
|
+
end
|
430
|
+
end
|
431
|
+
|
432
|
+
|
433
|
+
end
|
434
|
+
end
|