What are the benefits of having the BaseBlobStore implement the Async interface? Are there common behaviours we can abstract there? If not, would it be OK for async implementations to extend the BaseBlobStore and additionally directly implement the AsyncBlobStore interface? I don't know the details of the BaseBlobStore class, but having a quick look I see it already has several "unsupported operations" in there, so I don't have a strong opinion on this.
Regarding the method in the context, it could be a good idea to make it return an Optional, and configure the base blobstore context module class to do something like this [1], to automatically return present or absent based on the presence of a binding for the async interface. This way providers will just need to bind the async interface and everything will work as expected. [1] https://github.com/jclouds/jclouds/blob/master/compute/src/main/java/org/jclouds/compute/config/BaseComputeServiceContextModule.java#L313-L316 On 21 April 2017 at 13:33, kishore kumar <kishore25ku...@gmail.com> wrote: > Hi Ignasi and Alex, > > Here is what I am thinking on regarding new Async interface. Please correct > me if I am wrong. > > I will create a new interface AsyncBlobStore and this will expose all the > async methods. I will make BaseBlobStore implement both BlobStore and > AsyncBlobStore. I will bind AsyncBlobStore to AzureBlobStore in > AzureBlobStoreContextModule. > > I will also expose a method in BlobStoreContext to getAsyncBlobStore. > > Does my understanding sound right?