Emma Sajic created OLINGO-1611:
----------------------------------

             Summary: Instance annotations on entity property are not present 
in the response when serializing it using OdataSerializer.primitive() 
                 Key: OLINGO-1611
                 URL: https://issues.apache.org/jira/browse/OLINGO-1611
             Project: Olingo
          Issue Type: Bug
          Components: odata4-server
    Affects Versions: (Java) V4 4.10.0
            Reporter: Emma Sajic
         Attachments: PrimitivePropertyWithInstanceAnnotation.patch

When the user requests a single Entity Property in JSON format from the Olingo 
OData v4 service as specified in [10.13 Property 
Value|https://docs.oasis-open.org/odata/odata/v4.01/os/part1-protocol/odata-v4.01-os-part1-protocol.html#_Toc31358923]
 that request is handled by an implementation of 
[PrimitiveValueProcessor.readPrimitiveValue|https://github.com/apache/olingo-odata4/blob/21ee56917f900a816b1dbae4d3683d5b84b00f67/lib/server-api/src/main/java/org/apache/olingo/server/api/processor/PrimitiveValueProcessor.java]

In my implementation of readPrimitiveValue, when the user requests a single 
Entity Property (which is not a raw value ($value) or a Edm.Stream) I am using 
[OdataSerializer.primitive|https://github.com/apache/olingo-odata4/blob/21ee56917f900a816b1dbae4d3683d5b84b00f67/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/ODataSerializer.java#L88-L96]
 to serialize the Property into response content.

[Instance 
annotations|https://docs.oasis-open.org/odata/odata-json-format/v4.01/odata-json-format-v4.01.html#sec_InstanceAnnotations]
 on the Property are not being included in the JSON response from the service - 
but I think they should be.

Example requests / responses showing the problem:

 
{code:java}
REQUEST ENTIRE ENTITY - FULL METADATA

curl --location 'http://localhost:8080/OData.svc/MyAddresses(1)' --header 
'Accept: application/json;odata.metadata=full;charset=UTF-8'

Response Content-Type: application/json;odata.metadata=full;charset=UTF-8

{
    "@odata.context": "$metadata#MyAddresses/$entity",
    "@odata.type": "#com.sap.apm.MyAddress",
    "@odata.id": "MyAddresses(AddressNo=1)",
    "addres...@odata.type": "#Int64",
    "AddressNo": 1,
    "AdrType@Common.Label": "Mailing",
    "AdrType": "M"
}

REQUEST ENTITY PROPERTY - FULL METADATA

curl --location 'http://localhost:8080/OData.svc/MyAddresses(1)/AdrType' 
--header 'Accept: application/json;odata.metadata=full;charset=UTF-8'

Response Content-Type: application/json;odata.metadata=full;charset=UTF-8

ACTUAL RESPONSE SHOWING BUG
{
    "@odata.context": "../$metadata#MyAddresses(1)/AdrType",
    "value": "M"
}

EXPECTED RESPONSE - INSTANCE ANNOTATION INCLUDED
{
    "@odata.context": "../$metadata#MyAddresses(1)/AdrType",
    "AdrType@Common.Label": "Mailing",
    "value": "M" 
}

REQUEST ENTIRE ENTITY - MINIMAL METADATA

curl --location 'http://localhost:8080/OData.svc/MyAddresses(1)'

Response Content-Type: application/json;odata.metadata=minimal;charset=UTF-8

{
    "@odata.context": "$metadata#MyAddresses/$entity",
    "AddressNo": 1,
    "AdrType@Common.Label": "Mailing",
    "AdrType": "M"
}

REQUEST ENTITY PROPERTY - MINIMAL METADATA

curl --location 'http://localhost:8080/OData.svc/MyAddresses(1)/AdrType'

Response Content-Type: application/json;odata.metadata=minimal;charset=UTF-8

ACTUAL RESPONSE SHOWING BUG
{
    "@odata.context": "../$metadata#MyAddresses(1)/AdrType",
    "value": "M"
}
 
EXPECTED RESPONSE - INSTANCE ANNOTATION INCLUDED
{
     "@odata.context": "../$metadata#MyAddresses(1)/AdrType",
     "AdrType@Common.Label": "Mailing",
     "value": "M" 
}{code}
 

 

I've attached a patch to [ODataSerializerTest in the 4.10.0 Olingo 
release|https://github.com/apache/olingo-odata4/blob/7b8f05659e2654570ae9c09b2aa52238083ea02a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java#L1751]
 which reproduces the problem.

 [^PrimitivePropertyWithInstanceAnnotation.patch]

 

 

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to