Skip to content

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

Open
PBRCW wants to merge 2 commits intoOData:masterfrom
PBRCW:master
Open

Major improvements and fixes to the C++ OData client library, see below:#32
PBRCW wants to merge 2 commits intoOData:masterfrom
PBRCW:master

Conversation

@PBRCW
Copy link
Copy Markdown

@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
Copy Markdown

@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
Copy Markdown
Author

PBRCW commented Jan 14, 2021 via email

@zeldaxe
Copy link
Copy Markdown

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