I see that the BaseBlobStore and BaseProviderMetadata classes can have some implemented methods. But then what is the use of the interface on top of that?
The Base* classes are intended mainly as convenience classes for *implementers* of providers. The implemented methods you've found provide common functionality that otherwise would probably have to be re-implemented in very similar ways in each provider.
The interfaces are intended to be used/programmed against by *users*. So users would pretty much always be recommended to write:
BlobStore blobStore = ctx.getBlobStore(); rather than BaseBlobStore blobStore = (BaseBlobStore) ctx.getBlobStore(); // arararrgh!! Are you looking to implement your own blobstore provider, by any chance? ap
