- From: Arthur Ryman <ryman@ca.ibm.com>
- Date: Fri, 21 Mar 2003 10:19:41 -0500
- To: Steve Tuecke <tuecke@mcs.anl.gov>
- Cc: www-ws-desc@w3.org, www-ws-desc-request@w3.org
Steve, I don't think the first paragraph is correct. My understanding is that it is OK to derive from two different portTypes in the the same namespace that have the same named operations as long as the properties of the operations are the same. This could occur even without diamond inheritance. For example, <message name="stringMessage"> <part name="name" type="xsd:string"/> </message> <interface name="Hello1"> <operation name="hello"> <input message="tns:stringMessage" name="request"/> <output message="tns:stringMessage" name="response"/> </operation> </interface > <interface name="Hello2"> <operation name="hello"> <input message="tns:stringMessage" name="request"/> <output message="tns:stringMessage" name="response"/> </operation> </interface > <interface name="Hello12" implements="tns:Hello1 tns:Hello2"> </interface > Hello12 is OK and has a single operation hello, which it inherits from both Hello1 and Hello2. This is OK because the definitions of hello in Hello1 and Hello2 don't conflict. Arthur Ryman |---------+----------------------------> | | Steve Tuecke | | | <tuecke@mcs.anl.g| | | ov> | | | Sent by: | | | www-ws-desc-reque| | | st@w3.org | | | | | | | | | 03/20/2003 08:53 | | | PM | | | | |---------+----------------------------> >---------------------------------------------------------------------------------------------------------------------------------------------| | | | To: www-ws-desc@w3.org | | cc: | | Subject: Small language clarification in portType extension | | | | | >---------------------------------------------------------------------------------------------------------------------------------------------| Section 2.5.1 (The Port Type Operation Component) reads: "Note: Due to the above rules, if two port types that have the same value for their {target namespace} property also have one or more operations that have the same value for their {name} property then those two port types cannot both form part of the derivation chain of a derived port type. Therefore it is considered good practice to ensure that operation names within a namespace are unique, thus allowing such derivation to occur without error." I suggest adding the word, "... if two DIFFERENT port types have the same value ...". A reviewer questioned whether the current language meant that the diamond inheritance case is illegal (B extends A, C extends A, D extends B and C). But, of course, we specifically decided the diamond inheritance case is legal, as reflected in the main normative text right above this, which reads: "In cases where, due to a port type extending one or more other port types, two or more port type operation components have the same value for their {name} and {target namespace} properties, then the component models of those port type operation components MUST be equivalent (see 2.12 Equivalence of components). If the port type operation components are equivalent then they are considered to collapse into a component. It is an error if two port type operation components have the same value for their {name} and {target namespace} properties but are not equivalent." I think the addition of the word "different" would make the intent of this note more clear. -Steve
Received on Friday, 21 March 2003 10:26:55 UTC