Hi all,

When working with the server part of the Olingo V4 library I came across the 
fact that there is a lot of V3 specific code within the commons module which is 
visible from the server perspective. This is because the client supports the 
consumption of V3 services as well as V4 services. On server side the main goal 
was to only support V4.
This can be quite confusing as to which classes to use and defining which 
feature is working on client side or server side only.

So I would suggest we split the codeline at the current state and have two 
separate codelines. One for V3 functionality only and one for V4 functionality 
only. 
The V4 codeline would contain a V4 client, a V4 server and the commons module. 
The V3 codeline would only contain a V3 client. No server and commons module 
there for the time being.

This would make it much easier to implement new features in the V4 codeline 
without introducing regressions with the V3 code. Also in my opinion the 
architecture would be easier to understand for developers. Also the code base 
could be significantly reduced by deleting all the forks between specification 
versions.

The ultimate goal would of course be a way to use a V4 and V3 library in the 
same Java Client. As of now a client developer has to specify which service he 
wants to consume anyway via a property. In the future this could be done via 
another ODataV3 object or so.

So WDYT? I hope for a lot of comments as this is a major refactoring!

Also I would volunteer to perform the refactoring if there are no objections.

Best Regards,
Christian

Reply via email to