You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@olingo.apache.org by Vincenzo Turco <vi...@gmail.com> on 2015/10/02 12:16:29 UTC

Olingo client: tolerance to server side changes

Hi all
I'd be interested to learn how tolerant the Olingo client would be to
server side changes.
For instance, if I add one more field or navigation link to my entity on
the server, without changing anything else, will my client break (in the
SOAP/WSDL fashion :) ) or is it tolerant to added fields?
thanks a lot!
Regards

-- 


Vincenzo Turco

RE: Olingo client: tolerance to server side changes

Posted by "Handl, Ralf" <ra...@sap.com>.
Hi Vincenzo,

The OData 4.0 specification strongly advises clients to behave the way Michael recommended below: check what you know, ignore additional stuff you don't know.

Section 5.2 Model Versioning defines which incremental changes are allowed for services and which consequently should be gracefully ignored by clients not interested in the additional data: http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part1-protocol/odata-v4.0-errata02-os-part1-protocol-complete.html#_Toc406398209.

Thanks!
--Ralf 

-----Original Message-----
From: Michael [mailto:mibo@apache.org] 
Sent: Freitag, 2. Oktober 2015 15:02
To: user@olingo.apache.org
Subject: Re: Olingo client: tolerance to server side changes

Hi Vincenzo,

Unfortunately I have no experience with OData/Olingo in your scenario.
However, I think you can either use a client without validation (not
recommended)
or (better) a client which validates what he know (based on service
metadata) and all not known values are just ignored.
With the second way you can have "older" clients which know what data
they have to get and added ("newer") values
then are only read/interpreted by "newer" clients.

If you start work on some client which support such a scenario I think
the community is interested to hear about and/or to see some
contribution  ;o)

Have a nice time,
Michael

On Fri, Oct 2, 2015 at 2:47 PM, Vincenzo Turco <vi...@gmail.com> wrote:
> Hi both Michael and Ramesh
> thanks for your valuable input.
> I can provide a bit more context maybe. I am considering protocols/formats
> for system-to-system communication in a micro services architecture.
> I've been working around OData for sometime and really like its features and
> Olingo itself. I'm aware of how valuable OData can be in particular for UI5
> frontends.
> Also, OData has nice built-in support for HATEOAS / navigation links.
> Still, I'm not sure if it can add a significative advantage for
> system-to-system communication. In particular, I'd like to prevent the case
> were a (small) update to a service requires a change in each one of the
> clients.
> By any chance, have you ever met OData/Olingo used in this scenario?
> thanks a lot, regards
> Vincenzo
>
> 2015-10-02 14:19 GMT+02:00 Ramesh Reddy <ra...@redhat.com>:
>>
>> It is a stateless protocol, so it depends upon how you wrote the client.
>> If you are using Edm aware client in the Olingo, then that client instance
>> caches the metadata for life of that object. There are other options
>> available too, like using ODataClientFactory.getClient()
>>
>> Ramesh..
>>
>> ________________________________
>>
>> Hi all
>> I'd be interested to learn how tolerant the Olingo client would be to
>> server side changes.
>> For instance, if I add one more field or navigation link to my entity on
>> the server, without changing anything else, will my client break (in the
>> SOAP/WSDL fashion :) ) or is it tolerant to added fields?
>> thanks a lot!
>> Regards
>>
>> --
>>
>>
>> Vincenzo Turco
>>
>>
>
>
>
> --
>
>
> Vincenzo Turco

Re: Olingo client: tolerance to server side changes

Posted by Michael <mi...@apache.org>.
Hi Vincenzo,

Unfortunately I have no experience with OData/Olingo in your scenario.
However, I think you can either use a client without validation (not
recommended)
or (better) a client which validates what he know (based on service
metadata) and all not known values are just ignored.
With the second way you can have "older" clients which know what data
they have to get and added ("newer") values
then are only read/interpreted by "newer" clients.

If you start work on some client which support such a scenario I think
the community is interested to hear about and/or to see some
contribution  ;o)

Have a nice time,
Michael

On Fri, Oct 2, 2015 at 2:47 PM, Vincenzo Turco <vi...@gmail.com> wrote:
> Hi both Michael and Ramesh
> thanks for your valuable input.
> I can provide a bit more context maybe. I am considering protocols/formats
> for system-to-system communication in a micro services architecture.
> I've been working around OData for sometime and really like its features and
> Olingo itself. I'm aware of how valuable OData can be in particular for UI5
> frontends.
> Also, OData has nice built-in support for HATEOAS / navigation links.
> Still, I'm not sure if it can add a significative advantage for
> system-to-system communication. In particular, I'd like to prevent the case
> were a (small) update to a service requires a change in each one of the
> clients.
> By any chance, have you ever met OData/Olingo used in this scenario?
> thanks a lot, regards
> Vincenzo
>
> 2015-10-02 14:19 GMT+02:00 Ramesh Reddy <ra...@redhat.com>:
>>
>> It is a stateless protocol, so it depends upon how you wrote the client.
>> If you are using Edm aware client in the Olingo, then that client instance
>> caches the metadata for life of that object. There are other options
>> available too, like using ODataClientFactory.getClient()
>>
>> Ramesh..
>>
>> ________________________________
>>
>> Hi all
>> I'd be interested to learn how tolerant the Olingo client would be to
>> server side changes.
>> For instance, if I add one more field or navigation link to my entity on
>> the server, without changing anything else, will my client break (in the
>> SOAP/WSDL fashion :) ) or is it tolerant to added fields?
>> thanks a lot!
>> Regards
>>
>> --
>>
>>
>> Vincenzo Turco
>>
>>
>
>
>
> --
>
>
> Vincenzo Turco

Re: Olingo client: tolerance to server side changes

Posted by Vincenzo Turco <vi...@gmail.com>.
Hi both Michael and Ramesh
thanks for your valuable input.
I can provide a bit more context maybe. I am considering protocols/formats
for system-to-system communication in a micro services architecture.
I've been working around OData for sometime and really like its features
and Olingo itself. I'm aware of how valuable OData can be in particular for
UI5 frontends.
Also, OData has nice built-in support for HATEOAS / navigation links.
Still, I'm not sure if it can add a significative advantage for
system-to-system communication. In particular, I'd like to prevent the case
were a (small) update to a service requires a change in each one of the
clients.
By any chance, have you ever met OData/Olingo used in this scenario?
thanks a lot, regards
Vincenzo

2015-10-02 14:19 GMT+02:00 Ramesh Reddy <ra...@redhat.com>:

> It is a stateless protocol, so it depends upon how you wrote the client.
> If you are using Edm aware client in the Olingo, then that client instance
> caches the metadata for life of that object. There are other options
> available too, like using ODataClientFactory.getClient()
>
> Ramesh..
>
> ------------------------------
>
> Hi all
> I'd be interested to learn how tolerant the Olingo client would be to
> server side changes.
> For instance, if I add one more field or navigation link to my entity on
> the server, without changing anything else, will my client break (in the
> SOAP/WSDL fashion :) ) or is it tolerant to added fields?
> thanks a lot!
> Regards
>
> --
>
>
> Vincenzo Turco
>
>
>


-- 


Vincenzo Turco

Re: Olingo client: tolerance to server side changes

Posted by Ramesh Reddy <ra...@redhat.com>.
It is a stateless protocol, so it depends upon how you wrote the client. If you are using Edm aware client in the Olingo, then that client instance caches the metadata for life of that object. There are other options available too, like using ODataClientFactory.getClient() 

Ramesh.. 

----- Original Message -----

> Hi all
> I'd be interested to learn how tolerant the Olingo client would be to server
> side changes.
> For instance, if I add one more field or navigation link to my entity on the
> server, without changing anything else, will my client break (in the
> SOAP/WSDL fashion :) ) or is it tolerant to added fields?
> thanks a lot!
> Regards

> --

> Vincenzo Turco

Re: Olingo client: tolerance to server side changes

Posted by "Bolz, Michael" <mi...@sap.com>.
Hi Vincenzo,

do you ask for Olingo / OData V2 or V4?

In general if the client validates against the EDM (metadata) of the OData Service it will break (e.g. Olingo V2 client or “EdmEnabledODataClient [Impl]” in V4).
If you use a client without validation it could work (e.g. “ODataClient [Impl]” in V4).

In OData additionally exists the concept of “Dynamic Property”.
However this is currently not supported with Olingo.

Best Regards,
Michael

> On 02 Oct 2015, at 12:16, Vincenzo Turco <vi...@gmail.com> wrote:
> 
> Hi all
> I'd be interested to learn how tolerant the Olingo client would be to server side changes.
> For instance, if I add one more field or navigation link to my entity on the server, without changing anything else, will my client break (in the SOAP/WSDL fashion :) ) or is it tolerant to added fields?
> thanks a lot!
> Regards
> 
> -- 
> 
> 
> Vincenzo Turco