Search in sources :

Example 1 with SecureObjectInputStream

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;
}
Also used : SecureObjectInputStream(com.zimbra.cs.io.SecureObjectInputStream) BaseItemInfo(com.zimbra.common.mailbox.BaseItemInfo) Metadata(com.zimbra.cs.mailbox.Metadata) Folder(com.zimbra.cs.mailbox.Folder) LinkedHashMap(java.util.LinkedHashMap) Entry(java.util.Map.Entry) Type(com.zimbra.cs.mailbox.MailItem.Type) MailItem(com.zimbra.cs.mailbox.MailItem) ZimbraMailItem(com.zimbra.common.mailbox.ZimbraMailItem) ByteArrayInputStream(java.io.ByteArrayInputStream) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) SecureObjectInputStream(com.zimbra.cs.io.SecureObjectInputStream) ObjectInputStream(java.io.ObjectInputStream)

Example 2 with SecureObjectInputStream

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);
    }
}
Also used : SecureObjectInputStream(com.zimbra.cs.io.SecureObjectInputStream) File(java.io.File) FileInputStream(java.io.FileInputStream) IOException(java.io.IOException) SecureObjectInputStream(com.zimbra.cs.io.SecureObjectInputStream) ObjectInputStream(java.io.ObjectInputStream)

Aggregations

SecureObjectInputStream (com.zimbra.cs.io.SecureObjectInputStream)2 ObjectInputStream (java.io.ObjectInputStream)2 BaseItemInfo (com.zimbra.common.mailbox.BaseItemInfo)1 ZimbraMailItem (com.zimbra.common.mailbox.ZimbraMailItem)1 Folder (com.zimbra.cs.mailbox.Folder)1 MailItem (com.zimbra.cs.mailbox.MailItem)1 Type (com.zimbra.cs.mailbox.MailItem.Type)1 Metadata (com.zimbra.cs.mailbox.Metadata)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 File (java.io.File)1 FileInputStream (java.io.FileInputStream)1 IOException (java.io.IOException)1 HashMap (java.util.HashMap)1 LinkedHashMap (java.util.LinkedHashMap)1 Map (java.util.Map)1 Entry (java.util.Map.Entry)1