net.cnri.dobj
Class HeaderSet

java.lang.Object
  extended by net.cnri.dobj.HeaderSet
All Implemented Interfaces:
java.lang.Iterable<HeaderItem>

public class HeaderSet
extends java.lang.Object
implements java.lang.Iterable<HeaderItem>

HeaderSet objects manage, parse, and format a set of key-value pairs that are used with DOConnection messages.


Constructor Summary
HeaderSet()
          Construct a HeaderSet with the given message type
HeaderSet(HeaderSet orig)
          Copy constructor
HeaderSet(java.lang.String msgType)
          Construct a HeaderSet with the given message type
 
Method Summary
 void addHeader(java.lang.String name, boolean value)
          Adds a header to the header set
 void addHeader(java.lang.String name, byte[] value)
          Adds a header to the header set
 void addHeader(java.lang.String name, HeaderSet subHeaders)
          Adds a sub-header-set to the header set
 void addHeader(java.lang.String name, int value)
          Adds a header to the header set
 void addHeader(java.lang.String name, long value)
          Adds a header to the header set
 void addHeader(java.lang.String name, java.lang.String value)
          Adds a header to the header set
 void addHeader(java.lang.String name, java.lang.String[] value)
          Adds a string array header to the header set
 void copyInto(HeaderSet destination)
           
static byte decodeHexByte(char ch1, char ch2)
           
 boolean getBooleanHeader(java.lang.String headerName, boolean defaultValue)
          Returns the boolean value for the last header with the given name.
 HeaderSet getHeaderSubset(java.lang.String prefix)
          Returns a new HeaderSet with the key-value pairs for which the keys have the given prefix.
 byte[] getHexByteArrayHeader(java.lang.String headerName, byte[] defaultValue)
          Returns the byte array value for the last header with the given name.
 int getIntHeader(java.lang.String headerName, int defaultValue)
          Returns the integer value for the last header with the given name.
 long getLongHeader(java.lang.String headerName, long defaultValue)
          Returns the long (64 bit integer) value for the last header with the given name.
 java.lang.String getMessageType()
          Get the message type for this HeaderSet.
 java.lang.String[] getStringArrayHeader(java.lang.String headerName, java.lang.String[] defaultValue)
          Returns the String array value for the last header with the given name.
 java.lang.String getStringHeader(java.lang.String headerName, java.lang.String defaultValue)
          Returns the String value for the last header with the given name.
 boolean hasHeader(java.lang.String headerName)
          Returns true iff this HeaderSet contains a header with the given name.
 java.util.Iterator iterator()
          Returns an iterator that returns each HeaderItem
 boolean readHeaders(java.io.InputStream in)
          This method will populate the set of headers with data from the given InputStream.
 boolean readHeadersFromString(java.lang.String str)
          This method will populate the set of headers with data from the given encoded String.
 void removeAllHeaders()
          Removes all headers from the HeaderSet
 void removeHeadersWithKey(java.lang.String name)
          Removes all headers with the given key
 void setMessageType(java.lang.String newMessageType)
           
 int size()
          Returns the number of headers
 java.lang.String toString()
           
static java.lang.String unescapeURLTxt(java.lang.String str)
           
static void writeEscapedTxt(java.io.OutputStream out, java.lang.String str)
           
 void writeHeaders(java.io.OutputStream out)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

HeaderSet

public HeaderSet(java.lang.String msgType)
Construct a HeaderSet with the given message type


HeaderSet

public HeaderSet()
Construct a HeaderSet with the given message type


HeaderSet

public HeaderSet(HeaderSet orig)
Copy constructor

Method Detail

getMessageType

public java.lang.String getMessageType()
Get the message type for this HeaderSet. The message type is the label that comes before the first colon in a formatted HeaderSet.


setMessageType

public void setMessageType(java.lang.String newMessageType)

addHeader

public void addHeader(java.lang.String name,
                      java.lang.String value)
