New CR issue: use of predfined fault actions for application faults [was FW: Action in 1133, 1134]

An issue has arisen from our CR testing of FaultTo.  Some of our tests
(including 1133 and 1134) require that the test endpoing impersonate an
application fault to initiate a response to the FaultTo EPR.  Such a
response must have a wsa:Action header of course.  The test suite
proscribed this as value as
'http://www.w3.org/2005/08/addressing/fault', but some clients used a
different fault, and thus failed the test.

We recognize that requiring an
'http://www.w3.org/2005/08/addressing/fault' (or
'http://www.w3.org/2005/08/addressing/soap/fault') action in this case
is an artifact of the test suite, and not of the spec, and we're
planning to correct this assertion, but a question arises.

Below I propose that using these actions, designed for Addressing and
SOAP faults respectively, for application-level faults can be considered
abusive, and reduces the ability to correctly dispatch addressing and
soap faults separately from application faults.  But the spec doesn't
provide clear guidance about the use of these actions other than their
primary use.  We already say addressing/soap/fault may be used for other
protocols, but it's not clear whether application-level faults should be
included in this.

To put forth a proposal to aid discussion, I suggest we add the
*statements* below to the text in SOAP Binding section 6 from:

  The [action] property below designates WS-Addressing fault messages:

    http://www.w3.org/2005/08/addressing/fault

  *This action SHOULD NOT be used as an action value in messages other 
  than those carrying WS-Addressing faults.*

  SOAP modules and extensions SHOULD define custom [action] values for
the
  faults they describe but MAY designate use of the following [action]
value
  instead:

    http://www.w3.org/2005/08/addressing/soap/fault

  The above [action] value SHOULD be used for generic SOAP faults
including
  version mismatch, must understand, and data encoding unknown.  *This
  action SHOULD NOT be used as an action value in messages other than
  those carrying generic SOAP faults or those of SOAP modules and
  extensions.*

I use SHOULD because this is a hard thing to test, seems like the
appropriate level of guidance, and doesn't force a breaking change in
implementations at this point.

Original thread that sparked this follows...

-----Original Message-----
From: public-ws-addressing-tests-request@w3.org
[mailto:public-ws-addressing-tests-request@w3.org] On Behalf Of Jonathan
Marsh
Sent: Wednesday, February 22, 2006 12:29 PM
To: Arun Gupta; paul.downey@bt.com
Cc: public-ws-addressing-tests@w3.org
Subject: RE: Action in 1133, 1134


I'm starting to think this is an issue for the WG.  The spec doesn't
specifically disallow (or does it?) the use of addressing/fault or
addressing/soap/fault for application faults - should it?
 
Using either the addressing or soap fault actions for application faults
is likely to devalue dispatching based on wsa:Action, because it
essentially lies about the source of the fault, and might dispatch the
fault to the soap or addressing layer instead of the application.

I think this goes beyond weakening the assertion as I was promoting
earlier, and ending up with something more like this:

  soap11:Envelope/soap11:Header/wsa:Action/text() and
  soap11:Envelope/soap11:Header/wsa:Action !=
    'http://www.w3.org/2005/08/addressing/fault' and 
  soap11:Envelope/soap11:Header/wsa:Action !=
    'http://www.w3.org/2005/08/addressing/soap/fault'

If we think that will cause too much destabilization of our test
results, we could instead go with the weaker assertion:

  soap11:Envelope/soap11:Header/wsa:Action/text()

Or, if we want to use the assertion text itself to promote the use of a
test-framework specific action we could use:

  soap11:Envelope/soap11:Header/wsa:Action =
    'http://example.org/action/fault' or 
  soap11:Envelope/soap11:Header/wsa:Action/text()

even though that's logically equivalent to just the text() assertion.

Comments?

> -----Original Message-----
> From: Arun Gupta [mailto:Arun.Gupta@Sun.COM]
> Sent: Tuesday, February 21, 2006 11:56 AM
> To: paul.downey@bt.com
> Cc: Jonathan Marsh; public-ws-addressing-tests@w3.org
> Subject: Re: Action in 1133, 1134
> 
> Should the assertion be checking for:
> 
>     soap11:Envelope/soap11:Header/wsa:Action
>       = 'http://www.w3.org/2005/08/addressing/fault'
> 
> or
> 
>     soap11:Envelope/soap11:Header/wsa:Action
>       = 'http://www.w3.org/2005/08/addressing/soap/fault'
> 
> since we are really testing for SOAP WS-A fault ?
> 
> -Arun
> 
> paul.downey@bt.com wrote:
> > I've changed the assertion (in my local copy) to:
> >
> >    soap11:Envelope/soap11:Header/wsa:Action
> >      = 'http://www.w3.org/2005/08/addressing/fault'
> >  or
> >    soap11:Envelope/soap11:Header/wsa:Action
> >      = 'http://example.org/action/fault'
> >
> >  and documented the actions on the main page
> >  (I'll checkin later this morning, UK).
> >
> > We can always employ '1' as a last resort?
> >
> > Paul
> >
> >
> > -----Original Message-----
> > From: public-ws-addressing-tests-request@w3.org on behalf of
Jonathan
> Marsh
> > Sent: Tue 2/21/2006 6:26 AM
> > To: Arun Gupta; WS-Addressing Tests
> > Subject: RE: Action in 1133, 1134
> >
> >
> > Excellent point, related to CR22 which was resolved today, which
> > strengthens the guidance for protocol authors to SHOULD define their
own
> > custom actions.  Application faults I think also SHOULD define their
own
> > custom actions.  However, SHOULD isn't MUST so we have some leeway:
> >
> > Some candidates for solutions are:
> > 1) manually override these results to pass, but that's not as good
as...
> > 2) remove that assertion in favor of one simply checking that the
Action
> > is there.
> > 3) define a custom application-level fault action for purposes of
the
> > testsuite such as "http://example.org/action/fault", and change
these
> > testcases to use it.  Implementations would need to change too to
> > generate this fault.  This probably assures they are capable of
using
> > faults other than the predefined addressing one, which is good, but
that
> > seems beyond testing the spec for CR purposes, which is bad.
> >
> > #2 good enough?
> >
> >
> >
> >>-----Original Message-----
> >>From: public-ws-addressing-tests-request@w3.org [mailto:public-ws-
> >>addressing-tests-request@w3.org] On Behalf Of Arun Gupta
> >>Sent: Monday, February 20, 2006 3:48 PM
> >>To: WS-Addressing Tests
> >>Subject: Action in 1133, 1134
> >>
> >>
> >>test1133, 1134, 1233, 1234 has a check for:
> >>
> >>soap11:Envelope/soap11:Header/wsa:Action =
> >>'http://www.w3.org/2005/08/addressing/fault'
> >>
> >>AIU, this value is to be used for WS-Addressing faults only where as
> >
> > all
> >
> >>the tests above throw an application specific fault. I understand
the
> >>relevance of this check in test114XX and 124X.
> >>
> >>I can change my implementation to pass this test but would like to
> >>understand if this is a valid check ?
> >>
> >>-Arun
> >>--
> >>got Web Services ?
> >>Download Java Web Services Developer Pack from
> >>http://java.sun.com/webservices
> >
> >
> >
> >
> >
> 
> --
> got Web Services ?
> Download Java Web Services Developer Pack from
> http://java.sun.com/webservices

Received on Thursday, 23 February 2006 16:51:56 UTC