mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Fixed bug #35142 (SOAP Client/Server Complex Object Support)
This commit is contained in:
parent
9c14ce94f3
commit
270640283e
5 changed files with 701 additions and 2 deletions
1
NEWS
1
NEWS
|
@ -2,6 +2,7 @@ PHP NEWS
|
|||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
?? Nov 2005, PHP 5.1
|
||||
- Fixed initializing and argument checking for posix_mknod(). (Derick)
|
||||
- Fixed bug #35142 (SOAP Client/Server Complex Object Support). (Dmitry)
|
||||
- Fixed bug #35135 (PDOStatment without related PDO object may crash). (Ilia)
|
||||
- Fixed bug #35091 (SoapClient leaks memory). (Dmitry)
|
||||
- Fixed bug #35078 (configure does not find ldap_start_tls_s). (Jani)
|
||||
|
|
|
@ -1223,6 +1223,10 @@ static zval *to_zval_object(encodeTypePtr type, xmlNodePtr data)
|
|||
unset_zval_property(ret, "any" TSRMLS_CC);
|
||||
redo_any = 1;
|
||||
}
|
||||
if (Z_TYPE_P(ret) == IS_OBJECT && ce != ZEND_STANDARD_CLASS_DEF_PTR) {
|
||||
zend_object *zobj = zend_objects_get_address(ret TSRMLS_CC);
|
||||
zobj->ce = ce;
|
||||
}
|
||||
} else {
|
||||
zval *base;
|
||||
|
||||
|
|
|
@ -2192,9 +2192,25 @@ static void schema_content_model_fixup(sdlCtx *ctx, sdlContentModelPtr model)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case XSD_CONTENT_SEQUENCE:
|
||||
case XSD_CONTENT_ALL:
|
||||
case XSD_CONTENT_CHOICE: {
|
||||
if (model->max_occurs != 1) {
|
||||
HashPosition pos;
|
||||
sdlContentModelPtr *tmp;
|
||||
|
||||
zend_hash_internal_pointer_reset_ex(model->u.content, &pos);
|
||||
while (zend_hash_get_current_data_ex(model->u.content, (void**)&tmp, &pos) == SUCCESS) {
|
||||
(*tmp)->min_occurs = 0;
|
||||
(*tmp)->max_occurs = model->max_occurs;
|
||||
zend_hash_move_forward_ex(model->u.content, &pos);
|
||||
}
|
||||
|
||||
model->kind = XSD_CONTENT_ALL;
|
||||
model->min_occurs = 1;
|
||||
model->max_occurs = 1;
|
||||
}
|
||||
}
|
||||
case XSD_CONTENT_SEQUENCE:
|
||||
case XSD_CONTENT_ALL: {
|
||||
sdlContentModelPtr *tmp;
|
||||
|
||||
zend_hash_internal_pointer_reset(model->u.content);
|
||||
|
|
135
ext/soap/tests/bugs/bug35142.phpt
Executable file
135
ext/soap/tests/bugs/bug35142.phpt
Executable file
|
@ -0,0 +1,135 @@
|
|||
--TEST--
|
||||
Bug #35142 SOAP Client/Server Complex Object Support
|
||||
--SKIPIF--
|
||||
<?php require_once('skipif.inc'); ?>
|
||||
--INI--
|
||||
soap.wsdl_cache_enabled=0
|
||||
--FILE--
|
||||
<?php
|
||||
ini_set("soap.wsdl_cache_enabled",0);
|
||||
$timestamp = "2005-11-08T11:22:07+03:00";
|
||||
$wsdl = dirname(__FILE__)."/bug35142.wsdl";
|
||||
|
||||
function PostEvents($x) {
|
||||
var_dump($x);
|
||||
exit();
|
||||
return $x;
|
||||
}
|
||||
|
||||
class TestSoapClient extends SoapClient {
|
||||
|
||||
function __construct($wsdl, $options) {
|
||||
parent::__construct($wsdl, $options);
|
||||
$this->server = new SoapServer($wsdl, $options);
|
||||
$this->server->addFunction('PostEvents');
|
||||
}
|
||||
|
||||
function __doRequest($request, $location, $action, $version) {
|
||||
echo "$request\n";
|
||||
$this->server->handle($request);
|
||||
return $response;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$soapClient = new TestSoapClient($wsdl,
|
||||
array('trace' => 1, 'exceptions' => 0,
|
||||
'classmap' => array('logOnEvent' => 'LogOnEvent',
|
||||
'logOffEvent' => 'LogOffEvent',
|
||||
'events' => 'IVREvents')));
|
||||
|
||||
$logOnEvent = new LogOnEvent(34567, $timestamp);
|
||||
$logOffEvents[] = new LogOffEvent(34567, $timestamp, "Smoked");
|
||||
$logOffEvents[] = new LogOffEvent(34568, $timestamp, "SmokeFree");
|
||||
$ivrEvents = new IVREvents("1.0", 101, 12345, 'IVR', $logOnEvent, $logOffEvents);
|
||||
|
||||
$result = $soapClient->PostEvents($ivrEvents);
|
||||
|
||||
class LogOffEvent {
|
||||
public $audienceMemberId;
|
||||
public $timestamp;
|
||||
public $smokeStatus;
|
||||
public $callInititator;
|
||||
|
||||
function __construct($audienceMemberId, $timestamp, $smokeStatus) {
|
||||
$this->audienceMemberId = $audienceMemberId;
|
||||
$this->timestamp = $timestamp;
|
||||
$this->smokeStatus = $smokeStatus;
|
||||
$this->callInitiator = "IVR";
|
||||
}
|
||||
}
|
||||
|
||||
class LogOnEvent {
|
||||
public $audienceMemberId;
|
||||
public $timestamp;
|
||||
|
||||
function __construct($audienceMemberId, $timestamp) {
|
||||
$this->audienceMemberId = $audienceMemberId;
|
||||
$this->timestamp = $timestamp;
|
||||
}
|
||||
}
|
||||
|
||||
class IVREvents {
|
||||
public $version;
|
||||
public $activityId;
|
||||
public $messageId;
|
||||
public $source;
|
||||
public $logOnEvent;
|
||||
public $logOffEvent;
|
||||
|
||||
function __construct($version, $activityId, $messageId, $source, $logOnEvent=NULL, $logOffEvent=NULL) {
|
||||
$this->version = $version;
|
||||
$this->activityId = $activityId;
|
||||
$this->messageId = $messageId;
|
||||
$this->source = $source;
|
||||
$this->logOnEvent = $logOnEvent;
|
||||
$this->logOffEvent = $logOffEvent;
|
||||
}
|
||||
}
|
||||
?>
|
||||
--EXPECTF--
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://testurl/Message"><SOAP-ENV:Body><ns1:ivrEvents version="1.0" activityId="101" messageId="12345" source="IVR"><ns1:logOffEvent audienceMemberId="34567" timestamp="2005-11-08T11:22:07+03:00" smokeStatus="Smoked" callInitiator="IVR"/><ns1:logOffEvent audienceMemberId="34568" timestamp="2005-11-08T11:22:07+03:00" smokeStatus="SmokeFree" callInitiator="IVR"/><ns1:logOnEvent audienceMemberId="34567" timestamp="2005-11-08T11:22:07+03:00"/></ns1:ivrEvents></SOAP-ENV:Body></SOAP-ENV:Envelope>
|
||||
|
||||
object(IVREvents)#%d (6) {
|
||||
["version"]=>
|
||||
string(3) "1.0"
|
||||
["activityId"]=>
|
||||
int(101)
|
||||
["messageId"]=>
|
||||
int(12345)
|
||||
["logOffEvent"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(LogOffEvent)#%d (4) {
|
||||
["audienceMemberId"]=>
|
||||
int(34567)
|
||||
["timestamp"]=>
|
||||
string(25) "2005-11-08T11:22:07+03:00"
|
||||
["smokeStatus"]=>
|
||||
string(6) "Smoked"
|
||||
["callInitiator"]=>
|
||||
string(3) "IVR"
|
||||
}
|
||||
[1]=>
|
||||
object(LogOffEvent)#%d (4) {
|
||||
["audienceMemberId"]=>
|
||||
int(34568)
|
||||
["timestamp"]=>
|
||||
string(25) "2005-11-08T11:22:07+03:00"
|
||||
["smokeStatus"]=>
|
||||
string(9) "SmokeFree"
|
||||
["callInitiator"]=>
|
||||
string(3) "IVR"
|
||||
}
|
||||
}
|
||||
["logOnEvent"]=>
|
||||
object(LogOnEvent)#%d (2) {
|
||||
["audienceMemberId"]=>
|
||||
int(34567)
|
||||
["timestamp"]=>
|
||||
string(25) "2005-11-08T11:22:07+03:00"
|
||||
}
|
||||
["source"]=>
|
||||
string(3) "IVR"
|
||||
}
|
543
ext/soap/tests/bugs/bug35142.wsdl
Executable file
543
ext/soap/tests/bugs/bug35142.wsdl
Executable file
|
@ -0,0 +1,543 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<definitions xmlns:s1="http://testurl/Events" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://testurl/Message" xmlns:s3="http://testurl/Smoker" xmlns:soap12enc="http://www.w3.org/2002/06/soap-envelope" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:s4="http://testurl/AudienceMember" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s2="http://testurl/Actions" xmlns:tns="http://testurl/Service" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://testurl/Service" xmlns="http://schemas.xmlsoap.org/wsdl/">
|
||||
<types>
|
||||
<s:schema elementFormDefault="qualified" targetNamespace="http://testurl/Message">
|
||||
<s:import namespace="http://testurl/Events" />
|
||||
<s:import namespace="http://testurl/Actions" />
|
||||
<s:element name="ivrActions" type="s0:actions" />
|
||||
<s:complexType name="actions">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s0:abstractMessage">
|
||||
<s:sequence>
|
||||
<s:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<s:element minOccurs="0" maxOccurs="1" name="pauseSmokerAction" type="s2:pauseSmokerAction" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="terminateSmokerAction" type="s2:terminateSmokerAction" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="activateSmokerAction" type="s2:activateSmokerAction" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="addSmokerAction" type="s2:addSmokerAction" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="updateSmokerAction" type="s2:updateSmokerAction" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="deleteSmokerAction" type="s2:deleteSmokerAction" />
|
||||
</s:choice>
|
||||
</s:sequence>
|
||||
<s:attribute default="Client" name="source" type="s0:ivrMessageSource" />
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="abstractMessage" abstract="true">
|
||||
<s:attribute default="1.0" name="version" type="s:string" />
|
||||
<s:attribute name="activityId" type="s:unsignedLong" use="required" />
|
||||
<s:attribute name="messageId" type="s:unsignedLong" use="required" />
|
||||
</s:complexType>
|
||||
<s:complexType name="events">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s0:abstractMessage">
|
||||
<s:sequence>
|
||||
<s:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<s:element minOccurs="0" maxOccurs="1" name="authFailureEvent" type="s1:authFailureEvent" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="logOffEvent" type="s1:logOffEvent" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="cravingLineEvent" type="s1:cravingLineEvent" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="terminateEvent" type="s1:terminateEvent" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="relapseWakeSmsReplaceEvent" type="s1:relapseWakeSmsReplaceEvent" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="confessionLineEvent" type="s1:confessionLineEvent" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="rfqRecordedEvent" type="s1:rfqRecordedEvent" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="logOnEvent" type="s1:logOnEvent" />
|
||||
</s:choice>
|
||||
</s:sequence>
|
||||
<s:attribute default="IVR" name="source" type="s0:ivrMessageSource" />
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:simpleType name="ivrMessageSource">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="IVR" />
|
||||
<s:enumeration value="Client" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:complexType name="actionResults">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s0:abstractMessage">
|
||||
<s:sequence>
|
||||
<s:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<s:element minOccurs="0" maxOccurs="1" name="updateSmokerActionResult" type="s2:updateSmokerActionResult" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="activateSmokerActionResult" type="s2:activateSmokerActionResult" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="deleteSmokerActionResult" type="s2:deleteSmokerActionResult" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="addSmokerActionResult" type="s2:addSmokerActionResult" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="pauseSmokerActionResult" type="s2:pauseSmokerActionResult" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="terminateSmokerActionResult" type="s2:terminateSmokerActionResult" />
|
||||
</s:choice>
|
||||
</s:sequence>
|
||||
<s:attribute default="IVR" name="source" type="s0:ivrMessageSource" />
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="eventResults">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s0:abstractMessage">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="eventResult" type="s1:eventResult" />
|
||||
</s:sequence>
|
||||
<s:attribute default="IVR" name="source" type="s0:ivrMessageSource" />
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:element name="ivrActionResults" type="s0:actionResults" />
|
||||
<s:element name="ivrEvents" type="s0:events" />
|
||||
<s:element name="ivrEventResults" type="s0:eventResults" />
|
||||
</s:schema>
|
||||
<s:schema elementFormDefault="qualified" targetNamespace="http://testurl/Events">
|
||||
<s:complexType name="authFailureEvent">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s1:abstractEvent">
|
||||
<s:attribute name="mobileNumber" type="s:string" />
|
||||
<s:attribute name="line" type="s1:line" use="required" />
|
||||
<s:attribute name="reason" type="s:string" />
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="abstractEvent" abstract="true">
|
||||
<s:attribute name="audienceMemberId" type="s:unsignedLong" />
|
||||
<s:attribute name="timestamp" type="s:dateTime" use="required" />
|
||||
</s:complexType>
|
||||
<s:complexType name="logOnEvent">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s1:abstractEvent" />
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="cravingLineEvent">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s1:abstractEvent">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="selection" type="s1:cravingLineEventSelection" />
|
||||
</s:sequence>
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="cravingLineEventSelection">
|
||||
<s:attribute name="type" type="s1:cravingLineMessageType" use="required" />
|
||||
<s:attribute name="msgNumber" type="s:positiveInteger" />
|
||||
</s:complexType>
|
||||
<s:simpleType name="cravingLineMessageType">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="Motivational" />
|
||||
<s:enumeration value="StressReval" />
|
||||
<s:enumeration value="EffectReg" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:complexType name="confessionLineEvent">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s1:abstractEvent">
|
||||
<s:attribute name="smokeStatus" type="s1:smokeStatus" use="required" />
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:simpleType name="smokeStatus">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="Smoked" />
|
||||
<s:enumeration value="SmokeFree" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:complexType name="rfqRecordedEvent">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s1:abstractEvent" />
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="terminateEvent">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s1:abstractEvent" />
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="logOffEvent">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s1:abstractEvent">
|
||||
<s:attribute name="smokeStatus" type="s1:smokeStatus" use="required" />
|
||||
<s:attribute name="callInitiator" type="s1:callInitiator" use="required" />
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:simpleType name="callInitiator">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="AudienceMember" />
|
||||
<s:enumeration value="IVR" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:complexType name="relapseWakeSmsReplaceEvent">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s1:abstractEvent">
|
||||
<s:attribute name="relapseCount" type="s:positiveInteger" />
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:simpleType name="line">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="LogOnOffLine" />
|
||||
<s:enumeration value="CravingLine" />
|
||||
<s:enumeration value="ConfessionLine" />
|
||||
<s:enumeration value="ReasonsForQuittingLine" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:complexType name="eventResult">
|
||||
<s:attribute name="success" type="s:boolean" use="required" />
|
||||
</s:complexType>
|
||||
</s:schema>
|
||||
<s:schema elementFormDefault="qualified" targetNamespace="http://testurl/Actions">
|
||||
<s:import namespace="http://testurl/Smoker" />
|
||||
<s:complexType name="updateSmokerActionResult">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s2:abstractActionResult">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="smoker" type="s2:updateSmokerActionResultSmoker" />
|
||||
</s:sequence>
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="abstractActionResult">
|
||||
<s:attribute name="resultId" type="s:unsignedLong" use="required" />
|
||||
</s:complexType>
|
||||
<s:complexType name="pauseSmokerActionResult">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s2:abstractActionResult">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="smoker" type="s2:pauseSmokerActionResultSmoker" />
|
||||
</s:sequence>
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="pauseSmokerActionResultSmoker">
|
||||
<s:attribute name="audienceMemberId" type="s:unsignedLong" use="required" />
|
||||
<s:attribute name="status" type="s2:pauseSmokerActionResultSmokerStatus" use="required" />
|
||||
<s:attribute name="exception" type="s2:pauseSmokerActionResultSmokerException" />
|
||||
</s:complexType>
|
||||
<s:simpleType name="pauseSmokerActionResultSmokerStatus">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="Paused" />
|
||||
<s:enumeration value="NotPaused" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:simpleType name="pauseSmokerActionResultSmokerException">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="UnspecifiedError" />
|
||||
<s:enumeration value="IDNotFound" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:complexType name="addSmokerActionResult">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s2:abstractActionResult">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="smoker" type="s2:addSmokerActionResultSmoker" />
|
||||
</s:sequence>
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="addSmokerActionResultSmoker">
|
||||
<s:attribute name="audienceMemberId" type="s:unsignedLong" use="required" />
|
||||
<s:attribute name="status" type="s2:addSmokerActionResultSmokerStatus" use="required" />
|
||||
<s:attribute name="exception" type="s2:addSmokerActionResultSmokerException" />
|
||||
</s:complexType>
|
||||
<s:simpleType name="addSmokerActionResultSmokerStatus">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="Added" />
|
||||
<s:enumeration value="NotAdded" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:simpleType name="addSmokerActionResultSmokerException">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="UnspecifiedError" />
|
||||
<s:enumeration value="DuplicateID" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:complexType name="deleteSmokerActionResult">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s2:abstractActionResult">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="smoker" type="s2:deleteSmokerActionResultSmoker" />
|
||||
</s:sequence>
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="deleteSmokerActionResultSmoker">
|
||||
<s:attribute name="audienceMemberId" type="s:unsignedLong" use="required" />
|
||||
<s:attribute name="status" type="s2:deleteSmokerActionResultSmokerStatus" use="required" />
|
||||
<s:attribute name="exception" type="s2:deleteSmokerActionResultSmokerException" />
|
||||
</s:complexType>
|
||||
<s:simpleType name="deleteSmokerActionResultSmokerStatus">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="Deleted" />
|
||||
<s:enumeration value="NotDeleted" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:simpleType name="deleteSmokerActionResultSmokerException">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="UnspecifiedError" />
|
||||
<s:enumeration value="IDNotFound" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:complexType name="activateSmokerActionResult">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s2:abstractActionResult">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="smoker" type="s2:activateSmokerActionResultSmoker" />
|
||||
</s:sequence>
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="activateSmokerActionResultSmoker">
|
||||
<s:attribute name="audienceMemberId" type="s:unsignedLong" use="required" />
|
||||
<s:attribute name="status" type="s2:activateSmokerActionResultSmokerStatus" use="required" />
|
||||
<s:attribute name="exception" type="s2:activateSmokerActionResultSmokerException" />
|
||||
</s:complexType>
|
||||
<s:simpleType name="activateSmokerActionResultSmokerStatus">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="Activated" />
|
||||
<s:enumeration value="NotActivated" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:simpleType name="activateSmokerActionResultSmokerException">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="UnspecifiedError" />
|
||||
<s:enumeration value="IDNotFound" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:complexType name="terminateSmokerActionResult">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s2:abstractActionResult">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="smoker" type="s2:terminateSmokerActionResultSmoker" />
|
||||
</s:sequence>
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="terminateSmokerActionResultSmoker">
|
||||
<s:attribute name="audienceMemberId" type="s:unsignedLong" use="required" />
|
||||
<s:attribute name="status" type="s2:terminateSmokerActionResultSmokerStatus" use="required" />
|
||||
<s:attribute name="exception" type="s2:terminateSmokerActionResultSmokerException" />
|
||||
</s:complexType>
|
||||
<s:simpleType name="terminateSmokerActionResultSmokerStatus">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="Terminated" />
|
||||
<s:enumeration value="NotTerminated" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:simpleType name="terminateSmokerActionResultSmokerException">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="UnspecifiedError" />
|
||||
<s:enumeration value="IDNotFound" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:complexType name="updateSmokerActionResultSmoker">
|
||||
<s:attribute name="audienceMemberId" type="s:unsignedLong" use="required" />
|
||||
<s:attribute name="status" type="s2:updateSmokerActionResultSmokerStatus" use="required" />
|
||||
<s:attribute name="exception" type="s2:updateSmokerActionResultSmokerException" />
|
||||
</s:complexType>
|
||||
<s:simpleType name="updateSmokerActionResultSmokerStatus">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="Updated" />
|
||||
<s:enumeration value="NotUpdated" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:simpleType name="updateSmokerActionResultSmokerException">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="UnspecifiedError" />
|
||||
<s:enumeration value="IDNotFound" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:complexType name="pauseSmokerAction">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s2:abstractAction">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="audienceMemberID" type="s:unsignedLong" />
|
||||
</s:sequence>
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="abstractAction" abstract="true">
|
||||
<s:attribute name="requestId" type="s:unsignedLong" use="required" />
|
||||
</s:complexType>
|
||||
<s:complexType name="addSmokerAction">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s2:abstractAction">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="smoker" type="s3:smoker" />
|
||||
</s:sequence>
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="updateSmokerAction">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s2:abstractAction">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="smoker" type="s3:smoker" />
|
||||
</s:sequence>
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="terminateSmokerAction">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s2:abstractAction">
|
||||
<s:attribute name="audienceMemberId" type="s:unsignedLong" use="required" />
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="deleteSmokerAction">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s2:abstractAction">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="audienceMemberID" type="s:unsignedLong" />
|
||||
</s:sequence>
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:complexType name="activateSmokerAction">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s2:abstractAction">
|
||||
<s:attribute name="audienceMemberId" type="s:unsignedLong" use="required" />
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
</s:schema>
|
||||
<s:schema elementFormDefault="qualified" targetNamespace="http://testurl/Smoker">
|
||||
<s:import namespace="http://testurl/AudienceMember" />
|
||||
<s:complexType name="smoker">
|
||||
<s:complexContent mixed="false">
|
||||
<s:extension base="s4:ivrAudienceMember">
|
||||
<s:attribute name="startDate" type="s:date" use="required" />
|
||||
<s:attribute name="phase" type="s3:phase" use="required" />
|
||||
<s:attribute name="day" type="s:positiveInteger" />
|
||||
<s:attribute name="track" type="s3:track" use="required" />
|
||||
<s:attribute name="status" type="s3:status" use="required" />
|
||||
<s:attribute name="baseTime" type="s:string" />
|
||||
<s:attribute name="sunWakeOffset" type="s:string" />
|
||||
<s:attribute name="monWakeOffset" type="s:string" />
|
||||
<s:attribute name="tueWakeOffset" type="s:string" />
|
||||
<s:attribute name="wedWakeOffset" type="s:string" />
|
||||
<s:attribute name="thuWakeOffset" type="s:string" />
|
||||
<s:attribute name="friWakeOffset" type="s:string" />
|
||||
<s:attribute name="satWakeOffset" type="s:string" />
|
||||
<s:attribute name="sunSleepOffset" type="s:string" />
|
||||
<s:attribute name="monSleepOffset" type="s:string" />
|
||||
<s:attribute name="tueSleepOffset" type="s:string" />
|
||||
<s:attribute name="wedSleepOffset" type="s:string" />
|
||||
<s:attribute name="thuSleepOffset" type="s:string" />
|
||||
<s:attribute name="friSleepOffset" type="s:string" />
|
||||
<s:attribute name="satSleepOffset" type="s:string" />
|
||||
<s:attribute name="sunLogOnWindowOffset" type="s:string" />
|
||||
<s:attribute name="monLogOnWindowOffset" type="s:string" />
|
||||
<s:attribute name="tueLogOnWindowOffset" type="s:string" />
|
||||
<s:attribute name="wedLogOnWindowOffset" type="s:string" />
|
||||
<s:attribute name="thuLogOnWindowOffset" type="s:string" />
|
||||
<s:attribute name="friLogOnWindowOffset" type="s:string" />
|
||||
<s:attribute name="satLogOnWindowOffset" type="s:string" />
|
||||
<s:attribute name="sunLogOffWindowOffset" type="s:string" />
|
||||
<s:attribute name="monLogOffWindowOffset" type="s:string" />
|
||||
<s:attribute name="tueLogOffWindowOffset" type="s:string" />
|
||||
<s:attribute name="wedLogOffWindowOffset" type="s:string" />
|
||||
<s:attribute name="thuLogOffWindowOffset" type="s:string" />
|
||||
<s:attribute name="friLogOffWindowOffset" type="s:string" />
|
||||
<s:attribute name="satLogOffWindowOffset" type="s:string" />
|
||||
</s:extension>
|
||||
</s:complexContent>
|
||||
</s:complexType>
|
||||
<s:simpleType name="phase">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="Prep" />
|
||||
<s:enumeration value="Quit" />
|
||||
<s:enumeration value="Followup" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:simpleType name="track">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="NRT" />
|
||||
<s:enumeration value="NonNRT" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
<s:simpleType name="status">
|
||||
<s:restriction base="s:string">
|
||||
<s:enumeration value="Pre-Start" />
|
||||
<s:enumeration value="Completed" />
|
||||
<s:enumeration value="Terminated" />
|
||||
<s:enumeration value="Paused" />
|
||||
<s:enumeration value="Active" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
</s:schema>
|
||||
<s:schema elementFormDefault="qualified" targetNamespace="http://testurl/AudienceMember">
|
||||
<s:import namespace="http://testurl/Smoker" />
|
||||
<s:complexType name="ivrAudienceMember">
|
||||
<s:attribute name="id" type="s:unsignedLong" use="required" />
|
||||
<s:attribute name="mobileNumber" type="s:string" />
|
||||
<s:attribute name="firstName" type="s:string" />
|
||||
<s:attribute name="lastName" type="s:string" />
|
||||
</s:complexType>
|
||||
</s:schema>
|
||||
</types>
|
||||
<message name="PostActionsSoapIn">
|
||||
<part name="ivrActions" element="s0:ivrActions" />
|
||||
</message>
|
||||
<message name="PostActionsSoapOut">
|
||||
<part name="PostActionsResult" element="s0:ivrActionResults" />
|
||||
</message>
|
||||
<message name="PostEventsSoapIn">
|
||||
<part name="ivrEvents" element="s0:ivrEvents" />
|
||||
</message>
|
||||
<message name="PostEventsSoapOut">
|
||||
<part name="PostEventsResult" element="s0:ivrEventResults" />
|
||||
</message>
|
||||
<portType name="IVRServicePortSoap">
|
||||
<operation name="PostActions">
|
||||
<input message="tns:PostActionsSoapIn" />
|
||||
<output message="tns:PostActionsSoapOut" />
|
||||
</operation>
|
||||
<operation name="PostEvents">
|
||||
<input message="tns:PostEventsSoapIn" />
|
||||
<output message="tns:PostEventsSoapOut" />
|
||||
</operation>
|
||||
</portType>
|
||||
<binding name="IVRServicePortSoap" type="tns:IVRServicePortSoap">
|
||||
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
|
||||
<operation name="PostActions">
|
||||
<soap:operation soapAction="http://testurl/Service:postActionsIn" style="document" />
|
||||
<input>
|
||||
<soap:body use="literal" />
|
||||
</input>
|
||||
<output>
|
||||
<soap:body use="literal" />
|
||||
</output>
|
||||
</operation>
|
||||
<operation name="PostEvents">
|
||||
<soap:operation soapAction="http://testurl/Service:postEventsIn" style="document" />
|
||||
<input>
|
||||
<soap:body use="literal" />
|
||||
</input>
|
||||
<output>
|
||||
<soap:body use="literal" />
|
||||
</output>
|
||||
</operation>
|
||||
</binding>
|
||||
<binding name="IVRServicePortSoap12" type="tns:IVRServicePortSoap">
|
||||
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
|
||||
<operation name="PostActions">
|
||||
<soap12:operation soapAction="http://testurl/Service:postActionsIn" style="document" />
|
||||
<input>
|
||||
<soap12:body use="literal" />
|
||||
</input>
|
||||
<output>
|
||||
<soap12:body use="literal" />
|
||||
</output>
|
||||
</operation>
|
||||
<operation name="PostEvents">
|
||||
<soap12:operation soapAction="http://testurl/Service:postEventsIn" style="document" />
|
||||
<input>
|
||||
<soap12:body use="literal" />
|
||||
</input>
|
||||
<output>
|
||||
<soap12:body use="literal" />
|
||||
</output>
|
||||
</operation>
|
||||
</binding>
|
||||
<service name="IVRServicePort">
|
||||
<port name="IVRServicePortSoap" binding="tns:IVRServicePortSoap">
|
||||
<soap:address location="test://" />
|
||||
</port>
|
||||
<port name="IVRServicePortSoap12" binding="tns:IVRServicePortSoap12">
|
||||
<soap12:address location="test://" />
|
||||
</port>
|
||||
</service>
|
||||
</definitions>
|
Loading…
Add table
Add a link
Reference in a new issue