View Javadoc

1   /************************************************************************
2    * Copyright (c) 1999-2006 The Apache Software Foundation.             *
3    * All rights reserved.                                                *
4    * ------------------------------------------------------------------- *
5    * Licensed under the Apache License, Version 2.0 (the "License"); you *
6    * may not use this file except in compliance with the License. You    *
7    * may obtain a copy of the License at:                                *
8    *                                                                     *
9    *     http://www.apache.org/licenses/LICENSE-2.0                      *
10   *                                                                     *
11   * Unless required by applicable law or agreed to in writing, software *
12   * distributed under the License is distributed on an "AS IS" BASIS,   *
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or     *
14   * implied.  See the License for the specific language governing       *
15   * permissions and limitations under the License.                      *
16   ***********************************************************************/
17  
18  package org.apache.james.smtpserver;
19  
20  import org.apache.james.util.mail.dsn.DSNStatus;
21  
22  /***
23    * Handles RSET command
24    */
25  public class RsetCmdHandler implements CommandHandler {
26      /***
27       * The name of the command handled by the command handler
28       */
29      private final static String COMMAND_NAME = "RSET";
30  
31      /*
32       * handles RSET command
33       *
34       * @see org.apache.james.smtpserver.CommandHandler#onCommand(SMTPSession)
35      **/
36      public void onCommand(SMTPSession session) {
37          doRSET(session, session.getCommandArgument());
38      }
39  
40  
41      /***
42       * Handler method called upon receipt of a RSET command.
43       * Resets message-specific, but not authenticated user, state.
44       *
45       * @param session SMTP session object
46       * @param argument the argument passed in with the command by the SMTP client
47       */
48      private void doRSET(SMTPSession session, String argument) {
49          String responseString = "";
50          if ((argument == null) || (argument.length() == 0)) {
51              // remember the ehlo mode
52              Object currentHeloMode = session.getState().get(SMTPSession.CURRENT_HELO_MODE);
53              session.resetState();
54              // start again with the old helo mode
55              if (currentHeloMode != null) {
56                  session.getState().put(SMTPSession.CURRENT_HELO_MODE,currentHeloMode);
57              }
58              responseString = "250 "+DSNStatus.getStatus(DSNStatus.SUCCESS,DSNStatus.UNDEFINED_STATUS)+" OK";
59          } else {
60              responseString = "500 "+DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_INVALID_ARG)+" Unexpected argument provided with RSET command";
61          }
62          session.writeResponse(responseString);
63      }
64  
65  
66  
67  }