Well I should have looked at this more closely. It's now working. I have: ActionListenerPromise<UpdateResponse> promListener = new ActionListenerPromise<>(); client.updateAsync(request, RequestOptions.DEFAULT, promListener); //ES call return promListener.getPromise();
and my listener class: public class ActionListenerPromise<R> implements ActionListener<R> { private Deferred<R> deferred = new Deferred<>(); public ActionListenerPromise() { this.deferred = new Deferred<>(); } public Promise<R> getPromise() { return deferred.getPromise(); } @Override public void onResponse(R response) { deferred.resolve(response); } @Override public void onFailure(Exception e) { deferred.fail(e); } } Alain On Wed, Sep 19, 2018 at 12:16 PM Alain Picard <pic...@castortech.com> wrote: > Tim, > > I think the secret here is the getPromise() or how to get a promise > implementation from the ActionListener or one of its derivative static > methods. Normally we use a Deferred, but here my understanding is that ES > manages the async execution and we want to wrap its deferred handling into > a Promise which is not executed by our PromiseFactory. I guess that's where > my limited knowledge is hitting a wall. > > Cheers, > Alain > > > On Wed, Sep 19, 2018 at 11:13 AM Tim Ward <tim.w...@paremus.com> wrote: > >> It looks like it should be pretty simple⦠>> >> Promise<Response> myPromise = getPromise(); >> >> myPromise.onSuccess(listener::onResponse) >> .onFailure(listener::onFailure); >> >> >> Best Regards, >> >> Tim >> >> On 19 Sep 2018, at 15:16, Alain Picard via osgi-dev < >> osgi-dev@mail.osgi.org> wrote: >> >> We are using ElasticSearch which provide an async mode that is heavily >> based on promises, They even provide BiConsumer to integrate with >> CompletableFuture. >> >> The interface is ActionListener ( >> https://github.com/elastic/elasticsearch/blob/master/server/src/main/java/org/elasticsearch/action/ActionListener.java >> ). >> >> What is the best way to tie this is to promises instead, so that we don't >> have to deal with different mode of handling asynchronous processing, and >> we are also envisioning the possibility of integrating push streams here as >> well. >> >> Thanks >> Alain >> >> _______________________________________________ >> OSGi Developer Mail List >> osgi-dev@mail.osgi.org >> https://mail.osgi.org/mailman/listinfo/osgi-dev >> >> >>
_______________________________________________ OSGi Developer Mail List osgi-dev@mail.osgi.org https://mail.osgi.org/mailman/listinfo/osgi-dev