Author: norman
Date: Wed Dec 27 09:03:44 2006
New Revision: 490540

URL: http://svn.apache.org/viewvc?view=rev&rev=490540
Log:
Create an HookResult to use in the hook calls. See JAMES-750

Added:
    
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HookResult.java
   (with props)
Modified:
    
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/RcptCmdHandler.java
    
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/MaxRcptHandler.java
    
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/RcptHook.java
    
james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/MaxRcptHandlerTest.java

Modified: 
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/RcptCmdHandler.java
URL: 
http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/RcptCmdHandler.java?view=diff&rev=490540&r1=490539&r2=490540
==============================================================================
--- 
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/RcptCmdHandler.java
 (original)
+++ 
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/RcptCmdHandler.java
 Wed Dec 27 09:03:44 2006
@@ -32,6 +32,7 @@
 import org.apache.james.smtpserver.ExtensibleHandler;
 import org.apache.james.smtpserver.SMTPResponse;
 import org.apache.james.smtpserver.SMTPSession;
+import org.apache.james.smtpserver.hook.HookResult;
 import org.apache.james.smtpserver.hook.RcptHook;
 import org.apache.james.util.mail.SMTPRetCode;
 import org.apache.james.util.mail.dsn.DSNStatus;
@@ -52,7 +53,7 @@
      * @see 
