svn commit: r732727 - /ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r732727 - /ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java

adrianc
Author: adrianc
Date: Thu Jan  8 07:40:02 2009
New Revision: 732727

URL: http://svn.apache.org/viewvc?rev=732727&view=rev
Log:
Improved exception handling in JavaMailContainer.java. Problem reported in https://issues.apache.org/jira/browse/OFBIZ-156.

Modified:
    ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java

Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java?rev=732727&r1=732726&r2=732727&view=diff
==============================================================================
--- ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java (original)
+++ ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java Thu Jan  8 07:40:02 2009
@@ -18,7 +18,6 @@
  *******************************************************************************/
 package org.ofbiz.service.mail;
 
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -34,7 +33,6 @@
 import org.ofbiz.base.container.ContainerConfig;
 import org.ofbiz.base.container.ContainerException;
 import org.ofbiz.base.util.Debug;
-import org.ofbiz.base.util.GeneralException;
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.entity.GenericDelegator;
@@ -254,27 +252,33 @@
                     Session session = entry.getValue();
                     try {
                         checkMessages(store, session);
-                    } catch (GeneralException e) {
-                        Debug.logError(e, "Mail service invocation error", module);
-                    } catch (MessagingException e) {
-                        Debug.logError(e, "Mail message error", module);
+                    } catch (Exception e) {
+                        // Catch all exceptions so the loop will continue running
+                        Debug.logError("Mail service invocation error for mail store " + store + ": " + e, module);
+                    }
+                    if (store.isConnected()) {
+                        try {
+                            store.close();
+                        } catch (Exception e) {}
                     }
                 }
             }
         }
 
-        protected void checkMessages(Store store, Session session) throws MessagingException, GeneralException {
-            store.connect();
+        protected void checkMessages(Store store, Session session) throws MessagingException {
+            if (!store.isConnected()) {
+                store.connect();
+            }
 
             // open the default folder
             Folder folder = store.getDefaultFolder();
-            if (folder == null) {
-                throw new MessagingException("No default folder available");
+            if (!folder.exists()) {
+                throw new MessagingException("No default (root) folder available");
             }
 
             // open the inbox
             folder = folder.getFolder(INBOX);
-            if (folder == null) {
+            if (!folder.exists()) {
                 throw new MessagingException("No INBOX folder available");
             }
 
@@ -283,7 +287,6 @@
             int totalMessages = folder.getMessageCount();
             if (totalMessages == 0) {
                 folder.close(false);
-                store.close();
                 return;
             }
 
@@ -317,7 +320,6 @@
 
             // expunge and close the folder
             folder.close(true);
-            store.close();
         }
 
         protected void processMessage(Message message, Session session) {