// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.jdisc; import com.google.common.collect.ImmutableList; import java.util.*; /** *
This is an encapsulation of the header fields that belong to either a {@link Request} or a {@link Response}. It is * a multimap from String to String, with some additional methods for convenience. The keys of this map are compared by * ignoring their case, so that get("foo") returns the same entry as get("FOO").
* * @author Simon Thoresen */ public class HeaderFields implements MapConvenience method for checking whether or not a named header contains a specific value. If the named header * is not set, or if the given value is not contained within that header's value list, this method returns * false.
* *NOTE: This method is case-SENSITIVE.
* * @param key The key whose values to search in. * @param value The values to search for. * @return True if the given value was found in the named header. * @see #containsIgnoreCase */ public boolean contains(String key, String value) { ListConvenience method for checking whether or not a named header contains a specific value, regardless of case. * If the named header is not set, or if the given value is not contained within that header's value list, this * method returns false.
* *NOTE: This method is case-INSENSITIVE.
* * @param key The key whose values to search in. * @param value The values to search for, ignoring case. * @return True if the given value was found in the named header. * @see #contains */ public boolean containsIgnoreCase(String key, String value) { ListAdds the given value to the entry of the specified key. If no entry exists for the given key, a new one is * created containing only the given value.
* * @param key The key with which the specified value is to be associated. * @param value The value to be added to the list associated with the specified key. */ public void add(String key, String value) { ListAdds the given values to the entry of the specified key. If no entry exists for the given key, a new one is * created containing only the given values.
* * @param key The key with which the specified value is to be associated. * @param values The values to be added to the list associated with the specified key. */ public void add(String key, ListAdds all the entries of the given map to this. This is the same as calling {@link #add(String, List)} for each * entry in values.
* * @param values The values to be added to this. */ public void addAll(Map extends String, ? extends ListConvenience method to call {@link #put(String, List)} with a singleton list that contains the specified * value.
* * @param key The key of the entry to put. * @param value The value to put. * @return The previous value associated with key, or null if there was no mapping for * key. */ public ListRemoves the given value from the entry of the specified key.
* * @param key The key of the entry to remove from. * @param value The value to remove from the entry. * @return True if the value was removed. */ public boolean remove(String key, String value) { ListConvenience method for retrieving the first value of a named header field. If the header is not set, or if the * value list is empty, this method returns null.
* * @param key The key whose first value to return. * @return The first value of the named header, or null. */ public String getFirst(String key) { ListConvenience method for checking whether or not a named header field is true. To satisfy this, the * header field needs to have at least 1 entry, and Boolean.valueOf() of all its values must parse as * true.
* * @param key The key whose values to parse as a boolean. * @return The boolean value of the named header. */ public boolean isTrue(String key) { ListReturns an unmodifiable list of all key-value pairs of this. This provides a flattened view on the content of * this map.
* * @return The collection of entries. */ public List