use of com.zimbra.cs.volume.Volume in project zm-mailbox by Zimbra.
the class GetVolume method handle.
private GetVolumeResponse handle(GetVolumeRequest req, Map<String, Object> ctx) throws ServiceException {
ZimbraSoapContext zsc = getZimbraSoapContext(ctx);
checkRight(zsc, ctx, Provisioning.getInstance().getLocalServer(), Admin.R_manageVolume);
Volume vol = VolumeManager.getInstance().getVolume(req.getId());
GetVolumeResponse resp = new GetVolumeResponse(vol.toJAXB());
return resp;
}
use of com.zimbra.cs.volume.Volume in project zm-mailbox by Zimbra.
the class DbVolume method getAll.
/**
* Return all {@link Volume} entries in a map, where ID is the key and a {@link Volume} object is the value.
*/
public static Map<Short, Volume> getAll(DbConnection conn) throws ServiceException {
PreparedStatement stmt = null;
ResultSet rs = null;
Map<Short, Volume> result = new HashMap<Short, Volume>();
try {
stmt = conn.prepareStatement("SELECT * FROM volume");
rs = stmt.executeQuery();
while (rs.next()) {
Volume v = constructVolume(rs);
result.put(v.getId(), v);
}
} catch (SQLException e) {
throw ServiceException.FAILURE("getting all volume entries", e);
} finally {
DbPool.closeResults(rs);
DbPool.closeStatement(stmt);
}
return result;
}
use of com.zimbra.cs.volume.Volume in project zm-mailbox by Zimbra.
the class DbVolumeBlobsTest method deleteBlobRef.
@Test
public void deleteBlobRef() throws Exception {
Mailbox mbox = MailboxManager.getInstance().getMailboxByAccountId(MockProvisioning.DEFAULT_ACCOUNT_ID);
DeliveryOptions opt = new DeliveryOptions();
opt.setFolderId(Mailbox.ID_FOLDER_INBOX);
Message msg = mbox.addMessage(null, new ParsedMessage("From: from1@zimbra.com\r\nTo: to1@zimbra.com".getBytes(), false), opt, null);
Volume vol = VolumeManager.getInstance().getCurrentMessageVolume();
DbVolumeBlobs.addBlobReference(conn, mbox, vol, msg);
String digest = msg.getBlob().getDigest();
String path = msg.getBlob().getLocalBlob().getFile().getPath();
List<BlobReference> blobs = DbVolumeBlobs.getBlobReferences(conn, digest, vol);
Assert.assertEquals(1, blobs.size());
Assert.assertEquals(path, getPath(blobs.get(0)));
DbVolumeBlobs.deleteBlobRef(conn, blobs.get(0).getId());
blobs = DbVolumeBlobs.getBlobReferences(conn, digest, vol);
Assert.assertEquals(0, blobs.size());
}
use of com.zimbra.cs.volume.Volume in project zm-mailbox by Zimbra.
the class DbVolumeBlobsTest method revisionBlobs.
@Test
public void revisionBlobs() throws Exception {
Mailbox mbox = MailboxManager.getInstance().getMailboxByAccountId(MockProvisioning.DEFAULT_ACCOUNT_ID);
Map<String, String> digestToPath = new HashMap<String, String>();
Volume vol = VolumeManager.getInstance().getCurrentMessageVolume();
InputStream in = new ByteArrayInputStream("testcontent".getBytes());
ParsedDocument pd = new ParsedDocument(in, "docname", "text/plain", System.currentTimeMillis(), null, null);
Document doc = mbox.createDocument(null, Mailbox.ID_FOLDER_BRIEFCASE, pd, MailItem.Type.DOCUMENT, 0);
digestToPath.put(doc.getDigest(), doc.getBlob().getLocalBlob().getFile().getPath());
int baseId = doc.getId();
for (int i = 0; i < 10; i++) {
in = new ByteArrayInputStream(("testcontent-new-" + i).getBytes());
pd = new ParsedDocument(in, "docname", "text/plain", System.currentTimeMillis(), null, null);
doc = mbox.addDocumentRevision(null, baseId, pd);
digestToPath.put(doc.getDigest(), doc.getBlob().getLocalBlob().getFile().getPath());
}
Iterable<MailboxBlobInfo> allBlobs = null;
allBlobs = DbMailItem.getAllBlobs(conn, mbox.getSchemaGroupId(), vol.getId(), -1, -1);
for (MailboxBlobInfo info : allBlobs) {
DbVolumeBlobs.addBlobReference(conn, info);
}
List<BlobReference> blobs = DbVolumeBlobs.getBlobReferences(conn, vol);
Assert.assertEquals(digestToPath.size(), blobs.size());
for (BlobReference blob : blobs) {
String path = digestToPath.remove(blob.getDigest());
Assert.assertNotNull(path);
Assert.assertEquals(path, getPath(blob));
}
Assert.assertTrue(digestToPath.isEmpty());
}
use of com.zimbra.cs.volume.Volume in project zm-mailbox by Zimbra.
the class DbVolumeBlobsTest method blobsByMbox.
@Test
public void blobsByMbox() throws Exception {
Mailbox mbox = MailboxManager.getInstance().getMailboxByAccountId(MockProvisioning.DEFAULT_ACCOUNT_ID);
DeliveryOptions opt = new DeliveryOptions();
opt.setFolderId(Mailbox.ID_FOLDER_INBOX);
ParsedMessage pm = new ParsedMessage("From: from1@zimbra.com\r\nTo: to1@zimbra.com".getBytes(), false);
Message msg = mbox.addMessage(null, pm, opt, null);
Volume vol = VolumeManager.getInstance().getCurrentMessageVolume();
DbVolumeBlobs.addBlobReference(conn, mbox, vol, msg);
String digest = msg.getBlob().getDigest();
String path = msg.getBlob().getLocalBlob().getFile().getPath();
List<BlobReference> blobs = DbVolumeBlobs.getBlobReferences(conn, digest, vol);
Assert.assertEquals(1, blobs.size());
Assert.assertEquals(path, getPath(blobs.get(0)));
Account acct2 = Provisioning.getInstance().getAccount("test2@zimbra.com");
Mailbox mbox2 = MailboxManager.getInstance().getMailboxByAccount(acct2);
Message msg2 = mbox2.addMessage(null, pm, opt, null);
DbVolumeBlobs.addBlobReference(conn, mbox2, vol, msg2);
blobs = DbVolumeBlobs.getBlobReferences(conn, digest, vol);
Set<String> paths = new HashSet<String>();
paths.add(path);
paths.add(msg2.getBlob().getLocalBlob().getFile().getPath());
Assert.assertEquals(2, blobs.size());
for (BlobReference ref : blobs) {
Assert.assertTrue(paths.remove(getPath(ref)));
}
Assert.assertTrue(paths.isEmpty());
DbVolumeBlobs.deleteBlobRef(conn, mbox);
blobs = DbVolumeBlobs.getBlobReferences(conn, digest, vol);
Assert.assertEquals(1, blobs.size());
BlobReference ref = blobs.get(0);
path = msg2.getBlob().getLocalBlob().getFile().getPath();
Assert.assertEquals(path, getPath(ref));
Assert.assertEquals(mbox2.getId(), ref.getMailboxId());
}
Aggregations