CombinedHttpHeaders Class — netty Architecture
Architecture documentation for the CombinedHttpHeaders class in CombinedHttpHeaders.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 1d5ea7b9_1918_6810_00ba_2c0bd2be2d01["CombinedHttpHeaders"] 7d237250_4ac8_8b98_b4de_00c65187b742["CombinedHttpHeaders.java"] 1d5ea7b9_1918_6810_00ba_2c0bd2be2d01 -->|defined in| 7d237250_4ac8_8b98_b4de_00c65187b742 a39b222f_5789_5457_4b56_858a40a7d77d["CombinedHttpHeaders()"] 1d5ea7b9_1918_6810_00ba_2c0bd2be2d01 -->|method| a39b222f_5789_5457_4b56_858a40a7d77d 69960f6e_84c5_730a_b457_283e7627cfe9["containsValue()"] 1d5ea7b9_1918_6810_00ba_2c0bd2be2d01 -->|method| 69960f6e_84c5_730a_b457_283e7627cfe9
Relationship Graph
Source Code
codec-http/src/main/java/io/netty/handler/codec/http/CombinedHttpHeaders.java lines 43–342
public class CombinedHttpHeaders extends DefaultHttpHeaders {
/**
* Create a combined HTTP header object, with optional validation.
*
* @param validate Should Netty validate header values to ensure they aren't malicious.
* @deprecated Prefer instead to configuring a {@link HttpHeadersFactory}
* by calling {@link DefaultHttpHeadersFactory#withCombiningHeaders(boolean) withCombiningHeaders(true)}
* on {@link DefaultHttpHeadersFactory#headersFactory()}.
*/
@Deprecated
public CombinedHttpHeaders(boolean validate) {
super(new CombinedHttpHeadersImpl(CASE_INSENSITIVE_HASHER, valueConverter(), nameValidator(validate),
valueValidator(validate)));
}
CombinedHttpHeaders(NameValidator<CharSequence> nameValidator, ValueValidator<CharSequence> valueValidator) {
super(new CombinedHttpHeadersImpl(
CASE_INSENSITIVE_HASHER,
valueConverter(),
checkNotNull(nameValidator, "nameValidator"),
checkNotNull(valueValidator, "valueValidator")));
}
CombinedHttpHeaders(
NameValidator<CharSequence> nameValidator, ValueValidator<CharSequence> valueValidator, int sizeHint) {
super(new CombinedHttpHeadersImpl(
CASE_INSENSITIVE_HASHER,
valueConverter(),
checkNotNull(nameValidator, "nameValidator"),
checkNotNull(valueValidator, "valueValidator"),
sizeHint));
}
@Override
public boolean containsValue(CharSequence name, CharSequence value, boolean ignoreCase) {
return super.containsValue(name, StringUtil.trimOws(value), ignoreCase);
}
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,
Source
Frequently Asked Questions
What is the CombinedHttpHeaders class?
CombinedHttpHeaders is a class in the netty codebase, defined in codec-http/src/main/java/io/netty/handler/codec/http/CombinedHttpHeaders.java.
Where is CombinedHttpHeaders defined?
CombinedHttpHeaders is defined in codec-http/src/main/java/io/netty/handler/codec/http/CombinedHttpHeaders.java at line 43.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free