Home / Class/ DefaultHttpHeadersFactory Class — netty Architecture

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;

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