1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.sf.wallace.messages;
20
21 import javax.mail.Folder;
22 import javax.mail.MessagingException;
23
24 import net.sf.wallace.Command;
25 import net.sf.wallace.ServerResponse;
26 import net.sf.wallace.WallaceSession;
27 import net.sf.wallace.WallaceSessionState;
28 import net.sf.wallace.commands.SelectCommand;
29
30 import org.apache.commons.logging.Log;
31 import org.apache.commons.logging.LogFactory;
32
33 /***
34 * A close command.
35 *
36 * @author rnewson
37 */
38 public final class CloseMessage extends AbstractMessage {
39
40 protected Log log = LogFactory.getLog(getClass());
41
42 public Command getCommand() {
43 return new CloseCommand();
44 }
45
46 private final class CloseCommand extends SelectCommand {
47
48 protected void onExecute(final WallaceSession wallaceSession) {
49 final Folder folder = wallaceSession.getSelectedFolder();
50 try {
51 folder.close(true);
52 } catch (final MessagingException e) {
53 log.warn("Unable to cleanly close " + folder, e);
54 }
55 wallaceSession.setSelectedFolder(null);
56 wallaceSession.setState(WallaceSessionState.AUTHENTICATED);
57 wallaceSession.respond(new ServerResponse(CloseMessage.this, "OK CLOSE"));
58 }
59 }
60
61 }