PEAR is archived and read-only

This mirror preserves historical PEAR package releases and metadata so existing references remain available.

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>