Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Major improvements and fixes to the C++ OData client library, see below: #32

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

PBRCW
Copy link

@PBRCW PBRCW commented Jan 11, 2021

OData changes:

  • Implement log option for http trafic via a callback
  • Access to the http headers of a regular message and the $metadata
  • Use of _XPLAT() macro instead of the U() macro, allowing the define of U() to not be present if it disturbes
  • Naked arrays are allowed
  • Collections may legally contain entities, not just primitive or complex types
  • Implement open property types
  • Implement proper handling of namespace aliases
  • Remove the model of this instance from the model cache and the instance on request
  • Suppress the output of @OData.type in requests. This is a WAR for TM1 servers that will unjustifiedly choke on such annotations!
  • Search query available
  • Update an array of values
  • Strings can alternatively be a string_t or a ::boost::flyweight<sting_t>
  • shared_ptr can be instanciated by make_shared or new
  • Fix: Corrected broken overload of what()
  • Fix: Missing const added in nemerous places
  • Fix: Corrected some typos in the source
  • Implement return value of call available
  • Fix: Typos in code-generation.h that prevented compilation
  • Extended number of parameters from 6 to 12
  • Completed operations according to the OData standard
  • Implemented the operators of the open property map
  • Support VS 2017 and 2019
  • Removed warnings to improve code quality
  • Added @odata.bind
  • Numerous small improvements and fixes

TODOs:

  • Make base class of types instanciable (currently not possible due to an abstract class but desirable)
  • Implement OData type stream (currently not implemented and an atempt to do so causes a compile error)
  • Still large memory consuption if types are complex and there are a lot of them. This is due to the many(!) nullptrs that could be present
  • Test not checked for compilability and correctness after changes
  • Do checks for compilation under VS 11 and VS12 if desired and make source code compile under those
  • shared_ptr of flyweight is of course redundant, so make the strings not use shared_ptr anymore

- Implement log option for http trafic via a callback
- Access to the http headers of a regular message and the $metadata
- Use of _XPLAT() macro instead of the U() macro, allowing the define of U() to not be present if it disturbes
- Naked arrays are allowed
- Collections may legally contain entities, not just primitive or complex types
- Implement open property types
- Implement proper handling of namespace aliases
- Remove the model of this instance from the model cache and the instance on request
- Suppress the output of @OData.type in requests. This is a WAR for TM1 servers that will unjustifiedly choke on such annotations!
- Search query available
- Update an array of values
- Strings can alternatively be a string_t or a ::boost::flyweight<sting_t>
- shared_ptr can be instanciated by make_shared or new
- Fix: Corrected broken overload of what()
- Fix: Missing const added in nemerous places
- Fix: Corrected some typos in the source
- Implement return value of call available
- Fix: Typos in code-generation.h that prevented compilation
- Extended number of parameters from 6 to 12
- Completed operations according to the OData standard
- Implemented the operators of the open property map
- Support VS 2017 and 2019
- Removed warnings to improve code quality
- Added @odata.bind
- Numerous small improvements and fixes

TODOs:
- Make base class of types instanciable (currently not possible due to an abstract class but desirable)
- Implement OData type stream (currently not implemented and an atempt to do so causes a compile error)
- Still large memory consuption if types are complex and there are a lot of them. This is due to the many(!) nullptrs that could be present
- Test not checked for compilability and correctness after changes
- Do checks for compilation under VS 11 and VS12 if desired and make source code compile under those
- shared_ptr of flyweight is of course redundant, so make the strings not use shared_ptr anymore
@xuzhg xuzhg requested a review from mikepizzo January 12, 2021 17:50
@mikepizzo
Copy link
Member

@PBRCW -- Thanks for your contribution!

As you can see, it's been a while since we've introduced changes to this repo, and some of our backend build processes will have to be resurrected to get out an official build.

Still, I would very much like to take your contributions and support others that may have interest in this project.

We have moved some of these projects (like RESTier, ODataConnectedServices, ODataModelBuilder) to .NET Foundation in order to better engage with the community. If this repo is important to your scenarios, and you anticipate continuing to participate, we can look at moving this to .NET Foundation and making you a moderator. -- LMK your thoughts!

@PBRCW
Copy link
Author

PBRCW commented Jan 14, 2021 via email

@zeldaxe
Copy link

zeldaxe commented Apr 2, 2024

Just Learing

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants