DefaultHttpHeadersFactory Class — netty Architecture
Architecture documentation for the DefaultHttpHeadersFactory class in DefaultHttpHeadersFactory.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD f689b6bf_9f2d_e14a_6689_0595e02ddf17["DefaultHttpHeadersFactory"] b404534a_d1f8_5d55_284f_0b4e8258a435["DefaultHttpHeadersFactory.java"] f689b6bf_9f2d_e14a_6689_0595e02ddf17 -->|defined in| b404534a_d1f8_5d55_284f_0b4e8258a435 5b1ebf76_42b8_90e1_d37e_d38b2f0c2335["DefaultHttpHeadersFactory()"] f689b6bf_9f2d_e14a_6689_0595e02ddf17 -->|method| 5b1ebf76_42b8_90e1_d37e_d38b2f0c2335 e3663625_0925_4423_bb61_c0d622aad2ed["HttpHeaders()"] f689b6bf_9f2d_e14a_6689_0595e02ddf17 -->|method| e3663625_0925_4423_bb61_c0d622aad2ed 774d1a6f_1020_0415_b6eb_9df460688987["getNameValidator()"] f689b6bf_9f2d_e14a_6689_0595e02ddf17 -->|method| 774d1a6f_1020_0415_b6eb_9df460688987 f4d6f885_826e_2bd6_0806_681c962fa533["getValueValidator()"] f689b6bf_9f2d_e14a_6689_0595e02ddf17 -->|method| f4d6f885_826e_2bd6_0806_681c962fa533 7fd53e8e_c639_72fc_4a25_8954025e22f7["isCombiningHeaders()"] f689b6bf_9f2d_e14a_6689_0595e02ddf17 -->|method| 7fd53e8e_c639_72fc_4a25_8954025e22f7 7aa87785_ff42_482b_e301_838ac55366d7["isValidatingHeaderNames()"] f689b6bf_9f2d_e14a_6689_0595e02ddf17 -->|method| 7aa87785_ff42_482b_e301_838ac55366d7 faf7e278_7070_9839_0e48_530574be37a8["isValidatingHeaderValues()"] f689b6bf_9f2d_e14a_6689_0595e02ddf17 -->|method| faf7e278_7070_9839_0e48_530574be37a8
Relationship Graph
Source Code
codec-http/src/main/java/io/netty/handler/codec/http/DefaultHttpHeadersFactory.java lines 29–313
public final class DefaultHttpHeadersFactory implements HttpHeadersFactory {
private static final NameValidator<CharSequence> DEFAULT_NAME_VALIDATOR = new NameValidator<CharSequence>() {
@Override
public void validateName(CharSequence name) {
if (name == null || name.length() == 0) {
throw new IllegalArgumentException("empty headers are not allowed [" + name + ']');
}
int index = HttpHeaderValidationUtil.validateToken(name);
if (index != -1) {
throw new IllegalArgumentException("a header name can only contain \"token\" characters, " +
"but found invalid character 0x" + Integer.toHexString(name.charAt(index)) +
" at index " + index + " of header '" + name + "'.");
}
}
};
private static final ValueValidator<CharSequence> DEFAULT_VALUE_VALIDATOR = new ValueValidator<CharSequence>() {
@Override
public void validate(CharSequence value) {
int index = HttpHeaderValidationUtil.validateValidHeaderValue(value);
if (index != -1) {
throw new IllegalArgumentException("a header value contains prohibited character 0x" +
Integer.toHexString(value.charAt(index)) + " at index " + index + '.');
}
}
};
private static final NameValidator<CharSequence> DEFAULT_TRAILER_NAME_VALIDATOR =
new NameValidator<CharSequence>() {
@Override
public void validateName(CharSequence name) {
DEFAULT_NAME_VALIDATOR.validateName(name);
if (HttpHeaderNames.CONTENT_LENGTH.contentEqualsIgnoreCase(name)
|| HttpHeaderNames.TRANSFER_ENCODING.contentEqualsIgnoreCase(name)
|| HttpHeaderNames.TRAILER.contentEqualsIgnoreCase(name)) {
throw new IllegalArgumentException("prohibited trailing header: " + name);
}
}
};
@SuppressWarnings("unchecked")
private static final NameValidator<CharSequence> NO_NAME_VALIDATOR = NameValidator.NOT_NULL;
@SuppressWarnings("unchecked")
private static final ValueValidator<CharSequence> NO_VALUE_VALIDATOR =
(ValueValidator<CharSequence>) ValueValidator.NO_VALIDATION;
private static final DefaultHttpHeadersFactory DEFAULT =
new DefaultHttpHeadersFactory(DEFAULT_NAME_VALIDATOR, DEFAULT_VALUE_VALIDATOR, false);
private static final DefaultHttpHeadersFactory DEFAULT_TRAILER =
new DefaultHttpHeadersFactory(DEFAULT_TRAILER_NAME_VALIDATOR, DEFAULT_VALUE_VALIDATOR, false);
private static final DefaultHttpHeadersFactory DEFAULT_COMBINING =
new DefaultHttpHeadersFactory(DEFAULT.nameValidator, DEFAULT.valueValidator, true);
private static final DefaultHttpHeadersFactory DEFAULT_NO_VALIDATION =
new DefaultHttpHeadersFactory(NO_NAME_VALIDATOR, NO_VALUE_VALIDATOR, false);
private final NameValidator<CharSequence> nameValidator;
private final ValueValidator<CharSequence> valueValidator;
private final boolean combiningHeaders;
/**
* Create a header builder with the given settings.
*
* @param nameValidator The name validator to use, not null.
* @param valueValidator The value validator to use, not null.
* @param combiningHeaders {@code true} if multi-valued headers should be combined into single lines.
*/
private DefaultHttpHeadersFactory(
NameValidator<CharSequence> nameValidator,
ValueValidator<CharSequence> valueValidator,
boolean combiningHeaders) {
this.nameValidator = checkNotNull(nameValidator, "nameValidator");
this.valueValidator = checkNotNull(valueValidator, "valueValidator");
this.combiningHeaders = combiningHeaders;
}
/**
* Get the default implementation of {@link HttpHeadersFactory} for creating headers.
* <p>
* This {@link DefaultHttpHeadersFactory} creates {@link HttpHeaders} instances that has the
* recommended header validation enabled.
*/
public static DefaultHttpHeadersFactory headersFactory() {
return DEFAULT;
Source
Frequently Asked Questions
What is the DefaultHttpHeadersFactory class?
DefaultHttpHeadersFactory is a class in the netty codebase, defined in codec-http/src/main/java/io/netty/handler/codec/http/DefaultHttpHeadersFactory.java.
Where is DefaultHttpHeadersFactory defined?
DefaultHttpHeadersFactory is defined in codec-http/src/main/java/io/netty/handler/codec/http/DefaultHttpHeadersFactory.java at line 29.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free