Author: norman
Date: Fri Jul 31 18:41:23 2009
New Revision: 799689
URL: http://svn.apache.org/viewvc?rev=799689&view=rev
Log:
correctly handle folder childs
Modified:
labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchFoldersHandler.java
Modified:
labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchFoldersHandler.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchFoldersHandler.java?rev=799689&r1=799688&r2=799689&view=diff
==============================================================================
---
labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchFoldersHandler.java
(original)
+++
labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchFoldersHandler.java
Fri Jul 31 18:41:23 2009
@@ -23,6 +23,7 @@
import java.util.List;
import javax.mail.Folder;
+import javax.mail.MessagingException;
import javax.servlet.http.HttpSession;
import net.customware.gwt.dispatch.server.ExecutionContext;
@@ -68,22 +69,8 @@
for (int i = 0; i < folders.length; i++) {
Folder f = folders[i];
- String fullName = f.getFullName();
- String delimiter =
String.valueOf(f.getSeparator());
+ createIMAPFolderTree(fList, createFolder(f),
f.list());
- IMAPFolder iFolder = new IMAPFolder(fullName);
- iFolder.setDelimiter(delimiter);
- iFolder.setMessageCount(f.getMessageCount());
-
-
iFolder.setUnseenMessageCount(f.getUnreadMessageCount());
-
- int index = fullName.lastIndexOf(delimiter);
- if (index > -1) {
- String parentFullName =
fullName.substring(0, index);
- handleIMAPFolderTree(fList, iFolder,
parentFullName);
- } else {
- fList.add(iFolder);
- }
}
return new FetchFoldersResult(fList);
} catch (Exception e) {
@@ -110,20 +97,41 @@
return FetchFolders.class;
}
+ /**
+ * Create a new IMAPFolder from the given Folder
+ *
+ * @param folder
+ * @return imapFolder
+ * @throws MessagingException
+ */
+ private IMAPFolder createFolder(Folder folder) throws
MessagingException {
+
+ String fullName = folder.getFullName();
+ String delimiter = String.valueOf(folder.getSeparator());
+
+ IMAPFolder iFolder = new IMAPFolder(fullName);
+ iFolder.setDelimiter(delimiter);
+ iFolder.setMessageCount(folder.getMessageCount());
+
+ iFolder.setUnseenMessageCount(folder.getUnreadMessageCount());
+ return iFolder;
+ }
- private void handleIMAPFolderTree(List<IMAPFolder> fList,
- IMAPFolder iFolder, String parentFullName) {
- for (int a = 0; a < fList.size(); a++) {
- IMAPFolder tmpFolder = fList.get(a);
- if (tmpFolder.getFullName().equals(parentFullName)) {
- tmpFolder.getChildIMAPFolders().add(iFolder);
- } else {
- List<IMAPFolder> childFolders =
tmpFolder.getChildIMAPFolders();
- if (childFolders != null &&
childFolders.isEmpty() == false) {
- handleIMAPFolderTree(childFolders,
iFolder, parentFullName);
- }
- }
+ /**
+ * Create a folder tree
+ *
+ * @param fList
+ * @param iFolder
+ * @param childFolders
+ * @throws MessagingException
+ */
+ private void createIMAPFolderTree(List<IMAPFolder> fList,
+ IMAPFolder iFolder, Folder[] childFolders) throws
MessagingException {
+
+ for (int a = 0; a < childFolders.length; a++) {
+
iFolder.getChildIMAPFolders().add(createFolder(childFolders[a]));
}
+ fList.add(iFolder);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]