CombinedHttpHeadersImpl Class — netty Architecture
Architecture documentation for the CombinedHttpHeadersImpl class in CombinedHttpHeaders.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 9e217e1e_9b57_1d96_f298_a9e30efe0bbd["CombinedHttpHeadersImpl"] 7d237250_4ac8_8b98_b4de_00c65187b742["CombinedHttpHeaders.java"] 9e217e1e_9b57_1d96_f298_a9e30efe0bbd -->|defined in| 7d237250_4ac8_8b98_b4de_00c65187b742 a5725131_ea44_70ab_096e_199255a61a10["objectEscaper()"] 9e217e1e_9b57_1d96_f298_a9e30efe0bbd -->|method| a5725131_ea44_70ab_096e_199255a61a10 c2f10041_4cb2_bba1_af2c_dba07619345e["charSequenceEscaper()"] 9e217e1e_9b57_1d96_f298_a9e30efe0bbd -->|method| c2f10041_4cb2_bba1_af2c_dba07619345e 80d8b152_2676_88b7_eb72_c3de07af48f4["CombinedHttpHeadersImpl()"] 9e217e1e_9b57_1d96_f298_a9e30efe0bbd -->|method| 80d8b152_2676_88b7_eb72_c3de07af48f4 8a5c723c_34e0_a340_cae6_6684b354647e["valueIterator()"] 9e217e1e_9b57_1d96_f298_a9e30efe0bbd -->|method| 8a5c723c_34e0_a340_cae6_6684b354647e c2164211_fe37_0d01_80e7_ef5948b1669c["containsAny()"] 9e217e1e_9b57_1d96_f298_a9e30efe0bbd -->|method| c2164211_fe37_0d01_80e7_ef5948b1669c e0a6008f_f2c0_a759_9663_da4ea7427ec0["getAll()"] 9e217e1e_9b57_1d96_f298_a9e30efe0bbd -->|method| e0a6008f_f2c0_a759_9663_da4ea7427ec0 83c6e5d9_33a2_16ed_02b1_a46a14ca7931["cannotBeCombined()"] 9e217e1e_9b57_1d96_f298_a9e30efe0bbd -->|method| 83c6e5d9_33a2_16ed_02b1_a46a14ca7931 387875ae_fa7d_1229_1d71_46bfd7e8a67b["CharSequence()"] 9e217e1e_9b57_1d96_f298_a9e30efe0bbd -->|method| 387875ae_fa7d_1229_1d71_46bfd7e8a67b
Relationship Graph
Source Code
codec-http/src/main/java/io/netty/handler/codec/http/CombinedHttpHeaders.java lines 81–341
private static final class CombinedHttpHeadersImpl
extends DefaultHeaders<CharSequence, CharSequence, CombinedHttpHeadersImpl> {
/**
* An estimate of the size of a header value.
*/
private static final int VALUE_LENGTH_ESTIMATE = 10;
private CsvValueEscaper<Object> objectEscaper;
private CsvValueEscaper<CharSequence> charSequenceEscaper;
private CsvValueEscaper<Object> objectEscaper() {
if (objectEscaper == null) {
objectEscaper = new CsvValueEscaper<Object>() {
@Override
public CharSequence escape(CharSequence name, Object value) {
CharSequence converted;
try {
converted = valueConverter().convertObject(value);
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException(
"Failed to convert object value for header '" + name + '\'', e);
}
return StringUtil.escapeCsv(converted, true);
}
};
}
return objectEscaper;
}
private CsvValueEscaper<CharSequence> charSequenceEscaper() {
if (charSequenceEscaper == null) {
charSequenceEscaper = new CsvValueEscaper<CharSequence>() {
@Override
public CharSequence escape(CharSequence name, CharSequence value) {
return StringUtil.escapeCsv(value, true);
}
};
}
return charSequenceEscaper;
}
CombinedHttpHeadersImpl(HashingStrategy<CharSequence> nameHashingStrategy,
ValueConverter<CharSequence> valueConverter,
NameValidator<CharSequence> nameValidator,
ValueValidator<CharSequence> valueValidator) {
this(nameHashingStrategy, valueConverter, nameValidator, valueValidator, 16);
}
CombinedHttpHeadersImpl(HashingStrategy<CharSequence> nameHashingStrategy,
ValueConverter<CharSequence> valueConverter,
NameValidator<CharSequence> nameValidator,
ValueValidator<CharSequence> valueValidator,
int sizeHint) {
super(nameHashingStrategy, valueConverter, nameValidator, sizeHint, valueValidator);
}
@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 boolean containsAny(CharSequence name, CharSequence predicateArg,
BiPredicate<? super CharSequence, ? super CharSequence> valuePredicate) {
Iterator<CharSequence> itr = valueIterator(name);
while (itr.hasNext()) {
if (valuePredicate.test(itr.next(), predicateArg)) {
return true;
}
}
return false;
}
@Override
Source
Frequently Asked Questions
What is the CombinedHttpHeadersImpl class?
CombinedHttpHeadersImpl is a class in the netty codebase, defined in codec-http/src/main/java/io/netty/handler/codec/http/CombinedHttpHeaders.java.
Where is CombinedHttpHeadersImpl defined?
CombinedHttpHeadersImpl is defined in codec-http/src/main/java/io/netty/handler/codec/http/CombinedHttpHeaders.java at line 81.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free