Re: Small language clarification in portType extension

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