org.apache.tomcat.util.http

## Class MimeHeaders

- java.lang.Object
- - org.apache.tomcat.util.http.MimeHeaders

-     public class MimeHeaders
      extends Object

  Memory-efficient repository for Mime Headers. When the object is recycled, it will keep the allocated headers[] and all the MimeHeaderField - no GC is generated. For input headers it is possible to use the MessageByte for Fields - so no GC will be generated. The only garbage is generated when using the String for header names/values - this can't be avoided when the servlet calls header methods, but is easy to avoid inside tomcat. The goal is to use _only_ MessageByte-based Fields, and reduce to 0 the memory overhead of tomcat. TODO: XXX one-buffer parsing - for http ( other protocols don't need that ) XXX remove unused methods XXX External enumerations, with 0 GC. XXX use HeaderName ID
  Author:
    dac@eng.sun.com, James Todd [gonzo@eng.sun.com], Costin Manolache, kevin seguin

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `DEFAULT_HEADER_SIZE` Initial size - should be == average number of headers per request XXX make it configurable ( fine-tuning of web-apps )

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MimeHeaders()` Creates a new MimeHeaders object using a default buffer size.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `MessageBytes` | `addValue(byte[] b, int startN, int len)` Create a new named header using un-translated byte[].
    `MessageBytes` | `addValue(char[] c, int startN, int len)` Create a new named header using translated char[].
    `MessageBytes` | `addValue(String name)` Create a new named header , return the MessageBytes container for the new value
    `void` | `clear()` Clears all header fields.
    `int` | `findHeader(String name, int starting)` Find the index of a header with the given name.
    `String` | `getHeader(String name)`
    `MessageBytes` | `getName(int n)` Returns the Nth header name, or null if there is no such header.
    `MessageBytes` | `getUniqueValue(String name)` Finds and returns a unique header field with the given name.
    `MessageBytes` | `getValue(int n)` Returns the Nth header value, or null if there is no such header.
    `MessageBytes` | `getValue(String name)` Finds and returns a header field with the given name.
    `Enumeration<String>` | `names()` Returns an enumeration of strings representing the header field names.
    `void` | `recycle()` Clears all header fields.
    `void` | `removeHeader(String name)` Removes a header field with the specified name.
    `void` | `setLimit(int limit)` Set limit on the number of header fields.
    `MessageBytes` | `setValue(String name)` Allow "set" operations - return a MessageBytes container for the header value ( existing header or new if this .
    `int` | `size()` Returns the current number of header fields.
    `String` | `toString()` EXPENSIVE!!!
    `Enumeration<String>` | `values(String name)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### DEFAULT_HEADER_SIZE

          public static final int DEFAULT_HEADER_SIZE

      Initial size - should be == average number of headers per request XXX make it configurable ( fine-tuning of web-apps )
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### MimeHeaders

          public MimeHeaders()

      Creates a new MimeHeaders object using a default buffer size.

  - ### Method Detail

    - #### setLimit

          public void setLimit(int limit)

      Set limit on the number of header fields.

    - #### recycle

          public void recycle()

      Clears all header fields.

    - #### clear

          public void clear()

      Clears all header fields.

    - #### toString

          public String toString()

      EXPENSIVE!!! only for debugging.
      Overrides:
        `toString` in class `Object`

    - #### size

          public int size()

      Returns the current number of header fields.

    - #### getName

          public MessageBytes getName(int n)

      Returns the Nth header name, or null if there is no such header. This may be used to iterate through all header fields.

    - #### getValue

          public MessageBytes getValue(int n)

      Returns the Nth header value, or null if there is no such header. This may be used to iterate through all header fields.

    - #### findHeader

          public int findHeader(String name,
                       int starting)

      Find the index of a header with the given name.

    - #### names

          public Enumeration<String> names()

      Returns an enumeration of strings representing the header field names. Field names may appear multiple times in this enumeration, indicating that multiple fields with that name exist in this header.

    - #### values

          public Enumeration<String> values(String name)

    - #### addValue

          public MessageBytes addValue(String name)

      Create a new named header , return the MessageBytes container for the new value

    - #### addValue

          public MessageBytes addValue(byte[] b,
                              int startN,
                              int len)

      Create a new named header using un-translated byte[]. The conversion to chars can be delayed until encoding is known.

    - #### addValue

          public MessageBytes addValue(char[] c,
                              int startN,
                              int len)

      Create a new named header using translated char[].

    - #### setValue

          public MessageBytes setValue(String name)

      Allow "set" operations - return a MessageBytes container for the header value ( existing header or new if this .

    - #### getValue

          public MessageBytes getValue(String name)

      Finds and returns a header field with the given name. If no such field exists, null is returned. If more than one such field is in the header, an arbitrary one is returned.

    - #### getUniqueValue

          public MessageBytes getUniqueValue(String name)

      Finds and returns a unique header field with the given name. If no such field exists, null is returned. If the specified header field is not unique then an `IllegalArgumentException` is thrown.

    - #### getHeader

          public String getHeader(String name)

    - #### removeHeader

          public void removeHeader(String name)

      Removes a header field with the specified name. Does nothing if such a field could not be found.
      Parameters:
        `name` - the name of the header field to be removed

Copyright © 2000-2017 Apache Software Foundation. All Rights Reserved.