Overview | Package | Class | Tree | Deprecated | Index | Help
| Apache Tomcat 7.0.29
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## 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
`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
`MimeHeaders()` Creates a new MimeHeaders object using a default buffer size.

Method Summary
`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

Overview | Package | Class | Tree | Deprecated | Index | Help
| Apache Tomcat 7.0.29
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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