WSDL: Only one fault per operation?

Hi!

I’m currently building a simple request-response style webservice using
SOAP4R and describing it in WSDL, so that it can easily be used from multiple
langages.

I was wondering how best I should describe the exceptions my methods will be
raising. First, I defined two compexType’s that look like what SOAP4R actually
throws.

wsdl:types
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace=“http://fakeroot.net/webservice/rbg/ver1/”>












</xsd:schema>
</wsdl:types>

and then, defined each of them as a message.

<wsdl:message name=“authentication_ERROR” >
<wsdl:part name=“exception” type=“tns:AuthenticationError” />
</wsdl:message>
<wsdl:message name=“authorization_ERROR” >
<wsdl:part name=“exception” type=“tns:AuthorizationError” />
</wsdl:message>

Finally I bound the two messages to my operation with the element
<wsdl:portType name=“FooService”>
<wsdl:operation name=“dosomething”>
<wsdl:input message=“tns:dosomething_IN” />
<wsdl:output message=“tns:dosomething_OUT” />
<wsdl:fault message=“tns:authentication_ERROR” />
<wsdl:fault message=“tns:authorization_ERROR” />
</wsdl:operation>
</wsdl:portType>

The AuthenticationError and AuthorizationError classdefs are generated according
to the type-definition (naturally, similart to Ruby’s Exception class) but
using the XML-code above, only AuthorizationError inherits from StandardError,
AuthenticationError doesn’t. If I swap the two tags above, only
AuthorizationError inherits but AuthenticationError doesn’t.

Looking at SOAP4R 1.5.0’s wsdl/operation.rb, it seems that it only supports
one fault per operation, overriding earlier s with later occuring ones
in WSDL::Operation#parse_element().
But the WSDL 1.1 schema states that an can have multiple .







A bug in SOAP4R 1.5.0 ? Or I might be misunderstanding something.
Or is there any recommended/proper way to declare the exceptions that
my SOAP4R-service will raise in WSDL, in a langage-independent way ?

···


Oliver M. Bolzer
oliver@gol.com

GPG (PGP) Fingerprint = 621B 52F6 2AC1 36DB 8761 018F 8786 87AD EF50 D1FF

Hi, Oliver,

Thank you for the report. Summary: It’s a bug of SOAP4R. I’ll fix it
soon.

From: “Oliver M. Bolzer” oliver@gol.com
Sent: Tuesday, November 11, 2003 11:14 PM

Looking at SOAP4R 1.5.0’s wsdl/operation.rb, it seems that it only supports
one fault per operation, overriding earlier s with later occuring ones
in WSDL::Operation#parse_element().
But the WSDL 1.1 schema states that an can have multiple .

Yes. You are completely right. SOAP4R must accept multiple fault
definitions in WSDL operation element. I misunderstood the spec.

Regards,
// NaHi

Hi, again,

From: “NAKAMURA, Hiroshi” nakahiro@sarion.co.jp
Sent: Wednesday, November 12, 2003 10:33 AM

Thank you for the report. Summary: It’s a bug of SOAP4R. I’ll fix it
soon.

Fixed in the CVS of soap4r. Can you try the latest version
(SOAP4R/1.5.1.2 + the fix) ?
http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/lib/soap4r/

Regards,
// NaHi