1 17 18 package org.apache.james.imapserver.commands; 19 20 import org.apache.james.imapserver.AccessControlException; 21 import org.apache.james.imapserver.ImapRequest; 22 import org.apache.james.imapserver.ImapSession; 23 import org.apache.james.imapserver.ImapSessionState; 24 import org.apache.james.imapserver.MailboxException; 25 26 import java.util.ArrayList ; 27 import java.util.List ; 28 import java.util.StringTokenizer ; 29 30 35 class StatusCommand extends AuthenticatedSelectedStateCommand 36 { 37 public StatusCommand() 38 { 39 this.commandName = "STATUS"; 40 41 this.getArgs().add( new AstringArgument( "mailbox" ) ); 44 this.getArgs().add( new ListArgument( "status data item" ) ); 45 } 46 47 protected boolean doProcess( ImapRequest request, ImapSession session, List argValues ) 48 { 49 String command = this.getCommand(); 50 51 String folder = (String ) argValues.get( 0 ); 52 List dataNames = (List ) argValues.get( 1 ); 53 54 try { 55 String response = session.getImapHost().getMailboxStatus( session.getCurrentUser(), folder, 56 dataNames ); 57 session.untaggedResponse( " STATUS \"" + folder + "\" (" 58 + response + ")" ); 59 session.okResponse( command ); 60 } 61 catch ( MailboxException mbe ) { 62 if ( mbe.isRemote() ) { 63 session.noResponse( command , "[REFERRAL " 64 + mbe.getRemoteServer() + "]" 65 + SP + "Wrong server. Try remote." ); 66 } 67 else { 68 session.noResponse( command, "No such mailbox" ); 69 } 70 return true; 71 } 72 catch ( AccessControlException ace ) { 73 session.noResponse( command, "No such mailbox" ); 74 session.logACE( ace ); 75 return true; 76 } 77 if ( session.getState() == ImapSessionState.SELECTED ) { 78 session.checkSize(); 79 session.checkExpunge(); 80 } 81 return true; 82 } 83 } 84 | Popular Tags |