Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.mortbay.http
Class HttpMessage  view HttpMessage download HttpMessage.java

java.lang.Object
  extended byorg.mortbay.http.HttpMessage
Direct Known Subclasses:
HttpRequest, HttpResponse

public abstract class HttpMessage
extends java.lang.Object

HTTP Message base. This class forms the basis of HTTP requests and replies. It provides header fields, content and optional trailer fields, while managing the state of the message.

Version:
$Id: HttpMessage.java,v 1.32 2003/11/22 16:06:02 gregwilkins Exp $

Nested Class Summary
static interface HttpMessage.HeaderWriter
           
 
Field Summary
static java.lang.String __HTTP_0_9
           
static java.lang.String __HTTP_1_0
           
static java.lang.String __HTTP_1_1
           
static java.lang.String __HTTP_1_X
           
static int __MSG_BAD
          Message States.
static int __MSG_EDITABLE
          Message States.
static int __MSG_RECEIVED
          Message States.
static int __MSG_SENDING
          Message States.
static int __MSG_SENT
          Message States.
static java.lang.String __SCHEME
           
static java.lang.String __SSL_SCHEME
           
static java.lang.String[] __state
           
protected  java.util.Map _attributes
           
protected  java.lang.String _characterEncoding
           
protected  HttpConnection _connection
           
protected  int _dotVersion
           
protected  HttpFields _header
           
protected  java.lang.String _mimeType
           
protected  int _state
           
protected  java.lang.String _version
           
protected  java.lang.Object _wrapper
           
private static org.apache.commons.logging.Log log
           
 
Constructor Summary
protected HttpMessage()
          Constructor.
protected HttpMessage(HttpConnection connection)
          Constructor.
 
Method Summary
 void addDateField(java.lang.String name, java.util.Date date)
          Adds the value of a date field.
 void addDateField(java.lang.String name, long date)
          Add the value of a date field.
 void addField(java.lang.String name, java.lang.String value)
          Add to a multi-value field value.
 void addIntField(java.lang.String name, int value)
          Adds the value of an integer field.
 boolean containsField(java.lang.String name)
          Does the header or trailer contain a field?
 void destroy()
          Destroy the message.
 java.lang.Object getAttribute(java.lang.String name)
          Get a request attribute.
 java.util.Enumeration getAttributeNames()
          Get Attribute names.
 java.lang.String getCharacterEncoding()
          Character Encoding.
 int getContentLength()
           
 java.lang.String getContentType()
           
 long getDateField(java.lang.String name)
          Get a header as a date value.
 int getDotVersion()
          Get the protocol version.
 java.lang.String getField(java.lang.String name)
          Get a message field.
 java.util.Enumeration getFieldNames()
          Get field names.
 java.util.Enumeration getFieldValues(java.lang.String name)
          Get a multi valued message field.
 java.util.Enumeration getFieldValues(java.lang.String name, java.lang.String separators)
          Get a multi valued message field.
 HttpFields getHeader()
          Get the HTTP header fields.
 HttpConnection getHttpConnection()
           
 java.io.InputStream getInputStream()
           
 int getIntField(java.lang.String name)
          Get a field as an integer value.
 java.lang.String getMimeType()
          Mime Type.
 java.io.OutputStream getOutputStream()
           
 int getState()
          Get the message state.
 java.lang.String getVersion()
          Get the protocol version.
 java.lang.Object getWrapper()
          Get an associated wrapper object.
 boolean isCommitted()
           
 boolean isDirty()
           
(package private)  void recycle(HttpConnection connection)
          Recycle the message.
 void removeAttribute(java.lang.String name)
          Remove a request attribute.
 java.lang.String removeField(java.lang.String name)
          Remove a field.
protected  void reset()
           
 java.lang.Object setAttribute(java.lang.String name, java.lang.Object attribute)
          Set a request attribute.
 void setCharacterEncoding(java.lang.String encoding)
          Set Character Encoding.
 void setContentLength(int len)
           
 void setContentType(java.lang.String contentType)
           
 void setDateField(java.lang.String name, java.util.Date date)
          Sets the value of a date field.
 void setDateField(java.lang.String name, long date)
          Sets the value of a date field.
 void setField(java.lang.String name, java.util.List value)
          Set a multi-value field value.
 java.lang.String setField(java.lang.String name, java.lang.String value)
          Set a field value.
