olingo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christian Amend (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (OLINGO-1064) ComplexType is deserialized as Primitive Type if the value is NULL
Date Tue, 27 Dec 2016 12:41:58 GMT

     [ 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
> "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

View raw message