orchestrate-io/orchestrate-java-client — pull request #24 by novabyte (2014-04-02 00:33:35+00:00)
Title: Initial WIP on new client API.

This PR is intended to be the first (and arguably the biggest) step towards the new client API outlined here: https://github.com/orchestrate-io/orchestrate-java-client/issues/13.

I've only included the work on KV GET operations but both the sync and async API work. I want to get feedback on this code as early as possible and also before it gets much bigger.

A sample of this functionality looks like so:
```java
final String apiKey = "your api key";
final NewClient client = OrchestrateClient.builder(apiKey).build();
client.kv("integration-tests", "key")
.get(String.class)
.on(new ResponseAdapter>() {
@Override
public void onSuccess(final KvObject object) {
System.out.println(object);
}
})
.executeAsync();
```

There's a few noteworthy things to mention:
* So as not to break the codebase on `master` I've completely isolated this new code from conflicting with the existing API:
* `NewClient` will become `Client`
* `NewClientFilter` will become `ClientFilter`
* `OrchestrateFuture` (and `OrchestrateFutureImpl`) will disappear as I've moved us over to `GrizzlyFuture`
* Other small name changes may occur
* When we make the final switchover I'll remove all the `*Operation` classes.
* At the moment the internal structure of the new API pushes the serialisation work pretty far up the stack which has the consequence that each `ResponseCompletionHandler` is deserializing the response data in the listener `Set`. I think `ObjectMapper` does a lot of caching which should mitigate this problem but I'll find a neater solution at some point.
* There's still a few `FIXME` scattered throughout the code that'll be addressed before release time.
* I'm in the middle of adding the rest of the Orchestrate API to this new client API design.
* I'm adding a lot of testing code as I go along at the moment which should give us much more complete test coverage.
* There's a lot of javadoc for me to complete which'll happen before we release.

@housejester Let me know what you think.