private static HeaderHashMap toMap(Iterable<Header> headers) { HeaderHashMap map = new HeaderHashMap(); for (Header h : headers) { List<String> list = map.getOrDefault(h.getName(), new ArrayList<>()); list.add(h.getValue()); map.put(h.getName(), list); } return map; }
Iterator<Header> headerIterator() { List<Header> headers = entrySet().stream().flatMap(e -> e.getValue().stream().map(v -> new Header(e.getKey().getDelegate(), v))) .collect(Collectors.toList()); return headers.iterator(); } }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Headers headers1 = (Headers) o; return headers.equals(headers1.headers); }
public List<String> get(String key) { return get(new CaseInsensitiveKey(key)); }
private HeaderHashMap copyMap() { return new HeaderHashMap(headers); }
public boolean isEmpty() { return headers.isEmpty(); }
public Set<String> keySet() { return headers.keys(); }
List<Header> getAsHeaders(final String key) { CaseInsensitiveKey name = new CaseInsensitiveKey(key); List<Header> headers = get(name).stream().map(v -> new Header(name.getDelegate(), v)).collect(Collectors.toList()); return Collections.unmodifiableList(headers); }
/** * @deprecated use {@link #contains(String)} instead */ @Deprecated public boolean hasHeader(String headerName) { return !headers.get(headerName).isEmpty(); }
public List<Header> getHeaders(String name) { return headers.getAsHeaders(name); }
public boolean contains(String headerName) { return !headers.get(headerName).isEmpty(); }
public Headers(final Map<String, List<String>> headers) { this(new HeaderHashMap(headers)); }
public Iterator<Header> iterator() { return headers.headerIterator(); }
@Override public int hashCode() { return headers.hashCode(); }
public Headers add(Iterable<Header> headers) { HeaderHashMap map = copyMap(); for (Header header : headers) { List<String> list = new ArrayList<>(map.get(header.getName())); String value = normalizeValue(header.getName(), header.getValue()); if (!list.contains(value)) { list.add(value); } map.put(header.getName(), list); } return new Headers(map); }