org/sonews/daemon/command/CapabilitiesCommand.java
author chris <chris@marvin>
Wed, 01 Jul 2009 10:48:22 +0200
changeset 2 1090e2141798
parent 1 6fceb66e1ad7
child 3 2fdc9cc89502
permissions -rw-r--r--
sonews/0.5.1 fixes merged
     1 /*
     2  *   SONEWS News Server
     3  *   see AUTHORS for the list of contributors
     4  *
     5  *   This program is free software: you can redistribute it and/or modify
     6  *   it under the terms of the GNU General Public License as published by
     7  *   the Free Software Foundation, either version 3 of the License, or
     8  *   (at your option) any later version.
     9  *
    10  *   This program is distributed in the hope that it will be useful,
    11  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
    12  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    13  *   GNU General Public License for more details.
    14  *
    15  *   You should have received a copy of the GNU General Public License
    16  *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
    17  */
    18 
    19 package org.sonews.daemon.command;
    20 
    21 import java.io.IOException;
    22 import org.sonews.daemon.NNTPConnection;
    23 
    24 /**
    25  * <pre>
    26  * The CAPABILITIES command allows a client to determine the
    27  * capabilities of the server at any given time.
    28  *
    29  * This command MAY be issued at any time; the server MUST NOT require
    30  * it to be issued in order to make use of any capability. The response
    31  * generated by this command MAY change during a session because of
    32  * other state information (which, in turn, may be changed by the
    33  * effects of other commands or by external events).  An NNTP client is
    34  * only able to get the current and correct information concerning
    35  * available capabilities at any point during a session by issuing a
    36  * CAPABILITIES command at that point of that session and processing the
    37  * response.
    38  * </pre>
    39  * @author Christian Lins
    40  * @since sonews/0.5.0
    41  */
    42 public class CapabilitiesCommand extends AbstractCommand
    43 {
    44 
    45   protected static final String[] CAPABILITIES = new String[]
    46     {
    47       "VERSION 2", // MUST be the first one; VERSION 2 refers to RFC3977
    48       "READER",    // Server implements commands for reading
    49       "POST",      // Server implements POST command
    50       "OVER"       // Server implements OVER command
    51     };
    52   
    53   public CapabilitiesCommand(final NNTPConnection conn)
    54   {
    55     super(conn);
    56   }
    57 
    58   /**
    59    * First called after one call to processLine().
    60    * @return
    61    */
    62   @Override
    63   public boolean hasFinished()
    64   {
    65     return true;
    66   }
    67 
    68   @Override
    69   public void processLine(final String line)
    70     throws IOException
    71   {
    72     printStatus(101, "Capabilities list:");
    73     for(String cap : CAPABILITIES)
    74     {
    75       println(cap);
    76     }
    77     println(".");
    78   }
    79 
    80 }