Merge pull request #148 from jokimaki/close-stream-on-persist
Close GridFSInputFile input stream on persist
This commit is contained in:
commit
34671dcd5d
2 changed files with 32 additions and 1 deletions
|
|
@ -114,9 +114,30 @@
|
||||||
(to-input-stream [^InputStream input]
|
(to-input-stream [^InputStream input]
|
||||||
input))
|
input))
|
||||||
|
|
||||||
|
(defprotocol GridFSInputFileFactory
|
||||||
|
(^GridFSInputFile create-gridfs-file [input ^GridFS fs] "Creates a file entry"))
|
||||||
|
|
||||||
|
(extend byte-array-type
|
||||||
|
GridFSInputFileFactory
|
||||||
|
{:create-gridfs-file (fn [^bytes input ^GridFS fs]
|
||||||
|
(.createFile fs input))})
|
||||||
|
|
||||||
|
(extend-protocol GridFSInputFileFactory
|
||||||
|
String
|
||||||
|
(create-gridfs-file [^String input ^GridFS fs]
|
||||||
|
(.createFile fs (io/file input)))
|
||||||
|
|
||||||
|
File
|
||||||
|
(create-gridfs-file [^File input ^GridFS fs]
|
||||||
|
(.createFile fs input))
|
||||||
|
|
||||||
|
InputStream
|
||||||
|
(create-gridfs-file [^InputStream input ^GridFS fs]
|
||||||
|
(.createFile fs input)))
|
||||||
|
|
||||||
(defn ^GridFSInputFile make-input-file
|
(defn ^GridFSInputFile make-input-file
|
||||||
[^GridFS fs input]
|
[^GridFS fs input]
|
||||||
(.createFile fs (to-input-stream input)))
|
(create-gridfs-file input fs))
|
||||||
|
|
||||||
(defmacro store
|
(defmacro store
|
||||||
[^GridFSInputFile input & body]
|
[^GridFSInputFile input & body]
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,16 @@
|
||||||
(content-type "application/octet-stream"))
|
(content-type "application/octet-stream"))
|
||||||
(is (= 1 (count (gridfs/all-files fs))))))
|
(is (= 1 (count (gridfs/all-files fs))))))
|
||||||
|
|
||||||
|
(deftest ^{:gridfs true} test-deleting-file-instance-on-disk-after-storing
|
||||||
|
(let [tmp-file (File/createTempFile "monger.test.gridfs" "test-deleting-file-instance-on-disk-after-storing")
|
||||||
|
_ (spit tmp-file "to be deleted")]
|
||||||
|
(is (= 0 (count (gridfs/all-files fs))))
|
||||||
|
(store-file (make-input-file fs tmp-file)
|
||||||
|
(filename "test-deleting-file-instance-on-disk-after-storing")
|
||||||
|
(content-type "application/octet-stream"))
|
||||||
|
(is (= 1 (count (gridfs/all-files fs))))
|
||||||
|
(is (.delete tmp-file))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(deftest ^{:gridfs true} test-finding-individual-files-on-gridfs
|
(deftest ^{:gridfs true} test-finding-individual-files-on-gridfs
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue