Author: norman
Date: Thu Nov 24 13:58:59 2011
New Revision: 1205834

URL: http://svn.apache.org/viewvc?rev=1205834&view=rev
Log:
Make sure all registered IFutureSPFResultListener get executed even on an 
unchecked Exception. See JSPF-95

Modified:
    
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/executor/FutureSPFResult.java
    james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/impl/SPF.java

Modified: 
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/executor/FutureSPFResult.java
URL: 
http://svn.apache.org/viewvc/james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/executor/FutureSPFResult.java?rev=1205834&r1=1205833&r2=1205834&view=diff
==============================================================================
--- 
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/executor/FutureSPFResult.java
 (original)
+++ 
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/executor/FutureSPFResult.java
 Thu Nov 24 13:58:59 2011
@@ -22,6 +22,7 @@ package org.apache.james.jspf.executor;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.james.jspf.core.Logger;
 import org.apache.james.jspf.core.SPFSession;
 
 
@@ -34,12 +35,19 @@ public class FutureSPFResult extends SPF
     private boolean isReady;
     private List<IFutureSPFResultListener> listeners;
     private int waiters;
+    private final Logger log;
     
     public FutureSPFResult() {
+        this.log = null;
         isReady = false;
     }
     
-    /**
+    public FutureSPFResult(Logger log) {
+        this.log = log;        
+        this.isReady = false;
+    }
+
+       /**
      * Set SPFResult using the given SPFsession
      * 
      * @param session 
@@ -54,7 +62,14 @@ public class FutureSPFResult extends SPF
             }
             if (listeners != null) {
                 for (IFutureSPFResultListener listener : listeners) {
-                    listener.onSPFResult(this);
+                    try {
+                        listener.onSPFResult(this);
+                    } catch (Throwable e) {
+                       // catch exception. See JSPF-95
+                        if (log != null) {
+                            log.warn("An exception was thrown by the listener 
" + listener, e);
+                        }
+                    }
                 }
             }
             listeners = null;

Modified: 
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/impl/SPF.java
URL: 
http://svn.apache.org/viewvc/james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/impl/SPF.java?rev=1205834&r1=1205833&r2=1205834&view=diff
==============================================================================
--- james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/impl/SPF.java 
(original)
+++ james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/impl/SPF.java 
Thu Nov 24 13:58:59 2011
@@ -310,7 +310,7 @@ public class SPF implements SPFChecker {
         spfData.pushChecker(resultHandler);
         spfData.pushChecker(this);
         
-        FutureSPFResult ret = new FutureSPFResult();
+        FutureSPFResult ret = new FutureSPFResult(log);
         
         executor.execute(spfData, ret);
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to