-
- Switch to internal nodes and XPath for WSDL.
-
-
- Detect which version of the namespaces we need to use for an operation/server
- e.g. 1.2 or 1.1
-
- Keep the documentation for operations from the WSDL.
- For eBay, the documentation is in the schema types!
-
- Allow for a SOAP header, i.e. in the envelope (and not the HTTP header)
-
-
- If there is no SOAP action, don't put one. Or make it '""'.
- For eBay,
-
- mapSOAPTypeToS needs to do serious work on the namespaces,
mapping any name space to the URI and then comparing these.
- Need to get the defining URI for namespace prefixes when
walking the XML document. Redundancy is good here.
-
- Get the type from the element tag attribute if it is not a
complex type, etc. and given as a sub-element/content
-
-
- Generate converter function to be used in auto generated code.
-
-
- When generating code, set the schema version.
-
- In WSDL code generation, need the name of the S class of the
return type.
- See examples/KEGGArray.R
- In WSDL code generation, generate the functions to perform the
conversion rather than simpy using the type.
-
-
- Abstract the transport layer from the .SOAP function to allow
for alternative mechanisms to RCurl.
- Either methods based on the server object or a function object.
-
- In the WSDL generation code, handle the case where we have a
NULL returned for an object.
- Either convert the xsi:null=1 to an object of the appropriate
type (e.g. character(0), NA, list(0), etc.) or define
slot to allow NULLs via setClassUnion().
-
- Entrez (NCBI) WSDL.
-
-
- WSDL additions
-
- The 4 different port types - one-way, request-response (done),
solicit response and notification.
- Options for Bindings, e.g. style, transport.
-
- Create converter functions (to and from R) when we define a class for a SOAP type.
-
-
- Validate/match namespaces.
-
-
- UDDI support.
-
-
- Fault handling.
-
-
- Resolving URIs in import calls.
- Use code in XML package?
-
- Profile the conversion code and make it more efficient.
- See how much of the time is spent in the HTTP request and how
much is in the method dispatch and how much is inidividual
conversion method.
-
- Create default CURL options that are used.
-
-
- Try to rationalize further the fromSOAP() and fromSOAP(, type =
) when we know the expected type from the WSDL.
Specifically, we'd like to deal with xsi:null values properly
and this is different in the two cases.
-
-
- Multi-dimensional arrays. We now parse the declaration, but
don't make extensive use of them. Looking for examples.
-
-
Schema and types.
- Arrays with fixed bounds via validity methods, etc.
-
- Clean up the parsing of the SOAP text, finding the return node,
etc. so that these are just in
convertFromSOAP, if possible.
-
-
- Different ways of generating code, e.g. to file/connection,
as S objects
-
- Coercion to the target types in a .SOAP call.
- e.g. x = as.integer(x), scalars versus arrays.
-
- Do we need to strip the leading / in the URL of the SOAPServer
-
From KEGG.wsdl
SOAPServer("http://soap.genome.ad.jp/keggapi/request.cgi")@url
gives
"/keggapi/request.cgi"
-
- Write an XML Schema parser in R and use that here.
- i.e. separate the schema parsing and the WSDL parsing.
Done some work on using libxml for this. Will
proceed via the RSWIG bindings.
-
- Check the server$method operations.
- Need to generate the functions accordingly.
Also want to allow for having a "live"
server connection object which contains the CURL
handle.
-
- Check: Code contains support for
- arrays with offset and position attributes
- id and href attributes to reference elements elsewhere in
the data body.
Make certain these work.
-
Done
-
- coercion to arrays from R types
See tests/interop.R
- vvv@functions$echoIntegerArray(1:10)
-
- Add a name to the namespace vector if none is present.
- e.g. "SOAP/KEGG" should be c(namesp1 = "SOAP/KEGG")
-
- Process wsdl:import
- NCBI code in examples/eutils.wsdl.
The location is relative to the base document:
xmlTreeParse("http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/egquery.xsd")
-
- Collapse the lists from fromSOAPArray if we have a primitive
data type.
-
-
- Get the fromSOAPArray to use the type of the element of the array.
- Done.
-
- Rationalize the fromSOAPArray to deal with PrimitiveSOAPType objects.
- See iface@functions$get_genes_by_enzyme('ec:1.1.1.1', 'eco')
from the KEGG WSDL examples (KEGG.S).
Actually make it work for any SOAPType object by creating the
ns:type string.
Duncan Temple Lang
<duncan@wald.ucdavis.edu>
Last modified: Thu Jan 24 12:40:26 NZDT 2008