#39179 [Opn->Asn]: Abstract types not handled by SoapClient in WSDL mode

From: Date: Thu, 19 Oct 2006 13:37:29 +0000
Subject: #39179 [Opn->Asn]: Abstract types not handled by SoapClient in WSDL mode
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-103731@lists.php.net to get a copy of this message
ID: 39179 Updated by: tony2001@php.net Reported By: jchernia at netsuite dot com -Status: Open +Status: Assigned Bug Type: SOAP related Operating System: Windows XP PHP Version: 5.1.6 -Assigned To: +Assigned To: dmitry Previous Comments: ------------------------------------------------------------------------ [2006-10-18 22:24:46] jchernia at netsuite dot com Still fails with 5.2. Is there a way to indicate that you want the subclass, not the abstract class? I don't see any in the documentation and I've tried lots of things. ------------------------------------------------------------------------ [2006-10-17 17:52:43] tony2001@php.net Please try using this CVS snapshot: http://snaps.php.net/php5.2-latest.tar.gz For Windows: http://snaps.php.net/win32/php5.2-win32-latest.zip ------------------------------------------------------------------------ [2006-10-17 17:47:11] jchernia at netsuite dot com Description: ------------ This is very similar to bug 36575 http://bugs.php.net/bug.php?id=36575), but I still see this in the latest code. If an operation takes an abstract type, I can not get SoapClient (in WSDL mode) to produce one of the subclass instances of it, even if I set type, etc. Both Axis and .NET generated client classes will send the correct subclass if you specify it. NuSoap does not, but allows you to specify additional attributes in WSDL mode. Reproduce code: --------------- Operation <complexType name="GetRequest"> <sequence> <element name="baseRef" type="platformCore:BaseRef"/> </sequence> </complexType> <element name="get" type="platformMsgs:GetRequest"/> XSD: <complexType name="BaseRef" abstract="true"> <sequence> <element name="name" type="xsd:string" minOccurs="0"/> <!-- record name --> </sequence> </complexType> <element name="baseRef" type="platformCore:BaseRef"/> <complexType name="RecordRef"> <complexContent> <extension base="platformCore:BaseRef"> <attribute name="internalId" type="xsd:string"/> <attribute name="externalId" type="xsd:string"/> <attribute name="type" type="platformCoreTyp:RecordType"/> </extension> </complexContent> </complexType> Expected result: ---------------- <ns1:get> <ns1:baseRef internalId="17" type="customer" xsi:type="ns1:RecordRef"/> </get> Either this, or the ability to set these attributes in WSDL mode. Actual result: -------------- <ns1:get> <ns1:baseRef/> </ns1:get> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=39179&edit=1

« previous php.bugs (#103731) next »