[ https://issues.apache.org/jira/browse/OLINGO-1452?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Joshua Darnell updated OLINGO-1452: ----------------------------------- Description: Using the [Olingo XML Metadata validation methods|https://github.com/apache/olingo-odata4/blob/ddaab6b0fa6778869f03edc8d10dcf933098242b/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ODataMetadataValidationImpl.java#L77-L116], they correctly catch the case where there is no Key property defined in the metadata for a given EntityType definition. For example, this will produce an error: {code:java} <?xml version="1.0" encoding="utf-8"?> <edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0"> <edmx:DataServices> <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="org.example"> <EntityType Name="SomeEntityType"> <Property Name="SomeEntityTypeKey" Type="edm.String" Nullable="false" /> </EntityType> </Schema> <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Default"> <EntityContainer Name="Container"> <EntitySet Name="SomeEntityType" EntityType="org.example.SomeEntityType"/> </EntityContainer> </Schema> </edmx:DataServices> </edmx:Edmx>{code} However, the Key can be defined without the EntityType's Property definition for that field being present, and this is something that the metadata validation does not catch. {code:java} <?xml version="1.0" encoding="utf-8"?> <edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0"> <edmx:DataServices> <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="org.example"> <EntityType Name="SomeEntityType"> <Key> <PropertyRef Name="SomeEntityTypeKey"/> </Key> </EntityType> </Schema> <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Default"> <EntityContainer Name="Container"> <EntitySet Name="SomeEntityType" EntityType="org.example.SomeEntityType"/> </EntityContainer> </Schema> </edmx:DataServices> </edmx:Edmx>{code} This ticket was created to request that XML metadata validation check both whether a Key is present, and that the defined key also has a corresponding {{Property}} definition in the metadata. Otherwise, metadata validation should fail. was: Using the Olingo XML Metadata validation methods, they correctly catch the case where there is no Key property defined in the metadata for a given EntityType definition. For example, this will produce an error: {code:java} <?xml version="1.0" encoding="utf-8"?> <edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0"> <edmx:DataServices> <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="org.example"> <EntityType Name="SomeEntityType"> <Property Name="SomeEntityTypeKey" Type="edm.String" Nullable="false" /> </EntityType> </Schema> <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Default"> <EntityContainer Name="Container"> <EntitySet Name="SomeEntityType" EntityType="org.example.SomeEntityType"/> </EntityContainer> </Schema> </edmx:DataServices> </edmx:Edmx>{code} However, the Key can be defined without the EntityType's Property definition for that field being present, and this is something that the metadata validation does not catch. {code:java} <?xml version="1.0" encoding="utf-8"?> <edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0"> <edmx:DataServices> <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="org.example"> <EntityType Name="SomeEntityType"> <Key> <PropertyRef Name="SomeEntityTypeKey"/> </Key> </EntityType> </Schema> <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Default"> <EntityContainer Name="Container"> <EntitySet Name="SomeEntityType" EntityType="org.example.SomeEntityType"/> </EntityContainer> </Schema> </edmx:DataServices> </edmx:Edmx>{code} This ticket was created to request that XML metadata validation check both whether a Key is present, and that the defined key also has a corresponding {{Property}} definition in the metadata. Otherwise, metadata validation should fail. > Metadata Validation Does Not Enforce that Key Field Exists in EntityType > Definition > ----------------------------------------------------------------------------------- > > Key: OLINGO-1452 > URL: https://issues.apache.org/jira/browse/OLINGO-1452 > Project: Olingo > Issue Type: Bug > Components: odata4-client > Affects Versions: (Java) V4 4.7.1 > Environment: Linux, OSX, Windows. > Reporter: Joshua Darnell > Priority: Major > Fix For: (Java) V4 4.7.1 > > > Using the [Olingo XML Metadata validation > methods|https://github.com/apache/olingo-odata4/blob/ddaab6b0fa6778869f03edc8d10dcf933098242b/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ODataMetadataValidationImpl.java#L77-L116], > they correctly catch the case where there is no Key property defined in the > metadata for a given EntityType definition. > For example, this will produce an error: > {code:java} > <?xml version="1.0" encoding="utf-8"?> > <edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" > Version="4.0"> > <edmx:DataServices> > <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" > Namespace="org.example"> > <EntityType Name="SomeEntityType"> > <Property Name="SomeEntityTypeKey" Type="edm.String" Nullable="false" > /> > </EntityType> > </Schema> > <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" > Namespace="Default"> > <EntityContainer Name="Container"> > <EntitySet Name="SomeEntityType" > EntityType="org.example.SomeEntityType"/> > </EntityContainer> > </Schema> > </edmx:DataServices> > </edmx:Edmx>{code} > > However, the Key can be defined without the EntityType's Property definition > for that field being present, and this is something that the metadata > validation does not catch. > {code:java} > <?xml version="1.0" encoding="utf-8"?> > <edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" > Version="4.0"> > <edmx:DataServices> > <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" > Namespace="org.example"> > <EntityType Name="SomeEntityType"> > <Key> > <PropertyRef Name="SomeEntityTypeKey"/> > </Key> > </EntityType> > </Schema> > <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" > Namespace="Default"> > <EntityContainer Name="Container"> > <EntitySet Name="SomeEntityType" > EntityType="org.example.SomeEntityType"/> > </EntityContainer> > </Schema> > </edmx:DataServices> > </edmx:Edmx>{code} > > This ticket was created to request that XML metadata validation check both > whether a Key is present, and that the defined key also has a corresponding > {{Property}} definition in the metadata. Otherwise, metadata validation > should fail. -- This message was sent by Atlassian Jira (v8.3.4#803005)