Class ImapRequestLineReader


  • public class ImapRequestLineReader
    extends java.lang.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
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void commandContinuationRequest()
      Sends a server command continuation request '+' back to the client, requesting more data to be sent.
      char consume()
      Consumes the current character in the reader, so that subsequent calls to the request will provide a new character.
      void consumeLine()  
      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 nextChar()
      Reads the next character in the current line.
      char nextWordChar()
      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 Detail

      • 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
      • debugRequest

        public void debugRequest​(boolean isLoginRequest,
                                 ImapSession session)