[jira] [Resolved] (OLINGO-1064) ComplexType is deserialized as Primitive Type if the value is NULL

2017-04-26 Thread Christian Amend (JIRA)

 [ 
https://issues.apache.org/jira/browse/OLINGO-1064?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Christian Amend resolved OLINGO-1064.
-
   Resolution: Fixed
Fix Version/s: (Java) V4 4.4.0

Thanks for the contribution. I applied the patch with the following commit: 
https://git-wip-us.apache.org/repos/asf?p=olingo-odata4.git;a=commit;h=272719d59fe84e7010b7c2117c1db0c31bfc0e00


> 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: odata4-client, odata4-commons
>Affects Versions: (Java) V4 4.2.0
>Reporter: Punith DG
>Assignee: Christian Amend
> Fix For: (Java) V4 4.4.0
>
> Attachments: complexType.png, OLINGO-1064.diff
>
>
> 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.15#6346)


[jira] [Resolved] (OLINGO-1064) ComplexType is deserialized as Primitive Type if the value is NULL

2016-12-27 Thread Christian Amend (JIRA)

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