Next in thread →
Next in month →
Re: [sca-c-cpp] NEW ISSUE: C++ mapping of multi-valued parameters
This issue has been assigned ID CCPP-106 by the jira system. See http://www.osoa.org/jira/browse/CCPP-106 Andrew ____________________________________________________________ Andrew Borley Websphere ESB Development Tel: 245393 Ext: +44 (0) 1962 815393 Mob: +44 (0) 7971 805547 E-mail: Mailpoint 211, IBM (UK) Ltd, Hursley Park, Winchester, Hants, SO21 2JN ____________________________________________________________ From: Bryan Aupperle <> To: Date: 11/03/2010 18:40 Subject: [sca-c-cpp] NEW ISSUE: C++ mapping of multi-valued parameters Target C++ C&I Spec (CD 05) Description: Section 9.3 defines the data mapping between C++ and WSDL/XML. The mapping is defined for simple types and complex types but there is no definition for multi-value elements (C++ arrays, list, vectors etc. and XML elements with maxOccurs > 1). If the XML element is contained in a complex type, but not directly mapped to a function parameter/return type, the normal SDO mapping rules apply, the resulting property has isMany=true. However, if the element is defining a function parameter/return type, there is no containing DataObject. and the mapping is not defined. For example: <wsdl:definitions name="Service4Service" targetNamespace="http://test.sca.oasisopen.org/" xmlns:tns="http://test.sca.oasisopen.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:SOAP11="http://schemas.xmlsoap.org/wsdl/soap/"> <wsdl:types> <xs:schema attributeFormDefault="qualified" elementFormDefault="unqualified" targetNamespace="http://test.sca.oasisopen.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:import /> <xs:element name="operation1Response"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="return" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="operation1"> <xs:complexType> <xs:sequence> <xs:element name="arg0" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </wsdl:types> <wsdl:message name="operation1Response"> <wsdl:part name="operation1Response" element="tns:operation1Response"> </wsdl:part> </wsdl:message> <wsdl:message name="operation1"> <wsdl:part name="operation1" element="tns:operation1"> </wsdl:part> </wsdl:message> <wsdl:portType name="Service4"> <wsdl:operation name="operation1"> <wsdl:input message="tns:operation1"> </wsdl:input> <wsdl:output message="tns:operation1Response"> </wsdl:output> </wsdl:operation> </wsdl:portType> </wsdl:definitions> The element arg0 in the global element operation1 defines a single input parameter to operation1, but this element has maxOccurs=unbounded. so the type of the parameter needs to allow multiple values. Mapping this to a DataObject would result in unnecessary overhead, more complicated client and implementation code and a lack of clarity as to the name of the property in the DataObject actually containing the data. Proposal: Direction When mapping from C++ to WSDL/XML map parameters/return types with a type that is an array, or a list, vector (probably double ended queue and its variations - queue, stack and priority queue - as well) to an XML element with maxOccurs=unbounded. When mapping from WSDL/XML to C++ map elements with maxOccurs > 1 that define parameters/return types to a list<type> where type is either the simple type of the element or DataObjectPtr> Bryan Aupperle, Ph.D. STSM, WebSphere Enterprise Platform Software Solution Architect Research Triangle Park, NC +1 919-254-7508 (T/L 444-7508) Internet Address: Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
Next in thread →
Next in month →