@Override public Iterator<CharSequence> valueIterator(CharSequence name) { Iterator<CharSequence> itr = super.valueIterator(name); if (!itr.hasNext()) { return itr; } Iterator<CharSequence> unescapedItr = unescapeCsvFields(itr.next()).iterator(); if (itr.hasNext()) { throw new IllegalStateException("CombinedHttpHeaders should only have one value"); } return unescapedItr; }
@Override public List<CharSequence> getAll(CharSequence name) { List<CharSequence> values = super.getAll(name); if (values.isEmpty()) { return values; } if (values.size() != 1) { throw new IllegalStateException("CombinedHttpHeaders should only have one value"); } return unescapeCsvFields(values.get(0)); }
/** * Filter the {@link HttpHeaderNames#TE} header according to the * <a href="https://tools.ietf.org/html/rfc7540#section-8.1.2.2">special rules in the HTTP/2 RFC</a>. * @param entry An entry whose name is {@link HttpHeaderNames#TE}. * @param out the resulting HTTP/2 headers. */ private static void toHttp2HeadersFilterTE(Entry<CharSequence, CharSequence> entry, Http2Headers out) { if (indexOf(entry.getValue(), ',', 0) == -1) { if (contentEqualsIgnoreCase(trim(entry.getValue()), TRAILERS)) { out.add(TE, TRAILERS); } } else { List<CharSequence> teValues = unescapeCsvFields(entry.getValue()); for (CharSequence teValue : teValues) { if (contentEqualsIgnoreCase(trim(teValue), TRAILERS)) { out.add(TE, TRAILERS); break; } } } }
/** * Filter the {@link HttpHeaderNames#TE} header according to the * <a href="https://tools.ietf.org/html/rfc7540#section-8.1.2.2">special rules in the HTTP/2 RFC</a>. * @param entry An entry whose name is {@link HttpHeaderNames#TE}. * @param out the resulting HTTP/2 headers. */ private static void toHttp2HeadersFilterTE(Entry<CharSequence, CharSequence> entry, HttpHeaders out) { if (AsciiString.indexOf(entry.getValue(), ',', 0) == -1) { if (AsciiString.contentEqualsIgnoreCase(AsciiString.trim(entry.getValue()), HttpHeaderValues.TRAILERS)) { out.add(HttpHeaderNames.TE, HttpHeaderValues.TRAILERS.toString()); } } else { final List<CharSequence> teValues = StringUtil.unescapeCsvFields(entry.getValue()); for (CharSequence teValue : teValues) { if (AsciiString.contentEqualsIgnoreCase(AsciiString.trim(teValue), HttpHeaderValues.TRAILERS)) { out.add(HttpHeaderNames.TE, HttpHeaderValues.TRAILERS.toString()); break; } } } }
@Override public Iterator<CharSequence> valueIterator(CharSequence name) { Iterator<CharSequence> itr = super.valueIterator(name); if (!itr.hasNext()) { return itr; } Iterator<CharSequence> unescapedItr = unescapeCsvFields(itr.next()).iterator(); if (itr.hasNext()) { throw new IllegalStateException("CombinedHttpHeaders should only have one value"); } return unescapedItr; }
@Override public Iterator<CharSequence> valueIterator(CharSequence name) { Iterator<CharSequence> itr = super.valueIterator(name); if (!itr.hasNext()) { return itr; } Iterator<CharSequence> unescapedItr = unescapeCsvFields(itr.next()).iterator(); if (itr.hasNext()) { throw new IllegalStateException("CombinedHttpHeaders should only have one value"); } return unescapedItr; }
@Override public List<CharSequence> getAll(CharSequence name) { List<CharSequence> values = super.getAll(name); if (values.isEmpty()) { return values; } if (values.size() != 1) { throw new IllegalStateException("CombinedHttpHeaders should only have one value"); } return unescapeCsvFields(values.get(0)); }
@Override public List<CharSequence> getAll(CharSequence name) { List<CharSequence> values = super.getAll(name); if (values.isEmpty()) { return values; } if (values.size() != 1) { throw new IllegalStateException("CombinedHttpHeaders should only have one value"); } return unescapeCsvFields(values.get(0)); }
@Override public Iterator<CharSequence> valueIterator(CharSequence name) { Iterator<CharSequence> itr = super.valueIterator(name); if (!itr.hasNext()) { return itr; } Iterator<CharSequence> unescapedItr = unescapeCsvFields(itr.next()).iterator(); if (itr.hasNext()) { throw new IllegalStateException("CombinedHttpHeaders should only have one value"); } return unescapedItr; }
@Override public List<CharSequence> getAll(CharSequence name) { List<CharSequence> values = super.getAll(name); if (values.isEmpty()) { return values; } if (values.size() != 1) { throw new IllegalStateException("CombinedHttpHeaders should only have one value"); } return unescapeCsvFields(values.get(0)); }
@Override public Iterator<CharSequence> valueIterator(CharSequence name) { Iterator<CharSequence> itr = super.valueIterator(name); if (!itr.hasNext() || cannotBeCombined(name)) { return itr; } Iterator<CharSequence> unescapedItr = unescapeCsvFields(itr.next()).iterator(); if (itr.hasNext()) { throw new IllegalStateException("CombinedHttpHeaders should only have one value"); } return unescapedItr; }
@Override public List<CharSequence> getAll(CharSequence name) { List<CharSequence> values = super.getAll(name); if (values.isEmpty() || cannotBeCombined(name)) { return values; } if (values.size() != 1) { throw new IllegalStateException("CombinedHttpHeaders should only have one value"); } return unescapeCsvFields(values.get(0)); }
/** * Filter the {@link HttpHeaderNames#TE} header according to the * <a href="https://tools.ietf.org/html/rfc7540#section-8.1.2.2">special rules in the HTTP/2 RFC</a>. * @param entry An entry whose name is {@link HttpHeaderNames#TE}. * @param out the resulting HTTP/2 headers. */ private static void toHttp2HeadersFilterTE(Entry<CharSequence, CharSequence> entry, Http2Headers out) { if (indexOf(entry.getValue(), ',', 0) == -1) { if (contentEqualsIgnoreCase(trim(entry.getValue()), TRAILERS)) { out.add(TE, TRAILERS); } } else { List<CharSequence> teValues = unescapeCsvFields(entry.getValue()); for (CharSequence teValue : teValues) { if (contentEqualsIgnoreCase(trim(teValue), TRAILERS)) { out.add(TE, TRAILERS); break; } } } }
/** * Filter the {@link HttpHeaderNames#TE} header according to the * <a href="https://tools.ietf.org/html/rfc7540#section-8.1.2.2">special rules in the HTTP/2 RFC</a>. * @param entry An entry whose name is {@link HttpHeaderNames#TE}. * @param out the resulting HTTP/2 headers. */ private static void toHttp2HeadersFilterTE(Entry<CharSequence, CharSequence> entry, Http2Headers out) { if (indexOf(entry.getValue(), ',', 0) == -1) { if (contentEqualsIgnoreCase(trim(entry.getValue()), TRAILERS)) { out.add(TE, TRAILERS); } } else { List<CharSequence> teValues = unescapeCsvFields(entry.getValue()); for (CharSequence teValue : teValues) { if (contentEqualsIgnoreCase(trim(teValue), TRAILERS)) { out.add(TE, TRAILERS); break; } } } }