[
https://issues.apache.org/jira/browse/OLINGO-1064?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Christian Amend resolved OLINGO-1064.
-
Resolution: Information Provided
Assignee: Christian Amend
Hi Punith,
the ClientDeserializer works without metadata information as the default. This
means that it can`t decide if a property is a complex property or primitive
property if the value is null. The same issue appears with expanded navigation
properties. Currently the parser doesn`t know if it is a navigation propery or
a complex property when a value is provided because they look exaclty the same
in the payload. Without further information it is impossible to decide based on
the payload alone.
In order to work around this you can use the EDM aware client or request "full
metadata" from the server.
> ComplexType is deserialized as Primitive Type if the value is NULL
> --
>
> Key: OLINGO-1064
> URL: https://issues.apache.org/jira/browse/OLINGO-1064
> Project: Olingo
> Issue Type: Bug
> Components: odata2-core, odata4-client, odata4-commons
>Affects Versions: (Java) V4 4.2.0
>Reporter: Punith DG
>Assignee: Christian Amend
> Attachments: complexType.png
>
>
> The ODataClient deserializer wrongly converts the Complex Type field to
> Primitive Type field if the value received for the complex type is NULL.
> e.g. on querying Person data from OData TripPin service
> (https://services.odata.org/TripPinRESTierService) I received below JSON
> response.
> {
> "@odata.context":
> "http://services.odata.org/TripPinRESTierService/(S(myhztseklikbg41mbg03ugk5))/$metadata#People(AddressInfo,FavoriteFeature,FirstName,HomeAddress,LastName,UserName)",
> "value": [{
> "FavoriteFeature": "Feature1",
> "FirstName": "Angel",
> "Gender": "Female",
> "LastName": "Huffman",
> "UserName": "angelhuffman",
> "AddressInfo": [{
> "Address": "55 Grizzly Peak Rd.",
> "City": {
> "Name": "Butte",
> "CountryRegion": "United States",
> "Region": "MT"
> }
> }],
> "HomeAddress": null
> }]
> }
> See that 'HomeAddress' is ComplexType of type 'Location' and received 'null'
> value.
> Similarly, ComplexType property 'City' is deserialized as Primitive Type in
> the below response.
> "HomeAddress": {
> "Address": null,
> "City": null
> }
> When you deserialize and get an entity, the HomeAddress property of the
> Person entity is set to Primitive Type with null value. This could be complex
> type?
> Metadata URL - http://tinyurl.com/gm8vomc
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)