mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merge DEV to HEAD
19904 : ALF-2126 - IMAP extremely slow (read: unusable) if messages are uploaded to server git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@19915 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -33,7 +33,6 @@ import javax.mail.Flags;
|
|||||||
import javax.mail.Flags.Flag;
|
import javax.mail.Flags.Flag;
|
||||||
|
|
||||||
import org.alfresco.error.AlfrescoRuntimeException;
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
import org.springframework.extensions.surf.util.I18NUtil;
|
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.model.ImapModel;
|
import org.alfresco.model.ImapModel;
|
||||||
import org.alfresco.repo.admin.SysAdminParams;
|
import org.alfresco.repo.admin.SysAdminParams;
|
||||||
@@ -55,13 +54,14 @@ import org.alfresco.service.cmr.security.PermissionService;
|
|||||||
import org.alfresco.service.cmr.site.SiteInfo;
|
import org.alfresco.service.cmr.site.SiteInfo;
|
||||||
import org.alfresco.service.namespace.NamespaceService;
|
import org.alfresco.service.namespace.NamespaceService;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.springframework.extensions.surf.util.AbstractLifecycleBean;
|
|
||||||
import org.alfresco.util.PropertyCheck;
|
import org.alfresco.util.PropertyCheck;
|
||||||
import org.alfresco.util.Utf7;
|
import org.alfresco.util.Utf7;
|
||||||
import org.alfresco.util.config.RepositoryFolderConfigBean;
|
import org.alfresco.util.config.RepositoryFolderConfigBean;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.springframework.context.ApplicationEvent;
|
import org.springframework.context.ApplicationEvent;
|
||||||
|
import org.springframework.extensions.surf.util.AbstractLifecycleBean;
|
||||||
|
import org.springframework.extensions.surf.util.I18NUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Dmitry Vaserin
|
* @author Dmitry Vaserin
|
||||||
@@ -552,15 +552,23 @@ public class ImapServiceImpl implements ImapService
|
|||||||
if (logger.isDebugEnabled())
|
if (logger.isDebugEnabled())
|
||||||
{
|
{
|
||||||
logger.debug("Processing of " + folderNames[i]);
|
logger.debug("Processing of " + folderNames[i]);
|
||||||
|
}
|
||||||
|
NodeRef targetNode = nodeService.getChildByName(nodeRef, ContentModel.ASSOC_CONTAINS, folderNames[i]);
|
||||||
|
if (targetNode == null)
|
||||||
|
{
|
||||||
|
List<FileInfo> folderList = searchFolders(nodeRef, folderNames[i], false, viewMode);
|
||||||
|
if (folderList != null && !folderList.isEmpty() && folderList.get(0) != null)
|
||||||
|
{
|
||||||
|
targetNode = folderList.get(0).getNodeRef();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
List<FileInfo> folderList = searchFolders(nodeRef, folderNames[i], false, viewMode);
|
if (targetNode == null)
|
||||||
if (folderList.isEmpty())
|
|
||||||
{
|
{
|
||||||
return new AlfrescoImapFolder(user.getQualifiedMailboxName(), serviceRegistry);
|
return new AlfrescoImapFolder(user.getQualifiedMailboxName(), serviceRegistry);
|
||||||
}
|
}
|
||||||
FileInfo folderFileInfo = folderList.get(0); // we need the only one
|
|
||||||
if (i == (folderNames.length - 1)) // is last
|
if (i == (folderNames.length - 1)) // is last
|
||||||
{
|
{
|
||||||
|
FileInfo folderFileInfo = fileFolderService.getFileInfo(targetNode);
|
||||||
return new AlfrescoImapFolder(
|
return new AlfrescoImapFolder(
|
||||||
user.getQualifiedMailboxName(),
|
user.getQualifiedMailboxName(),
|
||||||
folderFileInfo,
|
folderFileInfo,
|
||||||
@@ -573,7 +581,7 @@ public class ImapServiceImpl implements ImapService
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
nodeRef = folderFileInfo.getNodeRef(); // next parent
|
nodeRef = targetNode; // next parent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -591,7 +599,13 @@ public class ImapServiceImpl implements ImapService
|
|||||||
*/
|
*/
|
||||||
public List<FileInfo> searchFolders(NodeRef contextNodeRef, String namePattern, boolean includeSubFolders, ImapViewMode viewMode)
|
public List<FileInfo> searchFolders(NodeRef contextNodeRef, String namePattern, boolean includeSubFolders, ImapViewMode viewMode)
|
||||||
{
|
{
|
||||||
List<FileInfo> result = fileFolderService.search(contextNodeRef, namePattern, false, true, includeSubFolders);
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Search folders namePattern" + namePattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<FileInfo> searchResult = fileFolderService.search(contextNodeRef, namePattern, false, true, includeSubFolders);
|
||||||
|
Set<FileInfo> result = new HashSet<FileInfo>(searchResult);
|
||||||
if (viewMode == ImapViewMode.VIRTUAL || viewMode == ImapViewMode.MIXED)
|
if (viewMode == ImapViewMode.VIRTUAL || viewMode == ImapViewMode.MIXED)
|
||||||
{
|
{
|
||||||
List<SiteInfo> nonFavSites = getNonFavouriteSites(getCurrentUser());
|
List<SiteInfo> nonFavSites = getNonFavouriteSites(getCurrentUser());
|
||||||
@@ -633,6 +647,11 @@ public class ImapServiceImpl implements ImapService
|
|||||||
logger.warn("Root sites folder was deleted.");
|
logger.warn("Root sites folder was deleted.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Search folders return ");
|
||||||
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@@ -646,7 +665,12 @@ public class ImapServiceImpl implements ImapService
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return result;
|
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Search folders return at end");
|
||||||
|
}
|
||||||
|
return new ArrayList<FileInfo>(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -660,7 +684,20 @@ public class ImapServiceImpl implements ImapService
|
|||||||
*/
|
*/
|
||||||
public List<FileInfo> searchFiles(NodeRef contextNodeRef, String namePattern, boolean includeSubFolders)
|
public List<FileInfo> searchFiles(NodeRef contextNodeRef, String namePattern, boolean includeSubFolders)
|
||||||
{
|
{
|
||||||
return fileFolderService.search(contextNodeRef, namePattern, true, false, includeSubFolders);
|
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Search files namePattern," + contextNodeRef + ", " + namePattern + ", " + includeSubFolders);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<FileInfo> files = fileFolderService.search(contextNodeRef, namePattern, true, false, includeSubFolders);
|
||||||
|
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Search files return");
|
||||||
|
}
|
||||||
|
|
||||||
|
return files;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -674,6 +711,11 @@ public class ImapServiceImpl implements ImapService
|
|||||||
*/
|
*/
|
||||||
public List<FileInfo> searchMails(NodeRef contextNodeRef, String namePattern, ImapViewMode viewMode, boolean includeSubFolders)
|
public List<FileInfo> searchMails(NodeRef contextNodeRef, String namePattern, ImapViewMode viewMode, boolean includeSubFolders)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Search mails namePattern," + contextNodeRef + ", " + namePattern + ", " + viewMode + ", " + includeSubFolders);
|
||||||
|
}
|
||||||
|
|
||||||
List<FileInfo> result = new LinkedList<FileInfo>();
|
List<FileInfo> result = new LinkedList<FileInfo>();
|
||||||
List<FileInfo> searchResult = fileFolderService.search(contextNodeRef, namePattern, true, false, includeSubFolders);
|
List<FileInfo> searchResult = fileFolderService.search(contextNodeRef, namePattern, true, false, includeSubFolders);
|
||||||
switch (viewMode)
|
switch (viewMode)
|
||||||
|
Reference in New Issue
Block a user