Author: bago
Date: Wed May 10 09:28:20 2006
New Revision: 405790
URL: http://svn.apache.org/viewcvs?rev=405790&view=rev
Log:
Readded "lost" STAT command to the default POP3HandlerChain, Added more error
handling + logging to the PassCmdHandler (check the user inbox is valid), Fixed
POP3ServerTest to always provide an inbox to the mock mailserver (fix a
regression introduced in JAMES-487)
Modified:
james/server/trunk/src/java/org/apache/james/pop3server/POP3HandlerChain.java
james/server/trunk/src/java/org/apache/james/pop3server/PassCmdHandler.java
james/server/trunk/src/test/org/apache/james/pop3server/POP3ServerTest.java
Modified:
james/server/trunk/src/java/org/apache/james/pop3server/POP3HandlerChain.java
URL:
http://svn.apache.org/viewcvs/james/server/trunk/src/java/org/apache/james/pop3server/POP3HandlerChain.java?rev=405790&r1=405789&r2=405790&view=diff
==============================================================================
---
james/server/trunk/src/java/org/apache/james/pop3server/POP3HandlerChain.java
(original)
+++
james/server/trunk/src/java/org/apache/james/pop3server/POP3HandlerChain.java
Wed May 10 09:28:20 2006
@@ -72,6 +72,7 @@
cmds.setProperty("NOOP",NoopCmdHandler.class.getName());
cmds.setProperty("RETR",RetrCmdHandler.class.getName());
cmds.setProperty("TOP" ,TopCmdHandler.class.getName());
+ cmds.setProperty("STAT",StatCmdHandler.class.getName());
cmds.setProperty("QUIT",QuitCmdHandler.class.getName());
Enumeration e = cmds.keys();
while (e.hasMoreElements()) {
Modified:
james/server/trunk/src/java/org/apache/james/pop3server/PassCmdHandler.java
URL:
http://svn.apache.org/viewcvs/james/server/trunk/src/java/org/apache/james/pop3server/PassCmdHandler.java?rev=405790&r1=405789&r2=405790&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/pop3server/PassCmdHandler.java
(original)
+++ james/server/trunk/src/java/org/apache/james/pop3server/PassCmdHandler.java
Wed May 10 09:28:20 2006
@@ -17,10 +17,13 @@
package org.apache.james.pop3server;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.james.services.MailRepository;
+
/**
* Handles PASS command
*/
-public class PassCmdHandler implements CommandHandler {
+public class PassCmdHandler extends AbstractLogEnabled implements
CommandHandler {
/**
* @see org.apache.james.pop3server.CommandHandler#onCommand(POP3Session)
@@ -41,16 +44,27 @@
if (session.getHandlerState() == POP3Handler.AUTHENTICATION_USERSET &&
argument != null) {
String passArg = argument;
if
(session.getConfigurationData().getUsersRepository().test(session.getUser(),
passArg)) {
- StringBuffer responseBuffer =
- new StringBuffer(64)
- .append(POP3Handler.OK_RESPONSE)
- .append(" Welcome ")
- .append(session.getUser());
- responseString = responseBuffer.toString();
- session.setHandlerState(POP3Handler.TRANSACTION);
- session.writeResponse(responseString);
-
session.setUserInbox(session.getConfigurationData().getMailServer().getUserInbox(session.getUser()));
- session.stat();
+ try {
+ MailRepository inbox =
session.getConfigurationData().getMailServer().getUserInbox(session.getUser());
+ if (inbox == null) {
+ throw new IllegalStateException("MailServer returned a
null inbox for "+session.getUser());
+ }
+ session.setUserInbox(inbox);
+ session.stat();
+ StringBuffer responseBuffer =
+ new StringBuffer(64)
+ .append(POP3Handler.OK_RESPONSE)
+ .append(" Welcome ")
+ .append(session.getUser());
+ responseString = responseBuffer.toString();
+ session.setHandlerState(POP3Handler.TRANSACTION);
+ session.writeResponse(responseString);
+ } catch (RuntimeException e) {
+ getLogger().error("Unexpected error accessing mailbox for
"+session.getUser(),e);
+ responseString = POP3Handler.ERR_RESPONSE + " Unexpected
error accessing mailbox";
+ session.setHandlerState(POP3Handler.AUTHENTICATION_READY);
+ session.writeResponse(responseString);
+ }
} else {
responseString = POP3Handler.ERR_RESPONSE + " Authentication
failed.";
session.setHandlerState(POP3Handler.AUTHENTICATION_READY);
Modified:
james/server/trunk/src/test/org/apache/james/pop3server/POP3ServerTest.java
URL:
http://svn.apache.org/viewcvs/james/server/trunk/src/test/org/apache/james/pop3server/POP3ServerTest.java?rev=405790&r1=405789&r2=405790&view=diff
==============================================================================
--- james/server/trunk/src/test/org/apache/james/pop3server/POP3ServerTest.java
(original)
+++ james/server/trunk/src/test/org/apache/james/pop3server/POP3ServerTest.java
Wed May 10 09:28:20 2006
@@ -41,9 +41,9 @@
import org.columba.ristretto.pop3.POP3Response;
import org.columba.ristretto.pop3.ScanListEntry;
+import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import javax.mail.util.SharedByteArrayInputStream;
-import javax.mail.MessagingException;
import java.io.IOException;
import java.io.InputStream;
@@ -152,12 +152,15 @@
pop3Protocol.openPort();
m_usersRepository.addUser("foo", "bar");
+ m_mailServer.setUserInbox("foo", new MockMailRepository());
int res = 0;
+
try {
pop3Protocol.userPass("foo", "bar".toCharArray());
} catch (POP3Exception e) {
res = e.getResponse().getType();
+ fail("pass failed");
}
assertEquals(0, res);
@@ -186,6 +189,7 @@
String pass = "bar" + (new String(new char[] { 200, 210 })) + "foo";
m_usersRepository.addUser("foo", pass);
+ m_mailServer.setUserInbox("foo", new MockMailRepository());
int res = 0;
try {
@@ -281,6 +285,16 @@
res = 0;
entries = null;
+
+ try {
+ int[] stats = pop3Protocol.stat();
+ assertEquals(2, stats.length);
+ assertEquals(1, stats[0]);
+ assertEquals(92, stats[1]);
+ } catch (POP3Exception e) {
+ fail("stat failed");
+ }
+
try {
entries = pop3Protocol.list();
} catch (POP3Exception e) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]