OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

odata message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]

Subject: [OASIS Issue Tracker] Commented: (ODATA-531) Simplify OptimisticConcurrency in Core vocabulary

    [ http://tools.oasis-open.org/issues/browse/ODATA-531?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=34795#action_34795 ] 

Ralf Handl commented on ODATA-531:

With the current term I can say: watch out for the ETag header, I won't allow updates without a matching ETag:

<EntitySet Name="Entities" Type="Self.Entity"> 
  <Annotation Term="Core.OptimisticConcurrencyControl" /> 

With "Properties" suffixed this annotation may give the impression that there are no optimistic concurrency control properties, misleading the client to assume there won't be ETags.

> Simplify OptimisticConcurrency in Core vocabulary
> -------------------------------------------------
>                 Key: ODATA-531
>                 URL: http://tools.oasis-open.org/issues/browse/ODATA-531
>             Project: OASIS Open Data Protocol (OData) TC
>          Issue Type: Bug
>          Components: Vocabularies
>    Affects Versions: V4.0_CS01
>         Environment: [Proposal]
>            Reporter: Michael Pizzo
>             Fix For: V4.0_CSD03
> The OptimisticConcurrencyControl term in the Core vocabulary currently defines a complex type that contains a single collection-valued property:
> <Term Name="OptimisticConcurrencyControl" Type="Core.OptimisticConcurrencyControlType" AppliesTo="EntitySet">
>   <Annotation Term="Core.Description" String="If present, the annotated entity set uses optimistic concurrency control" />
> </Term>
> <ComplexType Name="OptimisticConcurrencyControlType">
>   <Property Name="ETagDependsOn" Type="Collection(Edm.PropertyPath)" Nullable="true">
>     <Annotation Term="Core.Description" String="The ETag is computed from these properties" />
>   </Property>
> </ComplexType>
> This intermediate complex type means that applying the vocabulary requires an extra <Record> and <PropertyValue> wrapper:
> <EntitySet Name="Entities" Type="Self.Entity">
>   <Annotation Term="Core.OptimisticConcurrencyControl">
>     <Record>
>       <PropertyValue Name="ETagDependsOn">
>         <Collection>
>           <PropertyPath>LastModified</PropertyPath>
>         </Collection>
>       </PropertyValue>
>     </Record>
>   </Annotation>
> </EntitySet>
> This is unnecessarily cumbersome. We can remove the extra complex type and just create a term whose type is Collection(Edm.NavigationPropertyPath), as in:
> <Term Name="OptimisticConcurrencyControlProperties" Type="Collection(Edm.PropertyPath)" AppliesTo="EntitySet">
>   <Annotation Term="Core.Description" String="The set of properties that are used to compute the ETag" />
> </Term>
> Which would be applied much more simply as:
> <EntitySet Name="Entities" Type="Self.Entity">
>   <Annotation Term="Core.OptimisticConcurrencyControlProperties">
>     <Collection>
>       <PropertyPath>LastModified</PropertyPath>
>     </Collection>
>   </Annotation>
> </EntitySet>
> I think these annotations will be common, so having a simpler way to express is significant.

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators: http://tools.oasis-open.org/issues/secure/Administrators.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]