CURATOR-718: Refactor CuratorFramework inheritance hierarchy by composing functionalities (#517)

* CURATOR-718: Refactor CuratorFramework inheritance hierarchy by composing functionalities

Currently, the `CuratorFrameworkImpl` hierarchy is neither simple nor
composable.

Ideally, there should be only one instance of `CuratorFrameworkImpl`. Additional functionalities should be added by intercepting methods on purpose, but not by cloning through `CuratorFrameworkImpl(CuratorFrameworkImpl parent)`.

We could take CURATOR-626 and CURATOR-710 as lessons to know how brittle the current hierarchy.

* fixup! CURATOR-718: Refactor CuratorFramework inheritance hierarchy by composing functionalities

Notable changes to the last review:

1. Rename `InternalCuratorFramework` to `CuratorFrameworkBase`.
2. Make `DelegatingCuratorFramework` `abstract` and package `private`.
3. Move `start`/`close` from `DelegatingCuratorFramework` to subclasses.
54 files changed
tree: 3a783f33b78ce2e3421399059302d7ec6097df72
  1. .github/
  2. .mvn/
  3. curator-client/
  4. curator-examples/
  5. curator-framework/
  6. curator-recipes/
  7. curator-test/
  8. curator-test-zk35/
  9. curator-test-zk36/
  10. curator-test-zk37/
  11. curator-test-zk38/
  12. curator-x-async/
  13. curator-x-discovery/
  14. curator-x-discovery-server/
  15. .asf.yaml
  16. .git-blame-ignore-revs
  17. .gitignore
  18. DEPENDENCIES
  19. doap.rdf
  20. LICENSE
  21. licenserc.toml
  22. merge-pr.py
  23. mvnw
  24. mvnw.cmd
  25. NOTICE
  26. pom.xml
  27. README.md
README.md

Apache Curator

Maven Central Curator Website Stack Overflow Twitter

What is Apache Curator?

Apache Curator is a Java/JVM client library for Apache ZooKeeper, a distributed coordination service.

Apache Curator includes a high-level API framework and utilities to make using Apache ZooKeeper much easier and more reliable. It also includes recipes for common use cases and extensions such as service discovery and a Java 8 asynchronous DSL.

For more details: