Home / Class/ CombinedHttpHeaders Class — netty Architecture

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,

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