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]