spring-projects / spring-boot-data-geode

Spring Boot support for Apache Geode and VMware GemFire
https://projects.spring.io/spring-boot
Apache License 2.0
45 stars 49 forks source link

Remove all uses of internal Apache Geode APIs #70

Open jxblum opened 4 years ago

jxblum commented 4 years ago

Current use of internal Apace Geode API's is (use expression: import org\.apache\.geode.*internal*):

Screen Shot 2020-02-20 at 12 43 30 PM
jxblum commented 4 years ago

This has not been completely resolved yet!

jxblum commented 2 years ago

Unfortunately, it is not currently possible to achieve certain, desired features or functionality in SBDG without the use of Apache Geode internal APIs.

This is because the Apache Geode's APIs are incomplete or wrong in certain cases. Additionally, and internally, Apache Geode naively treats certain object instances as the internal implementation of the public interface and API.

For example, the Pool interface is something that applications, or particularly frameworks and tooling should be able to implement and provide to Apache Geode for use, especially with regard to the context in which Apache Geode is used. A different Pool implementation that is context-aware (or sensitive) might be crucial to the runtime stability of the application in that context. Yet, Apache Geode treats every instance of Pool as an org.apache.geode.cache.client.internal.PoolImpl.

The same argument could be made for PDX features and types.

As such, the best we can do at this point is contain the uses of Apache Geode's internal classes and APIs to the SBDG apache-geode-extensions module.