- From: Steve Tuecke <tuecke@mcs.anl.gov>
- Date: Fri, 21 Mar 2003 10:24:01 -0600
- To: "Arthur Ryman" <ryman@ca.ibm.com>
- Cc: Steve Tuecke <tuecke@mcs.anl.gov>, www-ws-desc@w3.org, www-ws-desc-request@w3.org
Arthur, Right. So you are not disagreeing with my comment that the language of this note is unclear in the diamond case. But you are adding that there is another case that is not correctly explained by this note as well? I agree. My understanding is the same as yours on the interpretation of your example. The "diamond inheritance case" I was bringing up is: <message name="stringMessage"> <part name="name" type="xsd:string"/> </message> <interface name="A"> <operation name="hello"> <input message="tns:stringMessage" name="request"/> <output message="tns:stringMessage" name="response"/> </operation> </interface > <interface name="B" extends="tns:A"> ... </interface > <interface name="C" extends="tns:A"> ... </interface > <interface name="D" extends="tns:B tns:C"> ... </interface > -Steve At 09:19 AM 3/21/2003, Arthur Ryman wrote: >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 11:28:35 UTC