Gradle is used for build automation. Easy to extend with additional tasks, and fast for incremental builds.
A Custom gradle task downloads protos from qdrant/qdrant, based on version specified in properties, which can be passed by commandline. No need to check in versioned protos, and protos are auto patched to include java package name.
Project is configured with No nulls by default, NullAway, Errorprone, enforcement of JavaDocs.
Ability to pass a channel to the client. This allows users to configure channel credentials however they need to for their environment e.g. self-signed certs for TLS, proxies, etc.
Ability for the client to manage the lifetime of the channel. A singleton instance of the client would typically be created, and Spring Boot is a popular choice for DI. Being able to configure the client to shutdown the channel on close is useful, as Spring can take care of it.
Exposes async methods that return ListenableFuture which can be composed to form concurrent operations, or called and waited on with .get(), optionally with a timeout.
Exposes ability to set an overall default timeout for all calls, and optionally provide a timeout per call.
Client is configured with logging, all calls are debug logged, and all exceptions are error logged.
Overloaded methods for common operations. Some operations have many parameters that are optional, so the builder types are used.
This PR contributes a java client for qdrant.