1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.apache.james.pop3server;
23
24 import org.apache.avalon.framework.logger.AbstractLogEnabled;
25 import org.apache.commons.collections.ListUtils;
26
27 import java.util.List;
28
29
30
31
32 public class QuitCmdHandler extends AbstractLogEnabled implements CommandHandler {
33
34
35
36
37 public void onCommand(POP3Session session) {
38 doQUIT(session,session.getCommandArgument());
39 }
40
41
42
43
44
45
46
47 private void doQUIT(POP3Session session,String argument) {
48 String responseString = null;
49 if (session.getHandlerState() == POP3Handler.AUTHENTICATION_READY || session.getHandlerState() == POP3Handler.AUTHENTICATION_USERSET) {
50 responseString = POP3Handler.OK_RESPONSE + " Apache James POP3 Server signing off.";
51 session.writeResponse(responseString);
52 session.endSession();
53 return;
54 }
55 List toBeRemoved = ListUtils.subtract(session.getBackupUserMailbox(), session.getUserMailbox());
56 try {
57 session.getUserInbox().remove(toBeRemoved);
58
59
60
61
62 responseString = POP3Handler.OK_RESPONSE + " Apache James POP3 Server signing off.";
63 session.writeResponse(responseString);
64 } catch (Exception ex) {
65 responseString = POP3Handler.ERR_RESPONSE + " Some deleted messages were not removed";
66 session.writeResponse(responseString);
67 getLogger().error("Some deleted messages were not removed: " + ex.getMessage());
68 }
69 session.endSession();
70 }
71
72
73 }