public IMAPStore get()

in server/src/main/java/org/apache/hupa/server/InMemoryIMAPStoreCache.java [87:131]


    public IMAPStore get(User user) throws MessagingException {
        // FIXME, there will be a NullPointerException thrown here when user session expired

        String id = user.getId();
        String username = user.getName();
        String password = user.getPassword();
        Settings settings = user.getSettings();

        CachedIMAPStore cstore = pool.get(username);
        if (cstore == null) {
            logger.debug("No cached store found for user " +username);
        } else {
            if (cstore.isExpired() == false) {
                try {
                    cstore.validate();
                } catch (MessagingException e) {
                }
            } else {
                pool.remove(username);
                try {
                    cstore.getStore().close();
                    cstore = null;
                } catch (MessagingException e) {
                }
            }
        }

        if (cstore == null) {
            cstore = createCachedIMAPStore(user);
        }

        if (cstore.getStore().isConnected() == false) {
            cstore.getStore().connect(settings.getImapServer(), settings.getImapPort(), id, password);
        }

        pool.put(username, cstore);
        IMAPStore ret = cstore.getStore();

        // TODO: this is a hack for gmail
        if (settings.getImapServer().contains("gmail.com")) {
            internationalizeGmailFolders(user, ret);
        }

        return ret;
    }