Greetings,

I'm a newbie in SOAP, and I'm doing my first experiments using PHP. I suspect 
there is a bug in records processing, but I thought it was useful to discuss it 
here before submitting a possibly bogus bug report.

I'll explain briefly the test case, but before a tiny side note: I've been 
reading thru the ext/soap source code and cleaned up some white spaces. Shall I 
submit that patch?

Back in topic, I define a simple record type:

    <schema xmlns:tns="urn:testing" xmlns="http://www.w3.org/2001/XMLSchema"; 
targetNamespace="urn:testing">
      <complexType name="Product">
        <all>
          <element name="id" type="int" />
          <element name="title" type="string" />
          <element name="description" type="string" minOccurs="0" />
        </all>
      </complexType>
    </schema>

And a simple operation:

  <message name="genericObjectId">
    <part name="id" type="xsd:int" />
  </message>
  <message name="ProductCommit">
    <part name="product" type="tns:Product" />
  </message>
    <operation name="ProductCommit">
      <input message="ProductCommit" />
      <output message="genericObjectId" />
    </operation>

Now the SOAP envelope. First a complete record but with bogus data (a string in 
place of the int):

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
  <soap:Body>
    <product>
      <id>hello</id>
      <title>Product name</title>
    </product>
  </soap:Body>
</soap:Envelope>

So far all fine, a SOAP fault is returned:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope 
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>SOAP-ERROR:
 Encoding: Violation of encoding 
rules</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>

But if I submit an incomplete record no errors are returned:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
  <soap:Body>
    <product>
      <title>Product name</title>
    </product>
  </soap:Body>
</soap:Envelope>

The server callback function is called with the following arguments:

array(1) {
  [0]=>
  object(stdClass)#2 (1) {
    ["title"]=>
    string(12) "Product name"
  }
}

But I'd expect another encoding violation fault, because there was NOT 
minOccurs="0" in Product's <id> element definition. Am I doing something wrong?

Thank you

-- 
Giovanni Giacobbi

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to