W3C home > Mailing lists > Public > public-ws-addressing@w3.org > January 2005

RE: NEW ISSUE: Action defaults don't work with URNs.

From: Jonathan Marsh <jmarsh@microsoft.com>
Date: Mon, 17 Jan 2005 15:09:04 -0800
Message-ID: <7DA77BF2392448449D094BCEF67569A506385A12@RED-MSG-30.redmond.corp.microsoft.com>
To: <public-ws-addressing@w3.org>

Updated proposal for issues 34, 35, and this new one on URNs.  I'm sure
the editors will find ways to improve the text :-).

----------------------------------------------------------------
3.2 Default Action Pattern for WSDL 1.1

In the absence of the wsa:Action attribute in a WSDL 1.1 document, the
following pattern is used to construct a default action for inputs and
outputs. The general form of an action URI for an input or output
message is as follows:

Example 3-2. @@@
  [target namespace][delimiter][port type name][delimiter][input|output
name]

The general form of an action URI for a fault message is as follows:

Example 3-2. @@@
  [target namespace][delimiter][port type name][delimiter][operation
name]Fault:[fault name]

[target namespace] is the target namespace
(/definition/@targetNamespace). If [target namespace] ends with a "/" an
additional "/" is not added.

[delimiter] is ":" when the [target namespace] is a URN (see RFC2414),
otherwise "/".  Note that for URI schemes other than URNs which aren't
path-based (i.e. outlaw the "/" character), the default action value may
not conform to the rules of the URI scheme.  Authors are advised to
specify explicit values in the WSDL in this case.

[port type name] is the name of the port type
(/definition/portType/@name).

[input|output name] is the name of the element as defined in Section
2.4.5 of WSDL 1.1.

[fault name] is the name of the fault message
(/definition/portType/operation/fault/@name).

----------------------------------------------------------------
3.x Default Action Pattern for WSDL 2.0

In the absence of the wsa:Action attribute in a WSDL 2.0 document, the
following pattern is used to construct a default action for inputs and
outputs. The general form of an action URI for an input or output
message is as follows:

Example 3-2. @@@
  [target namespace][delimiter][interface
name][delimiter][operation][direction token]

The general form of an action URI for a fault message is as follows:

Example 3-2. @@@
  [target namespace][delimiter][interface name][delimiter][fault
name]Fault

The components of these patterns are defined below:

[target namespace] is the {target namespace} of the interface
(/description/@targetNamespace). If {target namespace} ends with a "/"
an additional "/" is not added.

[delimiter] is as defined in section 3.2 above.
 
[interface name] is the {name} of the interface.

[operation name] is the {name} of the operation.
 
[fault name] is the {name} of the Interface Fault.
 
[direction token] is:
  Empty ("") where the operation's {message exchange pattern} is
    'http://www.w3.org/@@@@/@@/wsdl/in-only',
    'http://www.w3.org/@@@@/@@/wsdl/robust-in-only',
    'http://www.w3.org/@@@@/@@/wsdl/out-only', or
    'http://www.w3.org/@@@@/@@/wsdl/robust-out-only'.

  "Request" where the operation's {message exchange pattern} is
    'http://www.w3.org/@@@@/@@/wsdl/in-out' or
    'http://www.w3.org/@@@@/@@/wsdl/in-optional-out'
    and the message reference's {message label} = 'in'

  "Solicit" where the operation's {message exchange pattern} is
    'http://www.w3.org/@@@@/@@/wsdl/out-in' or
    'http://www.w3.org/@@@@/@@/wsdl/out-optional-in'
    and the message reference's {message label} = 'out'

  "Response" where the operation's {message exchange pattern} is
    'http://www.w3.org/@@@@/@@/wsdl/in-out' or
    'http://www.w3.org/@@@@/@@/wsdl/in-optional-out'
    and the message reference's {message label} = 'out',

  "Response" where the operation's {message exchange pattern} is
    'http://www.w3.org/@@@@/@@/wsdl/out-in', or
    'http://www.w3.org/@@@@/@@/wsdl/out-optional-in'
    and the message reference's {message label} = 'in'

  {message label} where the {message exchange pattern} is not one
    of the MEP URIs defined in WSDL 2.0 Part 2.




> -----Original Message-----
> From: public-ws-addressing-request@w3.org [mailto:public-ws-
> addressing-request@w3.org] On Behalf Of Jonathan Marsh
> Sent: Friday, January 14, 2005 12:37 PM
> To: public-ws-addressing@w3.org
> Subject: NEW ISSUE: Action defaults don't work with URNs.
> 
> 
> There is a potential problem in the Action defaulting algorithm we've
> selected.  It works great for http: URIs as the namespace, and
> continues
> the http hierarchy by adding new path components separated by slashes.
> 
> However, slash isn't allowed as a path component by all URI schemes.
> Notably, URNs don't allow slash as far as I can tell, and you often
> see
> paths delimited by ":" instead.  If a URN is used as a targetNamespace
> (which seems reasonable, though we can argue whether this trend will
> wither or flourish), you might end up with a default Action like:
> 
>    urn:com:microsoft:schemas:thisWsdl/dohicky/sendMoneyRequest
> 
> which is a bad URN.
> 
> Some possible solutions:
> 
> a) Note in the spec that the default algorithm doesn't work for
>    urn: targetNamespaces, and an explicit value must be specified
>    in this case.
> b) Redo the algorithm replacing \ with ; (or similar) that is
>    acceptable to both http and urn URI schemes.
> c) Adjust the default algorithm to use : as a separator for urns,
>    retain \ for all other URI schemes.
> 
> My two cents is that option c is the most complex to spec and to
> implement, but the most user-friendly in that you get a clean default
> when using http: (the most common case today), but you don't silently
> get garbage when using urn:.
> 
> URI: http://www.ietf.org/rfc/rfc2396.txt
> URN: http://www.ietf.org/rfc/rfc2141.txt
> 
Received on Monday, 17 January 2005 23:09:45 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 2 June 2009 18:35:01 GMT