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");
}
}
Source
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