Author: norman
Date: Fri Sep 23 09:24:36 2011
New Revision: 1174606

URL: http://svn.apache.org/viewvc?rev=1174606&view=rev
Log:
Allow to extend this class

Modified:
    
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java

Modified: 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java?rev=1174606&r1=1174605&r2=1174606&view=diff
==============================================================================
--- 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java
 (original)
+++ 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java
 Fri Sep 23 09:24:36 2011
@@ -44,7 +44,7 @@ import org.apache.james.protocols.smtp.h
  * error to the client to report the problem while trying to queue the message 
  *
  */
-public final class DataLineMessageHookHandler implements DataLineFilter, 
ExtensibleHandler {
+public class DataLineMessageHookHandler implements DataLineFilter, 
ExtensibleHandler {
 
     
     private List messageHandlers;
@@ -66,8 +66,7 @@ public final class DataLineMessageHookHa
                 out.flush();
                 out.close();
                 
-                processExtensions(session, env);
-                session.popLineHandler();
+                session.writeResponse(processExtensions(session, env));
 
             // DotStuffing.
             } else if (line[0] == 46 && line[1] == 46) {
@@ -89,6 +88,9 @@ public final class DataLineMessageHookHa
                     "Unknown error occurred while processing DATA.", e);
             session.writeResponse(response);
             return;
+        } finally {
+            // do the clean up
+            session.resetState();
         }
     }
 
@@ -96,13 +98,13 @@ public final class DataLineMessageHookHa
     /**
      * @param session
      */
-    private void processExtensions(SMTPSession session, MailEnvelopeImpl mail) 
{
-        boolean match = false;
-        if(mail != null && messageHandlers != null) {
-            try {
+    protected SMTPResponse processExtensions(SMTPSession session, 
MailEnvelopeImpl mail) {
+        try {
+
+            if (mail != null && messageHandlers != null) {
                 int count = messageHandlers.size();
-                for(int i =0; i < count; i++) {
-                    MessageHook rawHandler =  (MessageHook) 
messageHandlers.get(i);
+                for (int i = 0; i < count; i++) {
+                    MessageHook rawHandler = (MessageHook) 
messageHandlers.get(i);
                     session.getLogger().debug("executing message handler " + 
rawHandler);
 
                     long start = System.currentTimeMillis();
@@ -113,34 +115,33 @@ public final class DataLineMessageHookHa
                         for (int i2 = 0; i2 < rHooks.size(); i2++) {
                             Object rHook = rHooks.get(i2);
                             session.getLogger().debug("executing hook " + 
rHook);
-                            
+
                             hRes = ((HookResultHook) 
rHook).onHookResult(session, hRes, executionTime, rawHandler);
                         }
                     }
-                    
+
                     SMTPResponse response = 
AbstractHookableCmdHandler.calcDefaultSMTPResponse(hRes);
-                    
-                    //if the response is received, stop processing of command 
handlers
-                    if(response != null) {
-                        session.writeResponse(response);
-                        match = true;
-                        break;
+
+                    // if the response is received, stop processing of command
+                    // handlers
+                    if (response != null) {
+                        return response;
                     }
                 }
-                if (match == false) {
-                    // Not queue the message!
-                    SMTPResponse response = 
AbstractHookableCmdHandler.calcDefaultSMTPResponse(new 
HookResult(HookReturnCode.DENY));
-                    session.writeResponse(response);
-                    
-                }
-            } finally {
-               
-                //do the clean up
-                session.resetState();
+
+                // Not queue the message!
+                SMTPResponse response = 
AbstractHookableCmdHandler.calcDefaultSMTPResponse(new 
HookResult(HookReturnCode.DENY));
+                return response;
+
+          
             }
+        } finally {
+
+            session.popLineHandler();
         }
+        return null;
     }
-    
+
     /**
      * @see 
org.apache.james.protocols.api.handler.ExtensibleHandler#wireExtensions(java.lang.Class,
 java.util.List)
      */
@@ -148,14 +149,17 @@ public final class DataLineMessageHookHa
     public void wireExtensions(Class interfaceName, List extension) throws 
WiringException {
         if (MessageHook.class.equals(interfaceName)) {
             this.messageHandlers = extension;
-            if (messageHandlers.size() == 0) {
-                throw new WiringException("No messageHandler configured");
-            }
+            checkMessageHookCount(messageHandlers);
         } else if (HookResultHook.class.equals(interfaceName)) {
             this.rHooks = extension;
         }
     }
 
+    protected void checkMessageHookCount(List messageHandlers) throws 
WiringException {
+        if (messageHandlers.size() == 0) {
+            throw new WiringException("No messageHandler configured");
+        }
+    }
     /**
      * @see 
org.apache.james.protocols.api.handler.ExtensibleHandler#getMarkerInterfaces()
      */



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to