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;
}