There are many issues with the current client API, and we've had a lot of lessons learned that could be incorporated into a new one.
Some of the issues this would address:
- questions like "What is considered 'Public API'?"
- automated testing for incompatible API changes
- provide better support for alternative implementations of pluggable features
- distinguish between compile-time dependencies and runtime dependencies
- consistent exception handling
- consistent/symmetric getters/setters
- well-defined resource lifecycles
- better resource management
- simpler entry point to communicate with Accumulo
- better support for client-side configuration management
- logical layout of first class Accumulo objects in the API (Table, User, Scan, Connection)
Some of these goal may evolve during the development of this feature, and many previously identified issues can be moved to sub-tasks of this one. This ticket is intended to cover the overall feature, but the details will be handled in sub-tasks.