OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

sca-c-cpp message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]

Subject: 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 Borley
Websphere ESB Development
Tel: 245393 Ext: +44 (0) 1962 815393 Mob: +44 (0) 7971 805547
E-mail: borley@uk.ibm.com
Mailpoint 211, IBM (UK) Ltd, Hursley Park, Winchester, Hants, SO21 2JN

From: Bryan Aupperle <aupperle@us.ibm.com>
To: sca-c-cpp@lists.oasis-open.org
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/">
<xs:schema attributeFormDefault="qualified"
elementFormDefault="unqualified" targetNamespace="http://test.sca.oasisopen.org/"
<xs:import />
<xs:element name="operation1Response">
<xs:element minOccurs="0" name="return" nillable="true"
type="xs:string" />
<xs:element name="operation1">
<xs:element name="arg0" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<wsdl:message name="operation1Response">
<wsdl:part name="operation1Response" element="tns:operation1Response">
<wsdl:message name="operation1">
<wsdl:part name="operation1" element="tns:operation1">
<wsdl:portType name="Service4">
<wsdl:operation name="operation1">
<wsdl:input message="tns:operation1">
<wsdl:output message="tns:operation1Response">
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.


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: aupperle@us.ibm.com

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

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]