View Javadoc
1   /**
2      This file is part of GoldenGate Project (named also GoldenGate or GG).
3   
4      Copyright 2009, Frederic Bregier, and individual contributors by the @author
5      tags. See the COPYRIGHT.txt in the distribution for a full listing of
6      individual contributors.
7   
8      All GoldenGate Project is free software: you can redistribute it and/or 
9      modify it under the terms of the GNU General Public License as published 
10     by the Free Software Foundation, either version 3 of the License, or
11     (at your option) any later version.
12  
13     GoldenGate is distributed in the hope that it will be useful,
14     but WITHOUT ANY WARRANTY; without even the implied warranty of
15     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16     GNU General Public License for more details.
17  
18     You should have received a copy of the GNU General Public License
19     along with GoldenGate .  If not, see <http://www.gnu.org/licenses/>.
20   */
21  package goldengate.ftp.core.command.internal;
22  
23  import goldengate.common.command.ReplyCode;
24  import goldengate.common.command.exception.Reply503Exception;
25  import goldengate.common.logging.GgInternalLogger;
26  import goldengate.common.logging.GgInternalLoggerFactory;
27  import goldengate.ftp.core.command.AbstractCommand;
28  import goldengate.ftp.core.command.FtpCommandCode;
29  import goldengate.ftp.core.command.info.NOOP;
30  
31  /**
32   * Incorrect command
33   *
34   * @author Frederic Bregier
35   *
36   */
37  public class IncorrectCommand extends AbstractCommand {
38      /**
39       * Internal Logger
40       */
41      private static final GgInternalLogger logger = GgInternalLoggerFactory
42              .getLogger(IncorrectCommand.class);
43  
44      /*
45       * (non-Javadoc)
46       *
47       * @see goldengate.ftp.core.command.AbstractCommand#exec()
48       */
49      public void exec() throws Reply503Exception {
50          getSession().setReplyCode(
51                  ReplyCode.REPLY_503_BAD_SEQUENCE_OF_COMMANDS,
52                  "Bas sequence of commands: " + getCommand() + " following " +
53                          getSession().getPreviousCommand().getCommand());
54          logger.warn(getSession().getAnswer());
55          if (getSession().getPreviousCommand().getCode() != FtpCommandCode.Connection &&
56                  getSession().getPreviousCommand().getCode() != FtpCommandCode.PASS &&
57                  getSession().getPreviousCommand().getCode() != FtpCommandCode.USER) {
58              getSession().setNextCommand(new NOOP(getSession()));
59          } else {
60              invalidCurrentCommand();
61          }
62          throw new Reply503Exception(getSession().getReplyCode().getMesg());
63      }
64  }