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]

Reply via email to