Class ImapRequestLineReader

java.lang.Object
com.icegreen.greenmail.imap.ImapRequestLineReader

public class ImapRequestLineReader extends Object
Wraps the client input reader with a bunch of convenience methods, allowing lookahead=1 on the underlying character stream. TODO need to look at encoding, and whether we should be wrapping an InputStream instead.
Version:
$Revision: 109034 $
Author:
Darrell DeBoer <darrell@apache.org>
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Sends a server command continuation request '+' back to the client, requesting more data to be sent.
    char
    Consumes the current character in the reader, so that subsequent calls to the request will provide a new character.
    void
     
    void
    debugRequest(boolean isLoginRequest, ImapSession session)
     
    void
    eol()
    Moves the request line reader to end of the line, checking that no non-space character are found.
    char
    Reads the next character in the current line.
    char
    Reads the next regular, non-space character in the current line.
    void
    read(char[] holder)
    Reads and consumes a number of characters from the underlying reader, filling the char array provided.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • nextWordChar

      public char nextWordChar() throws ProtocolException
      Reads the next regular, non-space character in the current line. Spaces are skipped over, but end-of-line characters will cause a ProtocolException to be thrown. This method will continue to return the same character until the consume() method is called.
      Returns:
      The next non-space character.
      Throws:
      ProtocolException - If the end-of-line or end-of-stream is reached.
    • nextChar

      public char nextChar() throws ProtocolException
      Reads the next character in the current line. This method will continue to return the same character until the consume() method is called.
      Returns:
      The next character.
      Throws:
      ProtocolException - If the end-of-stream is reached.
    • eol

      public void eol() throws ProtocolException
      Moves the request line reader to end of the line, checking that no non-space character are found.
      Throws:
      ProtocolException - If more non-space tokens are found in this line, or the end-of-file is reached.
    • consume

      public char consume() throws ProtocolException
      Consumes the current character in the reader, so that subsequent calls to the request will provide a new character. This method does *not* read the new character, or check if such a character exists. If no current character has been seen, the method moves to the next character, consumes it, and moves on to the subsequent one.
      Throws:
      ProtocolException - if a the current character can't be obtained (eg we're at end-of-file).
    • read

      public void read(char[] holder) throws ProtocolException
      Reads and consumes a number of characters from the underlying reader, filling the char array provided.
      Parameters:
      holder - A char array which will be filled with chars read from the underlying reader.
      Throws:
      ProtocolException - If a char can't be read into each array element.
    • commandContinuationRequest

      public void commandContinuationRequest() throws ProtocolException
      Sends a server command continuation request '+' back to the client, requesting more data to be sent.
      Throws:
      ProtocolException
    • consumeLine

      public void consumeLine() throws ProtocolException
      Throws:
      ProtocolException
    • debugRequest

      public void debugRequest(boolean isLoginRequest, ImapSession session)