Home / Class/ ReadOnlyHttpHeaders Class — netty Architecture

ReadOnlyHttpHeaders Class — netty Architecture

Architecture documentation for the ReadOnlyHttpHeaders class in ReadOnlyHttpHeaders.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  2bbea49a_9f02_fdb8_1113_8beb98d6647a["ReadOnlyHttpHeaders"]
  9c0d840a_0c24_0113_a05c_3a195f469a49["ReadOnlyHttpHeaders.java"]
  2bbea49a_9f02_fdb8_1113_8beb98d6647a -->|defined in| 9c0d840a_0c24_0113_a05c_3a195f469a49
  b79bf6c8_0fe1_71f8_dee3_506ea9f49d15["ReadOnlyHttpHeaders()"]
  2bbea49a_9f02_fdb8_1113_8beb98d6647a -->|method| b79bf6c8_0fe1_71f8_dee3_506ea9f49d15
  ed067a25_3070_9652_4867_a459cbc3a9f6["IllegalArgumentException()"]
  2bbea49a_9f02_fdb8_1113_8beb98d6647a -->|method| ed067a25_3070_9652_4867_a459cbc3a9f6
  980ca9ea_7af6_a865_e1d4_e82ec7fdeb13["validateHeaders()"]
  2bbea49a_9f02_fdb8_1113_8beb98d6647a -->|method| 980ca9ea_7af6_a865_e1d4_e82ec7fdeb13
  d9212fe8_faa7_dad1_eb96_6d64147db066["CharSequence()"]
  2bbea49a_9f02_fdb8_1113_8beb98d6647a -->|method| d9212fe8_faa7_dad1_eb96_6d64147db066
  d2f8f3ba_6052_28d6_eb5b_583f48b7c077["String()"]
  2bbea49a_9f02_fdb8_1113_8beb98d6647a -->|method| d2f8f3ba_6052_28d6_eb5b_583f48b7c077
  8a4f07f6_8b82_8070_7bd5_86ad8162d541["Integer()"]
  2bbea49a_9f02_fdb8_1113_8beb98d6647a -->|method| 8a4f07f6_8b82_8070_7bd5_86ad8162d541
  07b9a52f_1c98_d8f4_d835_dfadc1662d65["getInt()"]
  2bbea49a_9f02_fdb8_1113_8beb98d6647a -->|method| 07b9a52f_1c98_d8f4_d835_dfadc1662d65
  d2936c7d_e5a3_562e_20ab_c507d3a9ac26["Short()"]
  2bbea49a_9f02_fdb8_1113_8beb98d6647a -->|method| d2936c7d_e5a3_562e_20ab_c507d3a9ac26
  2e30dce2_d4cb_0bbc_0ce7_c514797927af["getShort()"]
  2bbea49a_9f02_fdb8_1113_8beb98d6647a -->|method| 2e30dce2_d4cb_0bbc_0ce7_c514797927af
  f06791fe_1360_2bf2_f11a_2a3bd2c4944b["Long()"]
  2bbea49a_9f02_fdb8_1113_8beb98d6647a -->|method| f06791fe_1360_2bf2_f11a_2a3bd2c4944b
  50cf6fd4_2b78_17a8_4868_17f7104b794e["getTimeMillis()"]
  2bbea49a_9f02_fdb8_1113_8beb98d6647a -->|method| 50cf6fd4_2b78_17a8_4868_17f7104b794e
  37628aa0_bee7_a334_1617_186c48882c32["getAll()"]
  2bbea49a_9f02_fdb8_1113_8beb98d6647a -->|method| 37628aa0_bee7_a334_1617_186c48882c32
  cea9923b_ed65_51a8_fdf3_24547f04cfc4["entries()"]
  2bbea49a_9f02_fdb8_1113_8beb98d6647a -->|method| cea9923b_ed65_51a8_fdf3_24547f04cfc4

Relationship Graph

Source Code

codec-http/src/main/java/io/netty/handler/codec/http/ReadOnlyHttpHeaders.java lines 44–459

@UnstableApi
public final class ReadOnlyHttpHeaders extends HttpHeaders {
    private final CharSequence[] nameValuePairs;

    /**
     * Create a new instance.
     * @param validateHeaders {@code true} to validate the contents of each header name.
     * @param nameValuePairs An array of the structure {@code [<name,value>,<name,value>,...]}.
     *                      A copy will <strong>NOT</strong> be made of this array. If the contents of this array
     *                      may be modified externally you are responsible for passing in a copy.
     */
    public ReadOnlyHttpHeaders(boolean validateHeaders, CharSequence... nameValuePairs) {
        if ((nameValuePairs.length & 1) != 0) {
            throw newInvalidArraySizeException();
        }
        if (validateHeaders) {
            validateHeaders(nameValuePairs);
        }
        this.nameValuePairs = nameValuePairs;
    }

    private static IllegalArgumentException newInvalidArraySizeException() {
        return new IllegalArgumentException("nameValuePairs must be arrays of [name, value] pairs");
    }

    private static void validateHeaders(CharSequence... keyValuePairs) {
        for (int i = 0; i < keyValuePairs.length; i += 2) {
            DefaultHttpHeadersFactory.headersFactory().getNameValidator().validateName(keyValuePairs[i]);
        }
    }

    private CharSequence get0(CharSequence name) {
        final int nameHash = AsciiString.hashCode(name);
        for (int i = 0; i < nameValuePairs.length; i += 2) {
            CharSequence roName = nameValuePairs[i];
            if (AsciiString.hashCode(roName) == nameHash && contentEqualsIgnoreCase(roName, name)) {
                // Suppress a warning out of bounds access since the constructor allows only pairs
                return nameValuePairs[i + 1];
            }
        }
        return null;
    }

    @Override
    public String get(String name) {
        CharSequence value = get0(name);
        return value == null ? null : value.toString();
    }

    @Override
    public Integer getInt(CharSequence name) {
        CharSequence value = get0(name);
        return value == null ? null : INSTANCE.convertToInt(value);
    }

    @Override
    public int getInt(CharSequence name, int defaultValue) {
        CharSequence value = get0(name);
        return value == null ? defaultValue : INSTANCE.convertToInt(value);
    }

    @Override
    public Short getShort(CharSequence name) {
        CharSequence value = get0(name);
        return value == null ? null : INSTANCE.convertToShort(value);
    }

    @Override
    public short getShort(CharSequence name, short defaultValue) {
        CharSequence value = get0(name);
        return value == null ? defaultValue : INSTANCE.convertToShort(value);
    }

    @Override
    public Long getTimeMillis(CharSequence name) {
        CharSequence value = get0(name);
        return value == null ? null : INSTANCE.convertToTimeMillis(value);
    }

    @Override
    public long getTimeMillis(CharSequence name, long defaultValue) {

Frequently Asked Questions

What is the ReadOnlyHttpHeaders class?
ReadOnlyHttpHeaders is a class in the netty codebase, defined in codec-http/src/main/java/io/netty/handler/codec/http/ReadOnlyHttpHeaders.java.
Where is ReadOnlyHttpHeaders defined?
ReadOnlyHttpHeaders is defined in codec-http/src/main/java/io/netty/handler/codec/http/ReadOnlyHttpHeaders.java at line 44.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free