com.sun.mail.iap
Class Protocol

java.lang.Object
  extended by com.sun.mail.iap.Protocol
Direct Known Subclasses:
IMAPProtocol

public class Protocol
extends Object

General protocol handling code for IMAP-like protocols.

The Protocol object is multithread safe.

Author:
John Mani, Max Spivak, Bill Shannon

Field Summary
protected  boolean debug
           
protected  String host
           
protected  PrintStream out
           
protected  String prefix
           
protected  Properties props
           
protected  boolean quote
           
 
Constructor Summary
Protocol(InputStream in, OutputStream out, boolean debug)
          Constructor for debugging.
Protocol(String host, int port, boolean debug, PrintStream out, Properties props, String prefix, boolean isSSL)
          Constructor.
 
Method Summary
 void addResponseHandler(ResponseHandler h)
          Adds a response handler.
 Response[] command(String command, Argument args)
          Send a command to the server.
protected  void disconnect()
          Disconnect.
protected  void finalize()
          Finalizer.
protected  ResponseInputStream getInputStream()
          Return the Protocol's InputStream.
protected  String getLocalHost()
          Get the name of the local host.
protected  OutputStream getOutputStream()
          Return the Protocol's OutputStream
protected  ByteArray getResponseBuffer()
          Return a buffer to be used to read a response.
 long getTimestamp()
          Returns the timestamp.
 void handleResult(Response response)
          Convenience routine to handle OK, NO, BAD and BYE responses.
 void notifyResponseHandlers(Response[] responses)
          Notify response handlers
protected  void processGreeting(Response r)
           
 Response readResponse()
           
 void removeResponseHandler(ResponseHandler h)
          Removed the specified response handler.
 void simpleCommand(String cmd, Argument args)
          Convenience routine to handle simple IAP commands that do not have responses specific to that command.
 void startTLS(String cmd)
          Start TLS on the current connection.
protected  boolean supportsNonSyncLiterals()
          Returns whether this Protocol supports non-synchronizing literals Default is false.
 String writeCommand(String command, Argument args)
           
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

host

protected String host

debug

protected boolean debug

quote

protected boolean quote

out

protected PrintStream out

props

protected Properties props

prefix

protected String prefix
Constructor Detail

Protocol

public Protocol(String host,
                int port,
                boolean debug,
                PrintStream out,
                Properties props,
                String prefix,
                boolean isSSL)
         throws IOException,
                ProtocolException
Constructor.

Opens a connection to the given host at given port.

Parameters:
host - host to connect to
port - portnumber to connect to
debug - debug mode
out - debug output stream
props - Properties object used by this protocol
prefix - Prefix to prepend to property keys
Throws:
IOException
ProtocolException

Protocol

public Protocol(InputStream in,
                OutputStream out,
                boolean debug)
         throws IOException
Constructor for debugging.

Throws:
IOException
Method Detail

getTimestamp

public long getTimestamp()
Returns the timestamp.


addResponseHandler

public void addResponseHandler(ResponseHandler h)
Adds a response handler.


removeResponseHandler

public void removeResponseHandler(ResponseHandler h)
Removed the specified response handler.


notifyResponseHandlers

public void notifyResponseHandlers(Response[] responses)
Notify response handlers


processGreeting

protected void processGreeting(Response r)
                        throws ProtocolException
Throws:
ProtocolException

getInputStream

protected ResponseInputStream getInputStream()
Return the Protocol's InputStream.


getOutputStream

protected OutputStream getOutputStream()
Return the Protocol's OutputStream


supportsNonSyncLiterals

protected boolean supportsNonSyncLiterals()
Returns whether this Protocol supports non-synchronizing literals Default is false. Subclasses should override this if required


readResponse

public Response readResponse()
                      throws IOException,
                             ProtocolException
Throws:
IOException
ProtocolException

getResponseBuffer

protected ByteArray getResponseBuffer()
Return a buffer to be used to read a response. The default implementation returns null, which causes a new buffer to be allocated for every response.

Since:
JavaMail 1.4.1

writeCommand

public String writeCommand(String command,
                           Argument args)
                    throws IOException,
                           ProtocolException
Throws:
IOException
ProtocolException

command

public Response[] command(String command,
                          Argument args)
Send a command to the server. Collect all responses until either the corresponding command completion response or a BYE response (indicating server failure). Return all the collected responses.

Parameters:
command - the command
args - the arguments
Returns:
array of Response objects returned by the server

handleResult

public void handleResult(Response response)
                  throws ProtocolException
Convenience routine to handle OK, NO, BAD and BYE responses.

Throws:
ProtocolException

simpleCommand

public void simpleCommand(String cmd,
                          Argument args)
                   throws ProtocolException
Convenience routine to handle simple IAP commands that do not have responses specific to that command.

Throws:
ProtocolException

startTLS

public void startTLS(String cmd)
              throws IOException,
                     ProtocolException
Start TLS on the current connection. cmd is the command to issue to start TLS negotiation. If the command succeeds, we begin TLS negotiation.

Throws:
IOException
ProtocolException

disconnect

protected void disconnect()
Disconnect.


getLocalHost

protected String getLocalHost()
Get the name of the local host. The property .localhost overrides .localaddress, which overrides what InetAddress would tell us.


finalize

protected void finalize()
                 throws Throwable
Finalizer.

Overrides:
finalize in class Object
Throws:
Throwable


Copyright © 2011 Sun Microsystems, Inc.. All Rights Reserved.