use of com.zimbra.cs.io.SecureObjectInputStream in project zm-mailbox by Zimbra.
the class PendingLocalModifications method deserialize.
@SuppressWarnings("unchecked")
public static PendingLocalModifications deserialize(Mailbox mbox, byte[] data) throws IOException, ClassNotFoundException, ServiceException {
ByteArrayInputStream bis = new ByteArrayInputStream(data);
PendingLocalModifications pms = new PendingLocalModifications();
try (ObjectInputStream ois = new SecureObjectInputStream(bis, Type.class.getName())) {
pms.changedTypes = (Set<Type>) ois.readObject();
pms.addChangedParentFolderIds((Set<Integer>) ois.readObject());
LinkedHashMap<ModificationKeyMeta, String> metaCreated = (LinkedHashMap<ModificationKeyMeta, String>) ois.readObject();
if (metaCreated != null) {
pms.created = new LinkedHashMap<PendingModifications.ModificationKey, BaseItemInfo>();
Iterator<Entry<ModificationKeyMeta, String>> iter = metaCreated.entrySet().iterator();
while (iter.hasNext()) {
Entry<ModificationKeyMeta, String> entry = iter.next();
Metadata meta = new Metadata(entry.getValue());
MailItem.UnderlyingData ud = new MailItem.UnderlyingData();
ud.deserialize(meta);
MailItem item = MailItem.constructItem(mbox, ud, true);
if (item instanceof Folder) {
Folder folder = ((Folder) item);
folder.setParent(mbox.getFolderById(null, folder.getFolderId()));
}
PendingModifications.ModificationKey key = new PendingModifications.ModificationKey(entry.getKey().accountId, entry.getKey().itemId);
pms.created.put(key, item);
}
}
Map<ModificationKeyMeta, ChangeMeta> metaModified = (Map<ModificationKeyMeta, ChangeMeta>) ois.readObject();
pms.modified = getOriginal(mbox, metaModified);
Map<ModificationKeyMeta, ChangeMeta> metaDeleted = (Map<ModificationKeyMeta, ChangeMeta>) ois.readObject();
pms.deleted = getOriginal(mbox, metaDeleted);
}
return pms;
}
use of com.zimbra.cs.io.SecureObjectInputStream in project zm-mailbox by Zimbra.
the class DiskImapCache method get.
@Override
public ImapFolder get(String key) {
File pagefile = new File(CACHE_DIR, key + IMAP_CACHEFILE_SUFFIX);
if (!pagefile.exists()) {
return null;
}
FileInputStream fis = null;
ObjectInputStream ois = null;
try {
// read serialized ImapFolder from cache
ois = new SecureObjectInputStream(fis = new FileInputStream(pagefile), ImapFolder.class.getName());
return (ImapFolder) ois.readObject();
} catch (Exception e) {
ByteUtil.closeStream(ois);
ByteUtil.closeStream(fis);
pagefile.delete();
return null;
} finally {
ByteUtil.closeStream(ois);
ByteUtil.closeStream(fis);
}
}
Aggregations