PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

Home » Web Services » SOAP » Bug #2255

Generated WSDL doesn't containt "empty" parameters

Details

Submitted2004-08-30 23:47 UTC
Fromivoras at fer dot hr
Assignedyunosh
StatusBogus
PackageSOAP
PHP VersionIrrelevant
OSall
Roadmaps(Not assigned)

Comments

[2004-08-30 23:47 UTC] ivoras at fer dot hr

Description:
------------
I think I found a bug that causes incompatibility with Mono/.net web services library. There are <message> tags missing in the generated WSDL code when the method is declared (in the $__dispatch_map) as not accepting any parameters.

(0.8RC3)

Reproduce code:
---------------
My (test) service contains these methods:

$this->__dispatch_map['adder'] = array(
'in' => array('num1'=>'int', 'num2'=>'int'),
'out' => array('result'=>'int'),
'alias' => 'add'
);

$this->__dispatch_map['set_state'] = array(
'in' => array('num'=>'int'),
'out' => array()
);

$this->__dispatch_map['get_state'] = array(
'in' => array(),
'out' => array('result'=>'int')
);

At the end of the generated WSDL, the message tags are:

<message name="adderRequest">
<part name="num1" type="xsd:int" />
<part name="num2" type="xsd:int" />
</message>
<message name="adderResponse">
<part name="result" type="xsd:int" />
</message>
<message name="set_stateRequest">
<part name="num" type="xsd:int" />
</message>
<message name="set_stateResponse" />
<message name="get_stateResponse">
<part name="result" type="xsd:int" />
</message>

E.g. there's missing a "get_stateRequest" message, though it is listed in the definitions/portType/operation/input|output tags. Shouldn't there be a

<message name="get_stateRequest"/>

tag? I think it's causing the (client) library to misinterpret the number of parameters the get_state() method needs (it the method needs 1 parameter, and actually it wants none).

Expected result:
----------------
<message name="adderRequest">
<part name="num1" type="xsd:int" />
<part name="num2" type="xsd:int" />
</message>
<message name="adderResponse">
<part name="result" type="xsd:int" />
</message>
<message name="set_stateRequest">
<part name="num" type="xsd:int" />
</message>
<message name="set_stateResponse" />
<message name="get_stateResponse">
<part name="result" type="xsd:int" />
</message>
<message name="get_stateRequest"/>

Actual result:
--------------
<message name="adderRequest">
<part name="num1" type="xsd:int" />
<part name="num2" type="xsd:int" />
</message>
<message name="adderResponse">
<part name="result" type="xsd:int" />
</message>
<message name="set_stateRequest">
<part name="num" type="xsd:int" />
</message>
<message name="set_stateResponse" />
<message name="get_stateResponse">
<part name="result" type="xsd:int" />
</message>