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 6924 - Transfer: behavior unspecified for Put failure
Summary: Transfer: behavior unspecified for Put failure
Status: CLOSED REMIND
Alias: None
Product: WS-Resource Access
Classification: Unclassified
Component: Transfer (show other bugs)
Version: FPWD
Hardware: All All
: P2 normal
Target Milestone: ---
Assignee: Gilbert Pilz
QA Contact: notifications mailing list for WS Resource Access
URL:
Whiteboard:
Keywords: hasProposal
Depends on:
Blocks:
 
Reported: 2009-05-19 21:22 UTC by Gilbert Pilz
Modified: 2009-08-18 21:14 UTC (History)
1 user (show)

See Also:


Attachments

Description Gilbert Pilz 2009-05-19 21:22:49 UTC
Given a resource with multiple properties, it is possible that some properties may be "read/write" while other properties are "read only". For example, a resource may have some form of persistent ID that cannot be changed. An attempt to change this ID via a WS-Transfer Put would not be honored by the service that provides access to that resource, but an attempt to change other properties of the resource would be honored.

The wsa:ActionNotSupported fault is not an accurate description of the problem, because, in general, Put *is* supported (i.e. other Put operations may succeed). The wst:InvalidRepresentation fault is also not an accurate description of the problem because there is nothing wrong with the format or structure of the supplied representation (i.e. the representation is schema-valid for the type of resource being accessed).

As a strawman proposal I suggest the definition of a new fault that means "I can't honor your request to change one or more attributes of this resource" that optionally includes, in the [Detail] property of the fault, a list of XPath expressions that identify the offending element(s).
Comment 2 Robert Freund 2009-06-11 22:53:23 UTC
Change the exposition of Put as follows:

A Put request MUST be targeted at the resource whose representation is 
desired to be replaced, as described in 2 Terminology and Notation 
<http://www.w3.org/2002/ws/ra/edcopies/wst.html#Notations_and_Terminology> 
of this specification.

Implementations MAY use the fault code wst:InvalidRepresentation if the 
presented representation is invalid for the target resource. The 
replacement representation may be considered to be invalid if it does 
not conform to the schema(s) for the target resource or otherwise 
violates some cardinality or type constraint. If an implementation 
detects that the presented representation is invalid it MUST generate a 
wst:InvalidRepresentation fault.

The replacement representation may contain within it element or 
attribute values that are different than their corresponding values in 
the current representation. Such changes may affect elements or 
attributes that, for whatever reason, the implementation does wish to 
allow the client to change. An implementation MAY choose to ignore such 
elements or attributes, or it MAY generate a wst:PutDenied fault. See 
5 Faults <http://www.w3.org/2002/ws/ra/edcopies/wst.html#Faults>.

Other components of the outline above are not further constrained by 
this specification.

A successful Put operation updates the current representation associated 
with the targeted resource.  An unsuccessful Put operation does not affect the resource.

Add the following fault definition to Section 5:

5.2 wst:PutDenied

*[Code]* 	s:Sender
*[**Subcode]*
	wst:UpdateDenied
*[**Reason]*
	One or more elements or attributes cannot be updated.
*[Detail]*
	An optional list of the QNames of the elements or attributes that are 
not allowed to be updated.