← Prev in month ← Prev in thread

[OASIS Issue Tracker] (ODATA-894) Support complex property overwriting in derived type

From
OASIS Issues Tracker <>
Date
2016-01-21T06:46:49+00:00
ID
Thread
[OASIS Issue Tracker] (ODATA-894) Support complex property overwriting in derived type
[ https://issues.oasis-open.org/browse/ODATA-894?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=61626#comment-61626 ] 

Michael Pizzo commented on ODATA-894:
-------------------------------------

I would open a separate issue to track constraining facets of primitive types in a derived type. Seems like a much more complicated set of considerations.

> Support complex property overwriting in derived type
> ----------------------------------------------------
>
>                 Key: ODATA-894
>                 URL: https://issues.oasis-open.org/browse/ODATA-894
>             Project: OASIS Open Data Protocol (OData) TC
>          Issue Type: Bug
>          Components: OData CSDL, OData JSON CSDL
>    Affects Versions: V4.0_ERRATA02
>         Environment: [Proposed]
>            Reporter: Michael Pizzo
>             Fix For: V4.01_WD01
>
>
> Today we allow types to derive from base types and define new properties, but we don't allow overriding existing complex typed properties with derived complex typed properties.
> That means I can define a type FOO with property bar of type BAR:
> <EntityType Name="FOO" IsAbstract="True">
>     <Property Name="bar" Type="ns.BAR"
> </EntityType>
> <ComplexType Name="BAR">
>   <Property Name="property1" Type="Edm.String"/>
> </ComplexType>
> I can define type FOO2 that adds required properties to FOO, and I can define type BAR2 that adds required properties to BAR:
> <EntityType Name="FOO2" BaseType="ns.FOO">
>     <Property Name="requiredOnFOO2" Type="Edn.String" Nullable="false"/>
> </EntityType>
> <ComplexType Name="BAR2" BaseType="ns.BAR">
>   <Property Name="requierdpropertyOnBAR2" Type="Edm.String" Nullable="false"/>
> </ComplexType>
> But I can't add require that instances of FOO2 have the required properties of BAR2 (i.e., that property bar be of type BAR2).
> What we would need to do in order to support this is to allow a property in a derived type to override a complex-typed property of the base type with a complex type that is derived from the type of the property in the base type.
> For example:
> <EntityType Name="FOO2" BaseType="ns.FOO">
>     <Property Name="bar" Type="ns.BAR2" />
> </EntityType>
> The definition of "bar" in FOO2 overrides the definition of "bar" in FOO, meaning that any property "bar" of an instance of FOO2 must be of type BAR2.



--
This message was sent by Atlassian JIRA
(v6.2.2#6258)
← Prev in month ← Prev in thread