Home / Class/ CombinedHttpHeadersImpl Class — netty Architecture

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

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