org.apache.james.smtpserver.CommandHandler#onCommand(org.apache.james.smtpserver.SMTPSession,
 java.lang.String, java.lang.String) 
     **/
     public SMTPResponse onCommand(SMTPSession session, String command, String 
parameters) {
-        SMTPResponse response = doRCPTFilter(session,parameters);
+        SMTPResponse response = doRCPTSyntaxFilter(session,parameters);
     
         if (response == null) {
             response = processExtensions(session);
@@ -76,10 +77,16 @@
             int count = rcptHooks.size();
             for(int i =0; i < count; i++) {
                     
-                int rCode = ((RcptHook) rcptHooks.get(i)).doRcpt(session, 
(MailAddress) session.getState().get(SMTPSession.SENDER), (MailAddress) 
session.getState().get(SMTPSession.CURRENT_RECIPIENT));
-                    
+                HookResult result = ((RcptHook) 
rcptHooks.get(i)).doRcpt(session, (MailAddress) 
session.getState().get(SMTPSession.SENDER), (MailAddress) 
session.getState().get(SMTPSession.CURRENT_RECIPIENT));
+                int rCode = result.getResult();
+                String smtpRetCode = result.getSmtpRetCode();
+                String smtpDesc = result.getSmtpDescription();
+                
                 if (rCode == RcptHook.DENY) {
-                    return new 
SMTPResponse(SMTPRetCode.TRANSACTION_FAILED,"Email rejected");
+                    if (smtpRetCode == null) smtpRetCode = 
SMTPRetCode.TRANSACTION_FAILED;
+                    if (smtpDesc == null) smtpDesc = "Email rejected";
+                    
+                    return new SMTPResponse(smtpRetCode, smtpDesc);
                 }else if (rCode == RcptHook.DENYSOFT) {
                     return new SMTPResponse(SMTPRetCode.LOCAL_ERROR,"Temporary 
problem. Please try again later");
                 }
@@ -121,7 +128,7 @@
      * @param session SMTP session object
      * @param argument the argument passed in with the command by the SMTP 
client
      */
-    private SMTPResponse doRCPTFilter(SMTPSession session, String argument) {
+    private SMTPResponse doRCPTSyntaxFilter(SMTPSession session, String 
argument) {
         String recipient = null;
         if ((argument != null) && (argument.indexOf(":") > 0)) {
             int colonIndex = argument.indexOf(":");
@@ -304,18 +311,18 @@
      * @see org.apache.james.smtpserver.ExtensibleHandler#getMarkerInterfaces()
      */
     public List getMarkerInterfaces() {
-    List classes = new ArrayList(1);
-    classes.add(RcptHook.class);
-    return classes;
+        List classes = new ArrayList(1);
+        classes.add(RcptHook.class);
+        return classes;
     }
 
     /**
      * @see 
org.apache.james.smtpserver.ExtensibleHandler#wireExtensions(java.lang.Class, 
java.util.List)
      */
     public void wireExtensions(Class interfaceName, List extension) {
-    if (RcptHook.class.equals(interfaceName)) {
+        if (RcptHook.class.equals(interfaceName)) {
             this.rcptHooks = extension; 
-    }
+        }
 
     }
 

Modified: 
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/MaxRcptHandler.java
URL: 
http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/MaxRcptHandler.java?view=diff&rev=490540&r1=490539&r2=490540
==============================================================================
--- 
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/MaxRcptHandler.java
 (original)
+++ 
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/MaxRcptHandler.java
 Wed Dec 27 09:03:44 2006
@@ -26,6 +26,7 @@
 import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
 import org.apache.james.smtpserver.SMTPSession;
+import org.apache.james.smtpserver.hook.HookResult;
 import org.apache.james.smtpserver.hook.RcptHook;
 
 import org.apache.mailet.MailAddress;
@@ -65,11 +66,11 @@
     /**
      * @see 
org.apache.james.smtpserver.hook.RcptHook#doRcpt(org.apache.james.smtpserver.SMTPSession,
 org.apache.mailet.MailAddress, org.apache.mailet.MailAddress)
      */
-    public int doRcpt(SMTPSession session, MailAddress sender, MailAddress 
rcpt) {
+    public HookResult doRcpt(SMTPSession session, MailAddress sender, 
MailAddress rcpt) {
         if ((session.getRcptCount() + 1) > maxRcpt) {
-            return RcptHook.DENY;
+            return new HookResult(RcptHook.DENY);
         } else {
-            return RcptHook.OK;
+            return new HookResult(RcptHook.OK);
         }
     }
 

Added: 
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HookResult.java
URL: 
http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HookResult.java?view=auto&rev=490540
==============================================================================
--- 
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HookResult.java
 (added)
+++ 
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HookResult.java
 Wed Dec 27 09:03:44 2006
@@ -0,0 +1,53 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.smtpserver.hook;
+
+public class HookResult {
+
+    private int result;
+    private String smtpRetCode;
+    private String smtpDescription;
+    
+    public HookResult(int result, String smtpRetCode, String smtpDescription) {
+        this.result = result;
+        this.smtpRetCode = smtpRetCode;
+        this.smtpDescription = smtpDescription;
+    }
+    
+    public HookResult(int result, String smtpDescription) {
+        this(result,null,smtpDescription);
+    }
+    
+    public HookResult(int result) {
+        this(result,null,null);
+    }
+    
+    public int getResult() {
+        return result;
+    }
+    
+    public String getSmtpRetCode() {
+        return smtpRetCode;
+    }
+    
+    public String getSmtpDescription() {
+        return smtpDescription;
+    }
+}

Propchange: 
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HookResult.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/RcptHook.java
URL: 
http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/RcptHook.java?view=diff&rev=490540&r1=490539&r2=490540
==============================================================================
--- 
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/RcptHook.java
 (original)
+++ 
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/RcptHook.java
 Wed Dec 27 09:03:44 2006
@@ -28,6 +28,6 @@
     public final static int DENY = 1;
     public final static int DENYSOFT = 2;
     
-    public int doRcpt(SMTPSession session, MailAddress sender, MailAddress 
rcpt);
+    public HookResult doRcpt(SMTPSession session, MailAddress sender, 
MailAddress rcpt);
 
 }

Modified: 
james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/MaxRcptHandlerTest.java
URL: 
http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/MaxRcptHandlerTest.java?view=diff&rev=490540&r1=490539&r2=490540
==============================================================================
--- 
james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/MaxRcptHandlerTest.java
 (original)
+++ 
james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/MaxRcptHandlerTest.java
 Wed Dec 27 09:03:44 2006
@@ -67,7 +67,7 @@
     
         //handler.setAction("reject");
         handler.setMaxRcpt(2);
-        int resp = handler.doRcpt(session,null,new MailAddress("[EMAIL 
PROTECTED]"));
+        int resp = handler.doRcpt(session,null,new MailAddress("[EMAIL 
PROTECTED]")).getResult();
     
         assertEquals("Rejected.. To many recipients", resp, RcptHook.DENY);
     }
@@ -98,7 +98,7 @@
     
 
         handler.setMaxRcpt(4);
-        int resp = handler.doRcpt(session,null,new MailAddress("[EMAIL 
PROTECTED]"));
+        int resp = handler.doRcpt(session,null,new MailAddress("[EMAIL 
PROTECTED]")).getResult();
         
         assertEquals("Not Rejected..", resp, RcptHook.OK);
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to