/*
* Copyright 2014 The Netty Project
*
* The Netty Project licenses this file to you under the Apache License, version 2.0 (the
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package io.netty.handler.codec;
import java.util.
Iterator;
import java.util.
List;
import java.util.
Map.
Entry;
import java.util.
Set;
/**
* Common interface for {@link Headers} which represents a mapping of key to value.
* Duplicate keys may be allowed by implementations.
*
* @param <K> the type of the header name.
* @param <V> the type of the header value.
* @param <T> the type to use for return values when the intention is to return {@code this} object.
*/
public interface
Headers<K, V, T extends
Headers<K, V, T>> extends
Iterable<
Entry<K, V>> {
/**
* Returns the value of a header with the specified name. If there is more than one value for the specified name,
* the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @return the first header value if the header is found. {@code null} if there's no such header
*/
V
get(K
name);
/**
* Returns the value of a header with the specified name. If there is more than one value for the specified name,
* the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @param defaultValue the default value
* @return the first header value or {@code defaultValue} if there is no such header
*/
V
get(K
name, V
defaultValue);
/**
* Returns the value of a header with the specified name and removes it from this object. If there is more than
* one value for the specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @return the first header value or {@code null} if there is no such header
*/
V
getAndRemove(K
name);
/**
* Returns the value of a header with the specified name and removes it from this object. If there is more than
* one value for the specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @param defaultValue the default value
* @return the first header value or {@code defaultValue} if there is no such header
*/
V
getAndRemove(K
name, V
defaultValue);
/**
* Returns all values for the header with the specified name. The returned {@link List} can't be modified.
*
* @param name the name of the header to retrieve
* @return a {@link List} of header values or an empty {@link List} if no values are found.
*/
List<V>
getAll(K
name);
/**
* Returns all values for the header with the specified name and removes them from this object.
* The returned {@link List} can't be modified.
*
* @param name the name of the header to retrieve
* @return a {@link List} of header values or an empty {@link List} if no values are found.
*/
List<V>
getAllAndRemove(K
name);
/**
* Returns the {@code boolean} value of a header with the specified name. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @return the {@code boolean} value of the first value in insertion order or {@code null} if there is no such
* value or it can't be converted to {@code boolean}.
*/
Boolean getBoolean(K
name);
/**
* Returns the {@code boolean} value of a header with the specified name. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @param defaultValue the default value
* @return the {@code boolean} value of the first value in insertion order or {@code defaultValue} if there is no
* such value or it can't be converted to {@code boolean}.
*/
boolean
getBoolean(K
name, boolean
defaultValue);
/**
* Returns the {@code byte} value of a header with the specified name. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @return the {@code byte} value of the first value in insertion order or {@code null} if there is no such
* value or it can't be converted to {@code byte}.
*/
Byte getByte(K
name);
/**
* Returns the {@code byte} value of a header with the specified name. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @param defaultValue the default value
* @return the {@code byte} value of the first value in insertion order or {@code defaultValue} if there is no
* such value or it can't be converted to {@code byte}.
*/
byte
getByte(K
name, byte
defaultValue);
/**
* Returns the {@code char} value of a header with the specified name. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @return the {@code char} value of the first value in insertion order or {@code null} if there is no such
* value or it can't be converted to {@code char}.
*/
Character getChar(K
name);
/**
* Returns the {@code char} value of a header with the specified name. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @param defaultValue the default value
* @return the {@code char} value of the first value in insertion order or {@code defaultValue} if there is no
* such value or it can't be converted to {@code char}.
*/
char
getChar(K
name, char
defaultValue);
/**
* Returns the {@code short} value of a header with the specified name. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @return the {@code short} value of the first value in insertion order or {@code null} if there is no such
* value or it can't be converted to {@code short}.
*/
Short getShort(K
name);
/**
* Returns the {@code short} value of a header with the specified name. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @param defaultValue the default value
* @return the {@code short} value of the first value in insertion order or {@code defaultValue} if there is no
* such value or it can't be converted to {@code short}.
*/
short
getShort(K
name, short
defaultValue);
/**
* Returns the {@code int} value of a header with the specified name. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @return the {@code int} value of the first value in insertion order or {@code null} if there is no such
* value or it can't be converted to {@code int}.
*/
Integer getInt(K
name);
/**
* Returns the {@code int} value of a header with the specified name. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @param defaultValue the default value
* @return the {@code int} value of the first value in insertion order or {@code defaultValue} if there is no
* such value or it can't be converted to {@code int}.
*/
int
getInt(K
name, int
defaultValue);
/**
* Returns the {@code long} value of a header with the specified name. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @return the {@code long} value of the first value in insertion order or {@code null} if there is no such
* value or it can't be converted to {@code long}.
*/
Long getLong(K
name);
/**
* Returns the {@code long} value of a header with the specified name. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @param defaultValue the default value
* @return the {@code long} value of the first value in insertion order or {@code defaultValue} if there is no
* such value or it can't be converted to {@code long}.
*/
long
getLong(K
name, long
defaultValue);
/**
* Returns the {@code float} value of a header with the specified name. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @return the {@code float} value of the first value in insertion order or {@code null} if there is no such
* value or it can't be converted to {@code float}.
*/
Float getFloat(K
name);
/**
* Returns the {@code float} value of a header with the specified name. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @param defaultValue the default value
* @return the {@code float} value of the first value in insertion order or {@code defaultValue} if there is no
* such value or it can't be converted to {@code float}.
*/
float
getFloat(K
name, float
defaultValue);
/**
* Returns the {@code double} value of a header with the specified name. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @return the {@code double} value of the first value in insertion order or {@code null} if there is no such
* value or it can't be converted to {@code double}.
*/
Double getDouble(K
name);
/**
* Returns the {@code double} value of a header with the specified name. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @param defaultValue the default value
* @return the {@code double} value of the first value in insertion order or {@code defaultValue} if there is no
* such value or it can't be converted to {@code double}.
*/
double
getDouble(K
name, double
defaultValue);
/**
* Returns the value of a header with the specified name in milliseconds. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @return the milliseconds value of the first value in insertion order or {@code null} if there is no such
* value or it can't be converted to milliseconds.
*/
Long getTimeMillis(K
name);
/**
* Returns the value of a header with the specified name in milliseconds. If there is more than one value for the
* specified name, the first value in insertion order is returned.
*
* @param name the name of the header to retrieve
* @param defaultValue the default value
* @return the milliseconds value of the first value in insertion order or {@code defaultValue} if there is no such
* value or it can't be converted to milliseconds.
*/
long
getTimeMillis(K
name, long
defaultValue);
/**
* Returns the {@code boolean} value of a header with the specified {@code name} and removes the header from this
* object. If there is more than one value for the specified name, the first value in insertion order is returned.
* In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to retrieve
* @return the {@code boolean} value of the first value in insertion order or {@code null} if there is no
* such value or it can't be converted to {@code boolean}.
*/
Boolean getBooleanAndRemove(K
name);
/**
* Returns the {@code boolean} value of a header with the specified {@code name} and removes the header from this
* object. If there is more than one value for the specified name, the first value in insertion order is returned.
* In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to search
* @param defaultValue the default value
* @return the {@code boolean} value of the first value in insertion order or {@code defaultValue} if there is no
* such value or it can't be converted to {@code boolean}.
*/
boolean
getBooleanAndRemove(K
name, boolean
defaultValue);
/**
* Returns the {@code byte} value of a header with the specified {@code name} and removes the header from this
* object. If there is more than one value for the specified name, the first value in insertion order is returned.
* In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to search
* @return the {@code byte} value of the first value in insertion order or {@code null} if there is no
* such value or it can't be converted to {@code byte}.
*/
Byte getByteAndRemove(K
name);
/**
* Returns the {@code byte} value of a header with the specified {@code name} and removes the header from this
* object. If there is more than one value for the specified name, the first value in insertion order is returned.
* In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to search
* @param defaultValue the default value
* @return the {@code byte} value of the first value in insertion order or {@code defaultValue} if there is no
* such value or it can't be converted to {@code byte}.
*/
byte
getByteAndRemove(K
name, byte
defaultValue);
/**
* Returns the {@code char} value of a header with the specified {@code name} and removes the header from this
* object. If there is more than one value for the specified name, the first value in insertion order is returned.
* In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to search
* @return the {@code char} value of the first value in insertion order or {@code null} if there is no
* such value or it can't be converted to {@code char}.
*/
Character getCharAndRemove(K
name);
/**
* Returns the {@code char} value of a header with the specified {@code name} and removes the header from this
* object. If there is more than one value for the specified name, the first value in insertion order is returned.
* In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to search
* @param defaultValue the default value
* @return the {@code char} value of the first value in insertion order or {@code defaultValue} if there is no
* such value or it can't be converted to {@code char}.
*/
char
getCharAndRemove(K
name, char
defaultValue);
/**
* Returns the {@code short} value of a header with the specified {@code name} and removes the header from this
* object. If there is more than one value for the specified name, the first value in insertion order is returned.
* In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to search
* @return the {@code short} value of the first value in insertion order or {@code null} if there is no
* such value or it can't be converted to {@code short}.
*/
Short getShortAndRemove(K
name);
/**
* Returns the {@code short} value of a header with the specified {@code name} and removes the header from this
* object. If there is more than one value for the specified name, the first value in insertion order is returned.
* In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to search
* @param defaultValue the default value
* @return the {@code short} value of the first value in insertion order or {@code defaultValue} if there is no
* such value or it can't be converted to {@code short}.
*/
short
getShortAndRemove(K
name, short
defaultValue);
/**
* Returns the {@code int} value of a header with the specified {@code name} and removes the header from this
* object. If there is more than one value for the specified name, the first value in insertion order is returned.
* In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to search
* @return the {@code int} value of the first value in insertion order or {@code null} if there is no
* such value or it can't be converted to {@code int}.
*/
Integer getIntAndRemove(K
name);
/**
* Returns the {@code int} value of a header with the specified {@code name} and removes the header from this
* object. If there is more than one value for the specified name, the first value in insertion order is returned.
* In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to search
* @param defaultValue the default value
* @return the {@code int} value of the first value in insertion order or {@code defaultValue} if there is no
* such value or it can't be converted to {@code int}.
*/
int
getIntAndRemove(K
name, int
defaultValue);
/**
* Returns the {@code long} value of a header with the specified {@code name} and removes the header from this
* object. If there is more than one value for the specified name, the first value in insertion order is returned.
* In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to search
* @return the {@code long} value of the first value in insertion order or {@code null} if there is no
* such value or it can't be converted to {@code long}.
*/
Long getLongAndRemove(K
name);
/**
* Returns the {@code long} value of a header with the specified {@code name} and removes the header from this
* object. If there is more than one value for the specified name, the first value in insertion order is returned.
* In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to search
* @param defaultValue the default value
* @return the {@code long} value of the first value in insertion order or {@code defaultValue} if there is no
* such value or it can't be converted to {@code long}.
*/
long
getLongAndRemove(K
name, long
defaultValue);
/**
* Returns the {@code float} value of a header with the specified {@code name} and removes the header from this
* object. If there is more than one value for the specified name, the first value in insertion order is returned.
* In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to search
* @return the {@code float} value of the first value in insertion order or {@code null} if there is no
* such value or it can't be converted to {@code float}.
*/
Float getFloatAndRemove(K
name);
/**
* Returns the {@code float} value of a header with the specified {@code name} and removes the header from this
* object. If there is more than one value for the specified name, the first value in insertion order is returned.
* In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to search
* @param defaultValue the default value
* @return the {@code float} value of the first value in insertion order or {@code defaultValue} if there is no
* such value or it can't be converted to {@code float}.
*/
float
getFloatAndRemove(K
name, float
defaultValue);
/**
* Returns the {@code double} value of a header with the specified {@code name} and removes the header from this
* object. If there is more than one value for the specified name, the first value in insertion order is returned.
* In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to search
* @return the {@code double} value of the first value in insertion order or {@code null} if there is no
* such value or it can't be converted to {@code double}.
*/
Double getDoubleAndRemove(K
name);
/**
* Returns the {@code double} value of a header with the specified {@code name} and removes the header from this
* object. If there is more than one value for the specified name, the first value in insertion order is returned.
* In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to search
* @param defaultValue the default value
* @return the {@code double} value of the first value in insertion order or {@code defaultValue} if there is no
* such value or it can't be converted to {@code double}.
*/
double
getDoubleAndRemove(K
name, double
defaultValue);
/**
* Returns the value of a header with the specified {@code name} in milliseconds and removes the header from this
* object. If there is more than one value for the specified {@code name}, the first value in insertion order is
* returned. In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to retrieve
* @return the milliseconds value of the first value in insertion order or {@code null} if there is no such
* value or it can't be converted to milliseconds.
*/
Long getTimeMillisAndRemove(K
name);
/**
* Returns the value of a header with the specified {@code name} in milliseconds and removes the header from this
* object. If there is more than one value for the specified {@code name}, the first value in insertion order is
* returned. In any case all values for {@code name} are removed.
* <p>
* If an exception occurs during the translation from type {@code T} all entries with {@code name} may still
* be removed.
* @param name the name of the header to retrieve
* @param defaultValue the default value
* @return the milliseconds value of the first value in insertion order or {@code defaultValue} if there is no such
* value or it can't be converted to milliseconds.
*/
long
getTimeMillisAndRemove(K
name, long
defaultValue);
/**
* Returns {@code true} if a header with the {@code name} exists, {@code false} otherwise.
*
* @param name the header name
*/
boolean
contains(K
name);
/**
* Returns {@code true} if a header with the {@code name} and {@code value} exists, {@code false} otherwise.
* <p>
* The {@link Object#equals(Object)} method is used to test for equality of {@code value}.
* </p>
* @param name the header name
* @param value the header value of the header to find
*/
boolean
contains(K
name, V
value);
/**
* Returns {@code true} if a header with the name and value exists.
*
* @param name the header name
* @param value the header value
* @return {@code true} if it contains it {@code false} otherwise
*/
boolean
containsObject(K
name,
Object value);
/**
* Returns {@code true} if a header with the name and value exists.
*
* @param name the header name
* @param value the header value
* @return {@code true} if it contains it {@code false} otherwise
*/
boolean
containsBoolean(K
name, boolean
value);
/**
* Returns {@code true} if a header with the name and value exists.
*
* @param name the header name
* @param value the header value
* @return {@code true} if it contains it {@code false} otherwise
*/
boolean
containsByte(K
name, byte
value);
/**
* Returns {@code true} if a header with the name and value exists.
*
* @param name the header name
* @param value the header value
* @return {@code true} if it contains it {@code false} otherwise
*/
boolean
containsChar(K
name, char
value);
/**
* Returns {@code true} if a header with the name and value exists.
*
* @param name the header name
* @param value the header value
* @return {@code true} if it contains it {@code false} otherwise
*/
boolean
containsShort(K
name, short
value);
/**
* Returns {@code true} if a header with the name and value exists.
*
* @param name the header name
* @param value the header value
* @return {@code true} if it contains it {@code false} otherwise
*/
boolean
containsInt(K
name, int
value);
/**
* Returns {@code true} if a header with the name and value exists.
*
* @param name the header name
* @param value the header value
* @return {@code true} if it contains it {@code false} otherwise
*/
boolean
containsLong(K
name, long
value);
/**
* Returns {@code true} if a header with the name and value exists.
*
* @param name the header name
* @param value the header value
* @return {@code true} if it contains it {@code false} otherwise
*/
boolean
containsFloat(K
name, float
value);
/**
* Returns {@code true} if a header with the name and value exists.
*
* @param name the header name
* @param value the header value
* @return {@code true} if it contains it {@code false} otherwise
*/
boolean
containsDouble(K
name, double
value);
/**
* Returns {@code true} if a header with the name and value exists.
*
* @param name the header name
* @param value the header value
* @return {@code true} if it contains it {@code false} otherwise
*/
boolean
containsTimeMillis(K
name, long
value);
/**
* Returns the number of headers in this object.
*/
int
size();
/**
* Returns {@code true} if {@link #size()} equals {@code 0}.
*/
boolean
isEmpty();
/**
* Returns a {@link Set} of all header names in this object. The returned {@link Set} cannot be modified.
*/
Set<K>
names();
/**
* Adds a new header with the specified {@code name} and {@code value}.
*
* @param name the name of the header
* @param value the value of the header
* @return {@code this}
*/
T
add(K
name, V
value);
/**
* Adds new headers with the specified {@code name} and {@code values}. This method is semantically equivalent to
*
* <pre>
* for (T value : values) {
* headers.add(name, value);
* }
* </pre>
*
* @param name the header name
* @param values the values of the header
* @return {@code this}
*/
T
add(K
name,
Iterable<? extends V>
values);
/**
* Adds new headers with the specified {@code name} and {@code values}. This method is semantically equivalent to
*
* <pre>
* for (T value : values) {
* headers.add(name, value);
* }
* </pre>
*
* @param name the header name
* @param values the values of the header
* @return {@code this}
*/
T
add(K
name, V...
values);
/**
* Adds a new header. Before the {@code value} is added, it's converted to type {@code T}.
*
* @param name the header name
* @param value the value of the header
* @return {@code this}
*/
T
addObject(K
name,
Object value);
/**
* Adds a new header with the specified name and values. This method is equivalent to
*
* <pre>
* for (Object v : values) {
* headers.addObject(name, v);
* }
* </pre>
*
* @param name the header name
* @param values the value of the header
* @return {@code this}
*/
T
addObject(K
name,
Iterable<?>
values);
/**
* Adds a new header with the specified name and values. This method is equivalent to
*
* <pre>
* for (Object v : values) {
* headers.addObject(name, v);
* }
* </pre>
*
* @param name the header name
* @param values the value of the header
* @return {@code this}
*/
T
addObject(K
name,
Object...
values);
/**
* Adds a new header.
*
* @param name the header name
* @param value the value of the header
* @return {@code this}
*/
T
addBoolean(K
name, boolean
value);
/**
* Adds a new header.
*
* @param name the header name
* @param value the value of the header
* @return {@code this}
*/
T
addByte(K
name, byte
value);
/**
* Adds a new header.
*
* @param name the header name
* @param value the value of the header
* @return {@code this}
*/
T
addChar(K
name, char
value);
/**
* Adds a new header.
*
* @param name the header name
* @param value the value of the header
* @return {@code this}
*/
T
addShort(K
name, short
value);
/**
* Adds a new header.
*
* @param name the header name
* @param value the value of the header
* @return {@code this}
*/
T
addInt(K
name, int
value);
/**
* Adds a new header.
*
* @param name the header name
* @param value the value of the header
* @return {@code this}
*/
T
addLong(K
name, long
value);
/**
* Adds a new header.
*
* @param name the header name
* @param value the value of the header
* @return {@code this}
*/
T
addFloat(K
name, float
value);
/**
* Adds a new header.
*
* @param name the header name
* @param value the value of the header
* @return {@code this}
*/
T
addDouble(K
name, double
value);
/**
* Adds a new header.
*
* @param name the header name
* @param value the value of the header
* @return {@code this}
*/
T
addTimeMillis(K
name, long
value);
/**
* Adds all header names and values of {@code headers} to this object.
*
* @throws IllegalArgumentException if {@code headers == this}.
* @return {@code this}
*/
T
add(
Headers<? extends K, ? extends V, ?>
headers);
/**
* Sets a header with the specified name and value. Any existing headers with the same name are overwritten.
*
* @param name the header name
* @param value the value of the header
* @return {@code this}
*/
T
set(K
name, V
value);
/**
* Sets a new header with the specified name and values. This method is equivalent to
*
* <pre>
* for (T v : values) {
* headers.addObject(name, v);
* }
* </pre>
*
* @param name the header name
* @param values the value of the header
* @return {@code this}
*/
T
set(K
name,
Iterable<? extends V>
values);
/**
* Sets a header with the specified name and values. Any existing headers with this name are removed. This method
* is equivalent to:
*
* <pre>
* headers.remove(name);
* for (T v : values) {
* headers.add(name, v);
* }
* </pre>
*
* @param name the header name
* @param values the value of the header
* @return {@code this}
*/
T
set(K
name, V...
values);
/**
* Sets a new header. Any existing headers with this name are removed. Before the {@code value} is add, it's
* converted to type {@code T}.
*
* @param name the header name
* @param value the value of the header
* @throws NullPointerException if either {@code name} or {@code value} before or after its conversion is
* {@code null}.
* @return {@code this}
*/
T
setObject(K
name,
Object value);
/**
* Sets a header with the specified name and values. Any existing headers with this name are removed. This method
* is equivalent to:
*
* <pre>
* headers.remove(name);
* for (Object v : values) {
* headers.addObject(name, v);
* }
* </pre>
*
* @param name the header name
* @param values the values of the header
* @return {@code this}
*/
T
setObject(K
name,
Iterable<?>
values);
/**
* Sets a header with the specified name and values. Any existing headers with this name are removed. This method
* is equivalent to:
*
* <pre>
* headers.remove(name);
* for (Object v : values) {
* headers.addObject(name, v);
* }
* </pre>
*
* @param name the header name
* @param values the values of the header
* @return {@code this}
*/
T
setObject(K
name,
Object...
values);
/**
* Set the {@code name} to {@code value}. This will remove all previous values associated with {@code name}.
* @param name The name to modify
* @param value The value
* @return {@code this}
*/
T
setBoolean(K
name, boolean
value);
/**
* Set the {@code name} to {@code value}. This will remove all previous values associated with {@code name}.
* @param name The name to modify
* @param value The value
* @return {@code this}
*/
T
setByte(K
name, byte
value);
/**
* Set the {@code name} to {@code value}. This will remove all previous values associated with {@code name}.
* @param name The name to modify
* @param value The value
* @return {@code this}
*/
T
setChar(K
name, char
value);
/**
* Set the {@code name} to {@code value}. This will remove all previous values associated with {@code name}.
* @param name The name to modify
* @param value The value
* @return {@code this}
*/
T
setShort(K
name, short
value);
/**
* Set the {@code name} to {@code value}. This will remove all previous values associated with {@code name}.
* @param name The name to modify
* @param value The value
* @return {@code this}
*/
T
setInt(K
name, int
value);
/**
* Set the {@code name} to {@code value}. This will remove all previous values associated with {@code name}.
* @param name The name to modify
* @param value The value
* @return {@code this}
*/
T
setLong(K
name, long
value);
/**
* Set the {@code name} to {@code value}. This will remove all previous values associated with {@code name}.
* @param name The name to modify
* @param value The value
* @return {@code this}
*/
T
setFloat(K
name, float
value);
/**
* Set the {@code name} to {@code value}. This will remove all previous values associated with {@code name}.
* @param name The name to modify
* @param value The value
* @return {@code this}
*/
T
setDouble(K
name, double
value);
/**
* Set the {@code name} to {@code value}. This will remove all previous values associated with {@code name}.
* @param name The name to modify
* @param value The value
* @return {@code this}
*/
T
setTimeMillis(K
name, long
value);
/**
* Clears the current header entries and copies all header entries of the specified {@code headers}.
*
* @return {@code this}
*/
T
set(
Headers<? extends K, ? extends V, ?>
headers);
/**
* Retains all current headers but calls {@link #set(K, V)} for each entry in {@code headers}.
*
* @param headers The headers used to {@link #set(K, V)} values in this instance
* @return {@code this}
*/
T
setAll(
Headers<? extends K, ? extends V, ?>
headers);
/**
* Removes all headers with the specified {@code name}.
*
* @param name the header name
* @return {@code true} if at least one entry has been removed.
*/
boolean
remove(K
name);
/**
* Removes all headers. After a call to this method {@link #size()} equals {@code 0}.
*
* @return {@code this}
*/
T
clear();
@
Override
Iterator<
Entry<K, V>>
iterator();
}