org.mortbay.jetty
Class HttpFields

java.lang.Object
  extended by org.mortbay.jetty.HttpFields

public class HttpFields
extends Object

HTTP Fields. A collection of HTTP header and or Trailer fields. This class is not synchronized and needs to be protected from concurrent access. This class is not synchronized as it is expected that modifications will only be performed by a single thread.

Author:
Greg Wilkins (gregw)

Nested Class Summary
static class HttpFields.Field
           
 
Field Summary
static String __01Jan1970
           
static Buffer __01Jan1970_BUFFER
           
static DateCache __dateCache
           
static String __separators
           
protected  HashMap _bufferMap
           
protected  SimpleDateFormat[] _dateReceive
           
protected  ArrayList _fields
           
protected  int _revision
           
 
Constructor Summary
HttpFields()
          Constructor.
 
Method Summary
 void add(Buffer name, Buffer value)
          Add to or set a field.
 void add(HttpFields fields)
          Add fields from another HttpFields instance.
 void add(String name, String value)
          Add to or set a field.
 void addDateField(String name, long date)
          Sets the value of a date field.
 void addLongField(Buffer name, long value)
          Sets the value of an long field.
 void addLongField(String name, long value)
          Sets the value of an long field.
 void addSetCookie(Cookie cookie)
          Format a set cookie value
 void clear()
          Clear the header.
 boolean containsKey(Buffer name)
           
 boolean containsKey(String name)
           
 void destroy()
          Destroy the header.
static String formatDate(Calendar calendar, boolean cookie)
          Format HTTP date "EEE, dd MMM yyyy HH:mm:ss 'GMT'" or "EEE, dd-MMM-yy HH:mm:ss 'GMT'"for cookies
static String formatDate(long date, boolean cookie)
          Format HTTP date "EEE, dd MMM yyyy HH:mm:ss 'GMT'" or "EEE, dd-MMM-yy HH:mm:ss 'GMT'"for cookies
static void formatDate(StringBuffer buf, Calendar calendar, boolean cookie)
          Format HTTP date "EEE, dd MMM yyyy HH:mm:ss 'GMT'" or "EEE, dd-MMM-yy HH:mm:ss 'GMT'"for cookies
static String formatDate(StringBuffer buf, long date, boolean cookie)
          Format HTTP date "EEE, dd MMM yyyy HH:mm:ss 'GMT'" or "EEE, dd-MMM-yy HH:mm:ss 'GMT'"for cookies
 Buffer get(Buffer name)
           
 long getDateField(String name)
          Get a header as a date value.
 Enumeration getFieldNames()
          Get enumeration of header _names.
 Iterator getFields()
          Get enumeration of Fields Returns an enumeration of Fields for this request.
 long getLongField(Buffer name)
          Get a header as an long value.
 long getLongField(String name)
          Get a header as an long value.
static Float getQuality(String value)
           
 String getStringField(Buffer name)
           
 String getStringField(String name)
           
 Enumeration getValues(Buffer name)
          Get multi headers
 Enumeration getValues(String name)
          Get multi headers
 Enumeration getValues(String name, String separators)
          Get multi field values with separator.
 void put(Buffer buffer)
           
 void put(Buffer name, Buffer value)
          Set a field.
 void put(Buffer name, String value)
          Set a field.
 void put(String name, List list)
          Set a field.
 void put(String name, String value)
          Set a field.
 void putDateField(Buffer name, long date)
          Sets the value of a date field.
 void putDateField(String name, long date)
          Sets the value of a date field.
 void putLongField(Buffer name, long value)
          Sets the value of an long field.
 void putLongField(String name, long value)
          Sets the value of an long field.
static List qualityList(Enumeration e)
          List values in quality order.
 void remove(Buffer name)
          Remove a field.
 void remove(String name)
          Remove a field.
 String toString()
           
static String valueParameters(String value, Map parameters)
          Get field value parameters.
 void write(Writer writer)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

__separators

public static final String __separators
See Also:
Constant Field Values

__dateCache

public static final DateCache __dateCache

__01Jan1970

public static final String __01Jan1970

__01Jan1970_BUFFER

public static final Buffer __01Jan1970_BUFFER

_fields

protected ArrayList _fields

_revision

protected int _revision

_bufferMap

protected HashMap _bufferMap

_dateReceive

protected SimpleDateFormat[] _dateReceive
Constructor Detail

HttpFields

public HttpFields()
Constructor.

Method Detail

formatDate

public static String formatDate(long date,
                                boolean cookie)
Format HTTP date "EEE, dd MMM yyyy HH:mm:ss 'GMT'" or "EEE, dd-MMM-yy HH:mm:ss 'GMT'"for cookies


formatDate

public static String formatDate(Calendar calendar,
                                boolean cookie)
Format HTTP date "EEE, dd MMM yyyy HH:mm:ss 'GMT'" or "EEE, dd-MMM-yy HH:mm:ss 'GMT'"for cookies


formatDate

public static String formatDate(StringBuffer buf,
                                long date,
                                boolean cookie)
Format HTTP date "EEE, dd MMM yyyy HH:mm:ss 'GMT'" or "EEE, dd-MMM-yy HH:mm:ss 'GMT'"for cookies


formatDate

public static void formatDate(StringBuffer buf,
                              Calendar calendar,
                              boolean cookie)
Format HTTP date "EEE, dd MMM yyyy HH:mm:ss 'GMT'" or "EEE, dd-MMM-yy HH:mm:ss 'GMT'"for cookies


getFieldNames