Adds a header to the header set


addHeader

public void addHeader(java.lang.String name,
                      java.lang.String[] value)
Adds a string array header to the header set


addHeader

public void addHeader(java.lang.String name,
                      HeaderSet subHeaders)
Adds a sub-header-set to the header set


addHeader

public void addHeader(java.lang.String name,
                      long value)
Adds a header to the header set


addHeader

public void addHeader(java.lang.String name,
                      int value)
Adds a header to the header set


addHeader

public void addHeader(java.lang.String name,
                      boolean value)
Adds a header to the header set


addHeader

public void addHeader(java.lang.String name,
                      byte[] value)
Adds a header to the header set


removeHeadersWithKey

public void removeHeadersWithKey(java.lang.String name)
Removes all headers with the given key


removeAllHeaders

public void removeAllHeaders()
Removes all headers from the HeaderSet


iterator

public java.util.Iterator iterator()
Returns an iterator that returns each HeaderItem

Specified by:
iterator in interface java.lang.Iterable<HeaderItem>

size

public int size()
Returns the number of headers


writeHeaders

public void writeHeaders(java.io.OutputStream out)
                  throws java.io.IOException
Throws:
java.io.IOException

readHeaders

public boolean readHeaders(java.io.InputStream in)
                    throws java.io.IOException
This method will populate the set of headers with data from the given InputStream. The stream will be read using the UTF8 character encoding. Returns false if a newline or EOF was reached before any headers were found.

Throws:
java.io.IOException

readHeadersFromString

public boolean readHeadersFromString(java.lang.String str)
This method will populate the set of headers with data from the given encoded String. Returns false if a newline or EOF was reached before any headers were found.


writeEscapedTxt

public static final void writeEscapedTxt(java.io.OutputStream out,
                                         java.lang.String str)
                                  throws java.io.IOException
Throws:
java.io.IOException

unescapeURLTxt

public static final java.lang.String unescapeURLTxt(java.lang.String str)

decodeHexByte

public static final byte decodeHexByte(char ch1,
                                       char ch2)

getHeaderSubset

public HeaderSet getHeaderSubset(java.lang.String prefix)
Returns a new HeaderSet with the key-value pairs for which the keys have the given prefix. This adds all of the key-value pairs, with the prefix removed from the keys, to a new HeaderSet and returns it.


getIntHeader

public int getIntHeader(java.lang.String headerName,
                        int defaultValue)
Returns the integer value for the last header with the given name. If no header with the given name is found or if there is a formatting error, defaultValue is returned.


getLongHeader

public long getLongHeader(java.lang.String headerName,
                          long defaultValue)
Returns the long (64 bit integer) value for the last header with the given name. If no header with the given name is found or if there is a formatting error, defaultValue is returned.


hasHeader

public boolean hasHeader(java.lang.String headerName)
Returns true iff this HeaderSet contains a header with the given name. (as always, case insensitive)


getBooleanHeader

public boolean getBooleanHeader(java.lang.String headerName,
                                boolean defaultValue)
Returns the boolean value for the last header with the given name. If no header with the given name is found or if there is a formatting error, defaultValue is returned.


getStringHeader

public java.lang.String getStringHeader(java.lang.String headerName,
                                        java.lang.String defaultValue)
Returns the String value for the last header with the given name. If no header with the given name is found, defaultValue is returned.


getStringArrayHeader

public java.lang.String[] getStringArrayHeader(java.lang.String headerName,
                                               java.lang.String[] defaultValue)
Returns the String array value for the last header with the given name. If no header with the given name is found, defaultValue is returned.


getHexByteArrayHeader

public byte[] getHexByteArrayHeader(java.lang.String headerName,
                                    byte[] defaultValue)
Returns the byte array value for the last header with the given name. If no header with the given name is found, defaultValue is returned.


copyInto

public void copyInto(HeaderSet destination)

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object