package org.elasticsearch.repositories.gridfs.blobstore;
import com.mongodb.gridfs.GridFSInputFile;
import org.elasticsearch.common.blobstore.BlobPath;
import org.elasticsearch.common.blobstore.ImmutableBlobContainer;
import org.elasticsearch.common.blobstore.support.BlobStores;
import java.io.IOException;
import java.io.InputStream;
public class GridFsImmutableBlobContainer extends AbstractGridFsBlobContainer implements ImmutableBlobContainer {
protected GridFsImmutableBlobContainer(BlobPath path, GridFsBlobStore blobStore) {
super(path, blobStore);
}
@Override
public void writeBlob(final String blobName, final InputStream is, final long sizeInBytes, final WriterListener listener) {
blobStore.executor().execute(new Runnable() {
@Override
public void run() {
try {
blobStore.gridFS().remove(buildKey(blobName)); // need to remove old file if already exist
GridFSInputFile file = blobStore.gridFS().createFile(is, buildKey(blobName));
file.save();
listener.onCompleted();
} catch (Exception e) {
listener.onFailure(e);
}
}
});
}
@Override
public void writeBlob(String blobName, InputStream is, long sizeInBytes) throws IOException {
BlobStores.syncWriteBlob(this, blobName, is, sizeInBytes);
}
}