public Enumeration getFieldNames()
Get enumeration of header _names. Returns an enumeration of strings representing the header _names for this request.


getFields

public Iterator getFields()
Get enumeration of Fields Returns an enumeration of Fields for this request.


containsKey

public boolean containsKey(Buffer name)

containsKey

public boolean containsKey(String name)

getStringField

public String getStringField(String name)
Parameters:
name - the case-insensitive field name
Returns:
the value of a field, or null if not found. For multiple fields of the same name, only the first is returned.

getStringField

public String getStringField(Buffer name)
Parameters:
name - the case-insensitive field name
Returns:
the value of a field, or null if not found. For multiple fields of the same name, only the first is returned.

get

public Buffer get(Buffer name)
Parameters:
name - the case-insensitive field name
Returns:
the value of a field, or null if not found. For multiple fields of the same name, only the first is returned.

getValues

public Enumeration getValues(String name)
Get multi headers

Parameters:
name - the case-insensitive field name
Returns:
Enumeration of the values, or null if no such header.

getValues

public Enumeration getValues(Buffer name)
Get multi headers

Parameters:
name - the case-insensitive field name
Returns:
Enumeration of the value Strings, or null if no such header.

getValues

public Enumeration getValues(String name,
                             String separators)
Get multi field values with separator. The multiple values can be represented as separate headers of the same name, or by a single header using the separator(s), or a combination of both. Separators may be quoted.

Parameters:
name - the case-insensitive field name
separators - String of separators.
Returns:
Enumeration of the values, or null if no such header.

put

public void put(String name,
                String value)
Set a field.

Parameters:
name - the name of the field
value - the value of the field. If null the field is cleared.

put

public void put(Buffer name,
                String value)
Set a field.

Parameters:
name - the name of the field
value - the value of the field. If null the field is cleared.

put

public void put(Buffer name,
                Buffer value)
Set a field.

Parameters:
name - the name of the field
value - the value of the field. If null the field is cleared.

put

public void put(String name,
                List list)
Set a field.

Parameters:
name - the name of the field
list - the List value of the field. If null the field is cleared.

add

public void add(String name,
                String value)
         throws IllegalArgumentException
Add to or set a field. If the field is allowed to have multiple values, add will add multiple headers of the same name.

Parameters:
name - the name of the field
value - the value of the field.
Throws:
IllegalArgumentException - If the name is a single valued field and already has a value.

add

public void add(Buffer name,
                Buffer value)
         throws IllegalArgumentException
Add to or set a field. If the field is allowed to have multiple values, add will add multiple headers of the same name.

Parameters:
name - the name of the field
value - the value of the field.
Throws:
IllegalArgumentException - If the name is a single valued field and already has a value.

remove

public void remove(String name)
Remove a field.

Parameters:
name -

remove

public void remove(Buffer name)
Remove a field.

Parameters:
name -

getLongField

public long getLongField(String name)
                  throws NumberFormatException
Get a header as an long value. Returns the value of an integer field or -1 if not found. The case of the field name is ignored.

Parameters:
name - the case-insensitive field name
Throws:
NumberFormatException - If bad long found

getLongField

public long getLongField(Buffer name)
                  throws NumberFormatException
Get a header as an long value. Returns the value of an integer field or -1 if not found. The case of the field name is ignored.

Parameters:
name - the case-insensitive field name
Throws:
NumberFormatException - If bad long found

getDateField

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

Parameters:
name - the case-insensitive field name

putLongField

public void putLongField(Buffer name,
                         long value)
Sets the value of an long field.

Parameters:
name - the field name
value - the field long value

putLongField

public void putLongField(String name,
                         long value)
Sets the value of an long field.

Parameters:
name - the field name
value - the field long value

addLongField

public void addLongField(String name,
                         long value)
Sets the value of an long field.

Parameters:
name - the field name
value - the field long value

addLongField

public void addLongField(Buffer name,
                         long value)
Sets the value of an long field.

Parameters:
name - the field name
value - the field long value

putDateField

public void putDateField(Buffer name,
                         long date)
Sets the value of a date field.

Parameters:
name - the field name
date - the field date value

putDateField

public void putDateField(String name,
                         long date)
Sets the value of a date field.

Parameters:
name - the field name
date - the field date value

addDateField

public void addDateField(String name,
                         long date)
Sets the value of a date field.

Parameters:
name - the field name
date - the field date value

addSetCookie

public void addSetCookie(Cookie cookie)
Format a set cookie value

Parameters:
cookie - The cookie.
cookie2 - If true, use the alternate cookie 2 header

write

public void write(Writer writer)
           throws IOException
Throws:
IOException

put

public void put(Buffer buffer)
         throws IOException
Throws:
IOException

toString

public String toString()
Overrides:
toString in class Object

clear

public void clear()
Clear the header.


destroy

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


add

public void add(HttpFields fields)
Add fields from another HttpFields instance. Single valued fields are replaced, while all others are added.

Parameters:
fields -

valueParameters

public static String valueParameters(String value,
                                     Map parameters)
Get field value parameters. Some field values can have parameters. This method separates the value from the parameters and optionally populates a map with the paramters. For example:
 
 FieldName : Value ; param1=val1 ; param2=val2
 
 

Parameters:
value - The Field value, possibly with parameteres.
parameters - A map to populate with the parameters, or null
Returns:
The value.

getQuality

public static Float getQuality(String value)

qualityList

public static List qualityList(Enumeration e)
List values in quality order.

Parameters:
enum - Enumeration of values with quality parameters
Returns:
values in quality order.