CookieBuilder Class — netty Architecture
Architecture documentation for the CookieBuilder class in ClientCookieDecoder.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 5bdbdd2f_66bb_a2b0_d381_9110e8d7de38["CookieBuilder"] e327414f_4b94_95f7_3704_b6b4e2d85cc3["ClientCookieDecoder.java"] 5bdbdd2f_66bb_a2b0_d381_9110e8d7de38 -->|defined in| e327414f_4b94_95f7_3704_b6b4e2d85cc3 55d2cd63_4655_a8ee_58d0_4380da9e0f03["CookieBuilder()"] 5bdbdd2f_66bb_a2b0_d381_9110e8d7de38 -->|method| 55d2cd63_4655_a8ee_58d0_4380da9e0f03 3f3bd44b_862c_a0eb_b428_e8e9c9b48ed2["mergeMaxAgeAndExpires()"] 5bdbdd2f_66bb_a2b0_d381_9110e8d7de38 -->|method| 3f3bd44b_862c_a0eb_b428_e8e9c9b48ed2 66120cdd_a67a_b08a_d8e5_c2309de2d4f0["Cookie()"] 5bdbdd2f_66bb_a2b0_d381_9110e8d7de38 -->|method| 66120cdd_a67a_b08a_d8e5_c2309de2d4f0 d60cac5a_e112_2a4d_8085_70466b0f5c5d["appendAttribute()"] 5bdbdd2f_66bb_a2b0_d381_9110e8d7de38 -->|method| d60cac5a_e112_2a4d_8085_70466b0f5c5d 05264edb_e391_eba3_d21a_8a0eb5a58278["parse4()"] 5bdbdd2f_66bb_a2b0_d381_9110e8d7de38 -->|method| 05264edb_e391_eba3_d21a_8a0eb5a58278 2066cc48_c168_cea4_1cfc_ca4a656a72e1["parse6()"] 5bdbdd2f_66bb_a2b0_d381_9110e8d7de38 -->|method| 2066cc48_c168_cea4_1cfc_ca4a656a72e1 cc792028_f6b1_4c04_665b_b56d6212caf2["setMaxAge()"] 5bdbdd2f_66bb_a2b0_d381_9110e8d7de38 -->|method| cc792028_f6b1_4c04_665b_b56d6212caf2 6fc36097_3cca_2532_5c82_f456eade1d6a["parse7()"] 5bdbdd2f_66bb_a2b0_d381_9110e8d7de38 -->|method| 6fc36097_3cca_2532_5c82_f456eade1d6a 7ffca827_8c4a_b9bd_a2cd_c6ba8c71a58a["parse8()"] 5bdbdd2f_66bb_a2b0_d381_9110e8d7de38 -->|method| 7ffca827_8c4a_b9bd_a2cd_c6ba8c71a58a 9f201525_1fd3_adec_3295_7d9a7c65022a["parse11()"] 5bdbdd2f_66bb_a2b0_d381_9110e8d7de38 -->|method| 9f201525_1fd3_adec_3295_7d9a7c65022a f00aedfd_6b04_0e36_2056_786e4a7e36f9["isValueDefined()"] 5bdbdd2f_66bb_a2b0_d381_9110e8d7de38 -->|method| f00aedfd_6b04_0e36_2056_786e4a7e36f9 469247ba_e9cd_9c8f_1eab_b696c845c511["String()"] 5bdbdd2f_66bb_a2b0_d381_9110e8d7de38 -->|method| 469247ba_e9cd_9c8f_1eab_b696c845c511
Relationship Graph
Source Code
codec-http/src/main/java/io/netty/handler/codec/http/cookie/ClientCookieDecoder.java lines 147–272
private static class CookieBuilder {
private final String header;
private final DefaultCookie cookie;
private String domain;
private String path;
private long maxAge = Long.MIN_VALUE;
private int expiresStart;
private int expiresEnd;
private boolean secure;
private boolean httpOnly;
private SameSite sameSite;
private boolean partitioned;
CookieBuilder(DefaultCookie cookie, String header) {
this.cookie = cookie;
this.header = header;
}
private long mergeMaxAgeAndExpires() {
// max age has precedence over expires
if (maxAge != Long.MIN_VALUE) {
return maxAge;
} else if (isValueDefined(expiresStart, expiresEnd)) {
Date expiresDate = DateFormatter.parseHttpDate(header, expiresStart, expiresEnd);
if (expiresDate != null) {
long maxAgeMillis = expiresDate.getTime() - System.currentTimeMillis();
return maxAgeMillis / 1000 + (maxAgeMillis % 1000 != 0 ? 1 : 0);
}
}
return Long.MIN_VALUE;
}
Cookie cookie() {
cookie.setDomain(domain);
cookie.setPath(path);
cookie.setMaxAge(mergeMaxAgeAndExpires());
cookie.setSecure(secure);
cookie.setHttpOnly(httpOnly);
cookie.setSameSite(sameSite);
cookie.setPartitioned(partitioned);
return cookie;
}
/**
* Parse and store a key-value pair. First one is considered to be the
* cookie name/value. Unknown attribute names are silently discarded.
*
* @param keyStart
* where the key starts in the header
* @param keyEnd
* where the key ends in the header
* @param valueStart
* where the value starts in the header
* @param valueEnd
* where the value ends in the header
*/
void appendAttribute(int keyStart, int keyEnd, int valueStart, int valueEnd) {
int length = keyEnd - keyStart;
if (length == 4) {
parse4(keyStart, valueStart, valueEnd);
} else if (length == 6) {
parse6(keyStart, valueStart, valueEnd);
} else if (length == 7) {
parse7(keyStart, valueStart, valueEnd);
} else if (length == 8) {
parse8(keyStart, valueStart, valueEnd);
} else if (length == 11) {
parse11(keyStart);
}
}
private void parse4(int nameStart, int valueStart, int valueEnd) {
if (header.regionMatches(true, nameStart, CookieHeaderNames.PATH, 0, 4)) {
path = computeValue(valueStart, valueEnd);
}
}
private void parse6(int nameStart, int valueStart, int valueEnd) {
if (header.regionMatches(true, nameStart, CookieHeaderNames.DOMAIN, 0, 5)) {
Source
Frequently Asked Questions
What is the CookieBuilder class?
CookieBuilder is a class in the netty codebase, defined in codec-http/src/main/java/io/netty/handler/codec/http/cookie/ClientCookieDecoder.java.
Where is CookieBuilder defined?
CookieBuilder is defined in codec-http/src/main/java/io/netty/handler/codec/http/cookie/ClientCookieDecoder.java at line 147.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free