Home / Class/ AbstractHttpData Class — netty Architecture

AbstractHttpData Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  14418a44_5c0f_1bba_1821_88b876152db3["AbstractHttpData"]
  0819f744_c02a_1c6f_042d_1a09d1543228["AbstractHttpData.java"]
  14418a44_5c0f_1bba_1821_88b876152db3 -->|defined in| 0819f744_c02a_1c6f_042d_1a09d1543228
  d554bde0_19bc_ad37_e7b3_13ccd6ea3c02["AbstractHttpData()"]
  14418a44_5c0f_1bba_1821_88b876152db3 -->|method| d554bde0_19bc_ad37_e7b3_13ccd6ea3c02
  1553a0ee_a84a_7273_3ccc_36d13c16215a["String()"]
  14418a44_5c0f_1bba_1821_88b876152db3 -->|method| 1553a0ee_a84a_7273_3ccc_36d13c16215a
  dbb68322_2fb7_f1cf_49c0_cffdff26029b["getMaxSize()"]
  14418a44_5c0f_1bba_1821_88b876152db3 -->|method| dbb68322_2fb7_f1cf_49c0_cffdff26029b
  8822b22d_dbd1_24c6_5d68_f63801b88e1d["setMaxSize()"]
  14418a44_5c0f_1bba_1821_88b876152db3 -->|method| 8822b22d_dbd1_24c6_5d68_f63801b88e1d
  8062c362_e377_8fd2_45fe_a11f1139d80c["checkSize()"]
  14418a44_5c0f_1bba_1821_88b876152db3 -->|method| 8062c362_e377_8fd2_45fe_a11f1139d80c
  080b644a_aa32_0a75_b0b9_29022403b086["isCompleted()"]
  14418a44_5c0f_1bba_1821_88b876152db3 -->|method| 080b644a_aa32_0a75_b0b9_29022403b086
  4fefbdc0_0749_731b_76b6_77ff9b049373["setCompleted()"]
  14418a44_5c0f_1bba_1821_88b876152db3 -->|method| 4fefbdc0_0749_731b_76b6_77ff9b049373
  ca99fbc9_d6dd_3393_d390_fba50bf01f27["Charset()"]
  14418a44_5c0f_1bba_1821_88b876152db3 -->|method| ca99fbc9_d6dd_3393_d390_fba50bf01f27
  5b676da9_08fa_b0b3_6ce2_8136bc0c24d2["setCharset()"]
  14418a44_5c0f_1bba_1821_88b876152db3 -->|method| 5b676da9_08fa_b0b3_6ce2_8136bc0c24d2
  947a8194_72bf_7663_342e_e237708df362["length()"]
  14418a44_5c0f_1bba_1821_88b876152db3 -->|method| 947a8194_72bf_7663_342e_e237708df362
  6616d5ba_2cfd_9d31_1ad6_9ab7c1124234["definedLength()"]
  14418a44_5c0f_1bba_1821_88b876152db3 -->|method| 6616d5ba_2cfd_9d31_1ad6_9ab7c1124234
  7527a109_7bf4_c265_3b49_7250a10270e5["ByteBuf()"]
  14418a44_5c0f_1bba_1821_88b876152db3 -->|method| 7527a109_7bf4_c265_3b49_7250a10270e5
  77c938ed_1a12_68d2_2b2d_f579946aabf4["deallocate()"]
  14418a44_5c0f_1bba_1821_88b876152db3 -->|method| 77c938ed_1a12_68d2_2b2d_f579946aabf4

Relationship Graph

Source Code

codec-http/src/main/java/io/netty/handler/codec/http/multipart/AbstractHttpData.java lines 32–183

public abstract class AbstractHttpData extends AbstractReferenceCounted implements HttpData {

    private final String name;
    protected long definedSize;
    protected long size;
    private Charset charset = HttpConstants.DEFAULT_CHARSET;
    private boolean completed;
    private long maxSize = DefaultHttpDataFactory.MAXSIZE;

    protected AbstractHttpData(String name, Charset charset, long size) {
        ObjectUtil.checkNotNull(name, "name");

        this.name = checkNonEmpty(cleanName(name), "name");
        if (charset != null) {
            setCharset(charset);
        }
        definedSize = size;
    }

    //Replaces \r and \t with a space
    //Removes leading and trailing whitespace and newlines
    private static String cleanName(String name) {
        int len = name.length();
        StringBuilder sb = null;

        int start = 0;
        int end = len;

        // Trim leading whitespace
        while (start < end && Character.isWhitespace(name.charAt(start))) {
            start++;
        }

        // Trim trailing whitespace
        while (end > start && Character.isWhitespace(name.charAt(end - 1))) {
            end--;
        }

        for (int i = start; i < end; i++) {
            char c = name.charAt(i);

            if (c == '\n') {
                // Skip newline entirely
                if (sb == null) {
                    sb = new StringBuilder(len);
                    sb.append(name, start, i);
                }
                continue;
            }

            if (c == '\r' || c == '\t') {
                if (sb == null) {
                    sb = new StringBuilder(len);
                    sb.append(name, start, i);
                }
                sb.append(' ');
            } else if (sb != null) {
                sb.append(c);
            }
        }

        // If no replacements were needed, return the trimmed slice
        return sb == null ? name.substring(start, end) : sb.toString();
    }

    @Override
    public long getMaxSize() {
        return maxSize;
    }

    @Override
    public void setMaxSize(long maxSize) {
        this.maxSize = maxSize;
    }

    @Override
    public void checkSize(long newSize) throws IOException {
        if (maxSize >= 0 && newSize > maxSize) {
            throw new IOException("Size exceed allowed maximum capacity");
        }
    }

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free