Here is a strawman proposal for addressing the 2nd subissue [1] in issue i017:

If WS-Addressing requires a distinct value for the [action] property for all in or out messages within an interface component then it is sufficient to indicate the use of WS-Addressing in the WSDL (specifically the interface component) to satisfy the operation name mapping requirement [2]. This is already an issue (issue 21). IOW, if there is a requirement in the WSDL binding [3] that [action] properties for every operations within an interface is distinct then this subissue is automatically resolved and we don't have to do anything here.

If WS-Addressing does not have a requirement for a distinct value for the [action] property for all in or out messages within an  interface, then an extension/WSDL feature can be used to indicate that a specific WSDL interface does have this distinct characteristic (for the [action] property. I.e., the extension/feature says that the [action] property is distinct and can be utilized by implementation to determine which operation is being "invoked" within an interface. This removes the ambiguity as to which WSDL operation is being "invoked" by a particular message (when two or more in/out messages within an interface have Message Reference components with a value of "#none" or "#any" or QNames that refer to the same global element decl). Such a WSDL interface may declare that the [action] property is used to satisfy the Operation name mapping requirement (per [2]) via WSDL extensibility element or a feature:

1) Proposal for WSDL extensibility:

<wsa:UniqueAction xmlns:wsa="http://www.w3.org/@@@@/@@/addressing" />

Please note that to satisfy the operation name mapping requirement [2] the extensibility element must be specified along with the wsdl:required attribute with the value 'true'.

Example:

<interface name="myInterface">
  <wsa:UniqueAction xmlns:wsa="http://www.w3.org/@@@@/@@/addressing"
       wsdl:required="true"/>

  <operation name="myOperation1"
       pattern="http://www.w3.org/2004/03/wsdl/in-out">
    <input messageLabel="In" element="myns:myInElement"/>
    <output messageLabel="Out" element="myns:myOutElement"/>
  </operation>
  <operation name="myOperation2"
       pattern="http://www.w3.org/2004/03/wsdl/in-out">
    <input messageLabel="In" element="myns:myInElement"/>
    <output messageLabel="Out" element="myns:myOutElement"/>
  </operation>
</interface>

In the above example, since wsa:Action attr is not used the default rules for the [action] property kick in. The default rules generate a distinct value for all the messages within the interface and therefore the requirement of wsa:UniqueAction extensibility element (and [2]) are satisfied.

2) Proposal for WSDL 2.0 feature:

Feature properties -

{name}
"http://www.w3.org/@@@@/@@/addressing#UniqueAction"
{required}
true

Example:

<interface name="myInterface">
  <feature uri="http://www.w3.org/@@@@/@@/addressing#UniqueAction"
       required="true" />

  <operation name="myOperation1"
       pattern="http://www.w3.org/2004/03/wsdl/in-out">
    <input messageLabel="In" element="myns:myInElement"/>
    <output messageLabel="Out" element="myns:myOutElement"/>
  </operation>
  <operation name="myOperation2"
       pattern="http://www.w3.org/2004/03/wsdl/in-out">
    <input messageLabel="In" element="myns:myInElement"/>
    <output messageLabel="Out" element="myns:myOutElement"/>
  </operation>
</interface>

Similar to the 1st example, the default rules for the [action] property satisfy the requirements of the feature (and that of [2]).


Comments?


-Anish
--

[1] http://lists.w3.org/Archives/Public/public-ws-addressing/2005Jan/0004.html
[2] http://www.w3.org/TR/2004/WD-wsdl20-20040803/#Interface_OperationName
[3] http://dev.w3.org/cvsweb/~checkout~/2004/ws/addressing/ws-addr-wsdl.html