Support for prodiving a HttpEntity to save a couchdb attachement#180
Support for prodiving a HttpEntity to save a couchdb attachement#180YannRobert wants to merge 2 commits intohelun:masterfrom
Conversation
…AttachmentCouchDbConnector. Existing methods now just delegates to it.
…tity, providing a way for user applications to save an Object directly in a streamed way without relying on temporary ByteArrayOutputStream+ByteArrayInputStream, just by implementing an appropriate HttpEntity
|
I cannot see the justification for all this, why not just use ByteArrayOutputStream as you say yourself? |
|
At first, we used ByteArrayOutputStream + ByteArrayInputStream in order to get an InputStream to pass to Ektorp. TLDR : performances |
|
I have two concerns:
|
|
hi @helun, thank you for your comments. I'll provide an integration test describing something close to my use case, so that it will be easier to understand. Regarding exposure of org.apache.http.HttpEntity in CouchDbConnector, I agree abstraction is leaking. So I'll make the new method only available in AttachmentCouchDbConnector, and CouchDbConnector will not extend AttachmentCouchDbConnector. |
This change provides a new method
in order to be able to publish an attachment document to couchdb providing an HttpEntity
this is usefull when the application does not have an InputStream to provide to the existing methods.
but have an Object that is able to be written to an OutputStream
without relying on a temporary ByteArrayOutputStream buffer (or similar)
About implementation details :
The first commit is a refactoring : I extracted all the methods related to attachment management into a new class StdAttachmentCouchDbConnector, and a matching AttachmentCouchDbConnector interface.
I made CouchDbConnector extend AttachmentCouchDbConnector in order to save code duplication.
And StdCouchDbConnector is encapsulating the StdAttachmentCouchDbConnector instance.
Still, I am unsure whether or not CouchDbConnector should extend AttachmentCouchDbConnector, or if we would better have code duplication.
This is because there may be some kind of leaking abstraction exposing HttpEntity in the CouchDbConnector interface. Or maybe we should not care ?
I'll leave it up to you to comment on this.