Action item about LC5f (errors and fatal errors)

This message is in fulfillment of my action item on the resolution of LC5f [1].

Here are the definitions of error and fatal error, slightly adapted from the XML Specification 3rd ed [2]. The adaptation consists in replacing "application"with "requester agent" and "character data" with "data".

error

    [Definition: A violation of the rules of this specification; results are undefined. Unless otherwise specified, failure to observe a prescription of this specification indicated by one of the keywords MUST, REQUIRED, MUST NOT, SHALL and SHALL NOT is an error. Conforming software MAY detect and report an error and MAY recover from it.]

fatal error

    [Definition: An error which a conforming WSDL processor MUST detect and report to the requester agent. After encountering a fatal error, the processor MAY continue processing the data to search for further errors and MAY report such errors to the requester agent In order to support correction of errors, the processor MAY make unprocessed data from the document available to the requester agent Once a fatal error is detected, however, the processor MUST NOT continue normal processing (i.e., it MUST NOT continue to pass data and information about the document's logical structure to the requester agent in the normal way).]

Violation of the following provisions (1)-(5) in the specification are fatal errors:

** Sections 2.1.1, 2.2.1, etc (2.x.1) up to 2.14.1: (i.e. all sections defining WSDL components)

(1) Violation of any structural requirement on the component model tagged with MUST is a fatal error. E.g., violating operation name uniquess within an interface results in a fatal error.

Rationale: once built, a set of components must follow all the rules.

** Sections 2.1.2, 2.2.2, 2.3.2, 2.4.3, 2.5.2 etc (2.x.2) up to 2.14.2: (i.e. all sections detailing the XML representation of a WSDL component)

(2) When processing a WSDL document that uses the XML 1.0 serialization, it is a fatal error for an element in the WSDL namespace that is processed by a conformant WSDL processor to violate any of the XML 1.0 representation rules.

Rationale: if you process a WSDL element, you must verify that it's serialized correctly.

** Sections 2.1.3, 2.2.3, 2.3.4, 2.4.4, 2.5.3 etc (2.x.3) up to 2.14.3: (i.e. all sections detailing the mapping from the XML representation of a component to the component itself)

(3) When processing a WSDL document that uses the XML 1.0 serialization, it is a fatal error for an element in the WSDL namespace that is processed by a conformant WSDL processor to violate any of the XML 1.0 mapping rules.

Rationale: if you process a WSDL element, it's for the purpose of mapping it onto a component. You cannot violate the mapping rules as you do so.

** Section 8.3

(4) A conformant WSDL processor MUST fail if it processes an element containing a wsdl:include statement having a URI that is not dereferenceable to a legal WSDL document.

Rationale: you must process includes. They may contain Really Important Stuff (such as mandatory extensions) which you can't silently ignore.

(5) If a mandatory extension (i.e., a mandatory element, feature or property) is processed, a conformant WSDL processor MUST either agree to fully abide by all the rules and semantics signaled by that extension, or immediately cease processing (fault). In particular, if the WSDL processor does not recognize the extension, it MUST fault. If the WSDL processor recognizes the extension, and determines that the extension in question is incompatible with any other aspect of the document (including other required extensions), it MUST fault.

Rationale: you must honor mandatory extensions.



Finally, the following statement (in section 8.3):

(6) A conformant WSDL processor MUST fault if a portion of a WSDL document is illegal according to this specification and the WSDL processor attempts to process that portion.

shoud be replaced by:

(6) A conformant WSDL processor MUST behave according to [[links to the definitions for error and fatal error]] when it encounters an error (resp. fatal error) in a portion of a WSDL document that it processes.

Of course, some of the statements (1)-(5) above will have to be rewritten to explicitely call them out as "fatal error", with license to the editors to do The Right Thing(TM). I spelled out (6) here because it's the crux of LC5f.

[1] http://www.w3.org/2002/ws/desc/4/lc-issues/#LC5f
[2] http://www.w3.org/TR/REC-xml/

Roberto

-- 
Roberto Chinnici
Java Web Services
Sun Microsystems, Inc.
roberto.chinnici@sun.com

Received on Wednesday, 6 October 2004 23:01:14 UTC