protected  HttpFields setFields()
           
 void setIntField(java.lang.String name, int value)
          Sets the value of an integer field.
 int setState(int state)
          Set the message state.
 void setVersion(java.lang.String version)
          Set the request version
 void setWrapper(java.lang.Object wrapper)
          Set a wrapper object.
 java.lang.String toString()
          Convert to String.
 void updateMimeType()
           
(package private) abstract  void writeHeader(java.io.Writer writer)
          Write the message header.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

log

private static org.apache.commons.logging.Log log

__SCHEME

public static final java.lang.String __SCHEME
See Also:
Constant Field Values

__SSL_SCHEME

public static final java.lang.String __SSL_SCHEME
See Also:
Constant Field Values

__HTTP_0_9

public static final java.lang.String __HTTP_0_9
See Also:
Constant Field Values

__HTTP_1_0

public static final java.lang.String __HTTP_1_0
See Also:
Constant Field Values

__HTTP_1_1

public static final java.lang.String __HTTP_1_1
See Also:
Constant Field Values

__HTTP_1_X

public static final java.lang.String __HTTP_1_X
See Also:
Constant Field Values

__MSG_EDITABLE

public static final int __MSG_EDITABLE
Message States.

See Also:
Constant Field Values

__MSG_BAD

public static final int __MSG_BAD
Message States.

See Also:
Constant Field Values

__MSG_RECEIVED

public static final int __MSG_RECEIVED
Message States.

See Also:
Constant Field Values

__MSG_SENDING

public static final int __MSG_SENDING
Message States.

See Also:
Constant Field Values

__MSG_SENT

public static final int __MSG_SENT
Message States.

See Also:
Constant Field Values

__state

public static final java.lang.String[] __state

_state

protected int _state

_version

protected java.lang.String _version

_dotVersion

protected int _dotVersion

_header

protected HttpFields _header

_connection

protected HttpConnection _connection

_characterEncoding

protected java.lang.String _characterEncoding

_mimeType

protected java.lang.String _mimeType

_wrapper

protected java.lang.Object _wrapper

_attributes

protected java.util.Map _attributes
Constructor Detail

HttpMessage

protected HttpMessage()
Constructor.


HttpMessage

protected HttpMessage(HttpConnection connection)
Constructor.

Method Detail

setWrapper

public void setWrapper(java.lang.Object wrapper)
Set a wrapper object. A wrapper object is an object associated with this message and presents it with an different interface. The primary example of a HttpRequest facade is ServletHttpRequest. A single facade object may be associated with the message with this call and retrieved with the getFacade method.


getWrapper

public java.lang.Object getWrapper()
Get an associated wrapper object.


reset

protected void reset()

getHttpConnection

public HttpConnection getHttpConnection()

getInputStream

public java.io.InputStream getInputStream()

getOutputStream

public java.io.OutputStream getOutputStream()

getState

public int getState()
Get the message state.
 __MSG_EDITABLE = 0 - Created locally, all set methods enabled
 __MSG_BAD      = 1 - Bad message or send failure.
 __MSG_RECEIVED = 2 - Received from connection.
 __MSG_SENDING  = 3 - Headers sent.
 __MSG_SENT     = 4 - Entity and trailers sent.
 


setState

public int setState(int state)
Set the message state. This method should be used by experts only as it can prevent normal handling of a request/response.


getVersion

public java.lang.String getVersion()
Get the protocol version.


getDotVersion

public int getDotVersion()
Get the protocol version.


getFieldNames

public java.util.Enumeration getFieldNames()
Get field names.


containsField

public boolean containsField(java.lang.String name)
Does the header or trailer contain a field?


getField

public java.lang.String getField(java.lang.String name)
Get a message field. Get a field from a message header. If no header field is found, trailer fields are searched.


getFieldValues

public java.util.Enumeration getFieldValues(java.lang.String name)
Get a multi valued message field. Get a field from a message header. If no header field is found, trailer fields are searched.


getFieldValues

public java.util.Enumeration getFieldValues(java.lang.String name,
                                            java.lang.String separators)
Get a multi valued message field. Get a field from a message header. If no header field is found, trailer fields are searched.


setFields

protected HttpFields setFields()
                        throws java.lang.IllegalStateException

setField

public java.lang.String setField(java.lang.String name,
                                 java.lang.String value)
                          throws java.lang.IllegalStateException
Set a field value. If the message is editable, then a header field is set. Otherwise if the message is sending and a HTTP/1.1 version, then a trailer field is set.


setField

public void setField(java.lang.String name,
                     java.util.List value)
              throws java.lang.IllegalStateException
Set a multi-value field value. If the message is editable, then a header field is set. Otherwise if the meesage is sending and a HTTP/1.1 version, then a trailer field is set.


addField

public void addField(java.lang.String name,
                     java.lang.String value)
              throws java.lang.IllegalStateException
Add to a multi-value field value. If the message is editable, then a header field is set. Otherwise if the meesage is sending and a HTTP/1.1 version, then a trailer field is set.


getIntField

public int getIntField(java.lang.String name)
Get a field as an integer value. Look in header and trailer fields. Returns the value of an integer field, or -1 if not found. The case of the field name is ignored.


setIntField

public void setIntField(java.lang.String name,
                        int value)
                 throws java.lang.IllegalStateException
Sets the value of an integer field. Header or Trailer fields are set depending on message state.


addIntField

public void addIntField(java.lang.String name,
                        int value)
                 throws java.lang.IllegalStateException
Adds the value of an integer field. Header or Trailer fields are set depending on message state.


getDateField

public long getDateField(java.lang.String name)
Get a header as a date value. Look in header and trailer fields. Returns the value of a date field, or -1 if not found. The case of the field name is ignored.


setDateField

public void setDateField(java.lang.String name,
                         java.util.Date date)
Sets the value of a date field. Header or Trailer fields are set depending on message state.


addDateField

public void addDateField(java.lang.String name,
                         java.util.Date date)
Adds the value of a date field. Header or Trailer fields are set depending on message state.


setDateField

public void setDateField(java.lang.String name,
                         long date)
Sets the value of a date field. Header or Trailer fields are set depending on message state.


addDateField

public void addDateField(java.lang.String name,
                         long date)
Add the value of a date field. Header or Trailer fields are set depending on message state.


removeField

public java.lang.String removeField(java.lang.String name)
                             throws java.lang.IllegalStateException
Remove a field. If the message is editable, then a header field is removed. Otherwise if the message is sending and a HTTP/1.1 version, then a trailer field is removed.


setVersion

public void setVersion(java.lang.String version)
Set the request version


getHeader

public HttpFields getHeader()
Get the HTTP header fields.


getContentLength

public int getContentLength()

setContentLength

public void setContentLength(int len)

getCharacterEncoding

public java.lang.String getCharacterEncoding()
Character Encoding. The character encoding is extracted from the ContentType field when set.


setCharacterEncoding

public void setCharacterEncoding(java.lang.String encoding)
Set Character Encoding.


getContentType

public java.lang.String getContentType()

setContentType

public void setContentType(java.lang.String contentType)

updateMimeType

public void updateMimeType()

getMimeType

public java.lang.String getMimeType()
Mime Type. The mime type is extracted from the contenttype field when set.


recycle

void recycle(HttpConnection connection)
Recycle the message.


destroy

public void destroy()
Destroy the message. Help the garbage collector by nulling everything that we can.


toString

public java.lang.String toString()
Convert to String. The message header is converted to a String.


writeHeader

abstract void writeHeader(java.io.Writer writer)
                   throws java.io.IOException
Write the message header.


isCommitted

public boolean isCommitted()

isDirty

public boolean isDirty()

getAttribute

public java.lang.Object getAttribute(java.lang.String name)
Get a request attribute.


setAttribute

public java.lang.Object setAttribute(java.lang.String name,
                                     java.lang.Object attribute)
Set a request attribute.


getAttributeNames

public java.util.Enumeration getAttributeNames()
Get Attribute names.


removeAttribute

public void removeAttribute(java.lang.String name)
Remove a request attribute.