This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.

Bug 4127 - Proposed WSDL 1.1 element identifiers can not deal with operation name overloading
Summary: Proposed WSDL 1.1 element identifiers can not deal with operation name overlo...
Status: RESOLVED FIXED
Alias: None
Product: WS-Policy
Classification: Unclassified
Component: WSDL1.1-Element-Identifiers (show other bugs)
Version: LC
Hardware: Macintosh All
: P2 normal
Target Milestone: ---
Assignee: Fabian Ritzmann
QA Contact: Web Services Policy WG QA List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-01-02 13:32 UTC by Fabian Ritzmann
Modified: 2007-01-17 22:52 UTC (History)
1 user (show)

See Also:


Attachments

Description Fabian Ritzmann 2007-01-02 13:32:24 UTC
Title

Proposed WSDL 1.1 element identifiers can not deal with operation name overloading

Description

Endpoints described with WSDL 1.1 may have several operations with the same name. Operations that have the same name are distinguished through differing input or output elements.

Justification

The current WS-Policy proposal for WSDL 1.1 element identifiers is not able to deal with operation name overloading. With the proposed syntax you could only identify one operation of the endpoint randomly and any other operation of the endpoint with the same name would be ignored.

Target

WSDL 1.1 Element Identifiers

Proposal

We have at least two options to solve this issue:

1. Leave the fragment identifiers in section 2 as proposed and add a normative reference and constraint that the WSDL 1.1 element identifiers can only be applied to WSDL documents that comply with the WS-I Basic Profile 1.1. The BP 1.1 section 4.5.3 disallows operation name overloading.

2. Modify the fragment identifiers for portType operation and binding operation to deal with operation name overloading.
Comment 1 David Orchard 2007-01-12 21:37:22 UTC
Imagine an WSDL 1.1 operation that contains
<input name="foo"/>
<input name="bar"/>

How are these elements identified?

Here's my cut at the solution space, ranging from least expressive to most expressive.

1. Illegal operation.  Add a normative
reference and constraint that the WSDL 1.1 element identifiers can only be
applied to WSDL documents that comply with the WS-I Basic Profile 1.1. The BP
1.1 section 4.5.3 disallows operation name overloading.

2. Undefined.  Nothing said in WSDL EI (WEI) spec.  Add text recommending WS-I BP 1.1 compliance.

3. First-only.  Change WEI spec to say that only the first element is identified.  Add text recommending WS-I BP 1.1 compliance.

4. Fully supported, names required on all Message References.  Modify the fragment identifiers for portType operation and binding operation
to deal with operation name overloading requiring that each input is named.  Identifiers are then:
wsdl11.portTypeMessageReference(portType/operation/input("foo"))
wsdl11.portTypeMessageReference(portType/operation/input("bar"))

5. Fully supported with shorthand.  Modify the fragment identifiers for portType operation and binding operation
to deal with operation name overloading allowing but not requiring specification of name attribute.  The absence of a name parameter assumes the first, and the name can be a parameter.  Identifiers are then:
wsdl11.portTypeMessageReference(portType/operation/input) OR wsdl11.portTypeMessageReference(portType/operation/input("foo"))
wsdl11.portTypeMessageReference(portType/operation/input("bar"))

Comment 2 David Orchard 2007-01-17 18:11:48 UTC
Actually, the problem *really* is:

Imagine a WSDL 1.1 portType, such as:
<portType name="TicketAgent">
<operation name="foo"><input message="x:y"/></operation>
<operation name="foo"><input message="x:z"/></operation>
</portType>

The options are

1. Illegal operation.  Add a normative
reference and constraint that the WSDL 1.1 element identifiers can only be applied to WSDL documents that comply with the WS-I Basic Profile 1.1.
The BP
1.1 section 4.5.3 disallows operation name overloading.

2. Undefined.  Nothing said in WSDL EI (WEI) spec.  Add text recommending WS-I BP 1.1 compliance.

3. First-only.  Change WEI spec to say that only the first element is identified.  Add text recommending WS-I BP 1.1 compliance.

4. Fully supported by not disambiguating between the operations, that is a policy that is attached to an operation that is overloaded applies to all the overloaded operation.  The 2 operations in the table are starred (*) and then a * star entry after the table that says, "These fragment identifiers may identify elements that are not unique (sometimes called operation name overloading)."  The ws-policy attachment specification 3.4.1 has an additional sentence that says "When a URI domain expression does not uniquely identify resources (such as WSDL 1.1 operation name overloading), the Policy applies to all the resources that are identified." 

5. Fully supported disambiguating between operations using the message value of the input.  Identifiers are then:
wsdl11.portTypeOperation(TicketAgent/foo(x:y))
wsdl11.portTypeOperation(TicketAgent/foo(x:z))
Note: This does not account for namespace prefix changes.

I believe that the WG has tentatively accepted the spirit of #4.
Comment 3 Christopher Ferris 2007-01-17 22:52:27 UTC
See http://www.w3.org/2007/01/17-ws-policy-irc#T22-50-02
RESOLUTION: Close 4045 and 4127 closed with text as provided in http://www.w3.org/Bugs/Public/show_bug.cgi?id=4045#c2  and http://www.w3.org/Bugs/Public/show_bug.cgi?id=4045#c3 respectively