14
14
15
public class Cookie {
15
public class Cookie {
16
16
17
- public static Cookie newValidCookie (String name , String value , String rawValue , String domain , String path , long expires , int maxAge ,
17
+ public static Cookie newValidCookie (String name , String value , boolean wrap , String domain , String path , long expires , int maxAge , boolean secure , boolean httpOnly ) {
18
- boolean secure , boolean httpOnly ) {
19
18
20
if (name == null ) {
19
if (name == null ) {
21
throw new NullPointerException ("name" );
20
throw new NullPointerException ("name" );
22
}
21
}
23
name = name .trim ();
22
name = name .trim ();
24
- if (name .isEmpty () ) {
23
+ if (name .length () == 0 ) {
25
throw new IllegalArgumentException ("empty name" );
24
throw new IllegalArgumentException ("empty name" );
26
}
25
}
27
26
@@ -42,8 +41,7 @@ public static Cookie newValidCookie(String name, String value, String rawValue,
42
case ',' :
41
case ',' :
43
case ';' :
42
case ';' :
44
case '=' :
43
case '=' :
45
- throw new IllegalArgumentException ("name contains one of the following prohibited characters: " + "=,; \\ t\\ r\\ n\\ v\\ f: "
44
+ throw new IllegalArgumentException ("name contains one of the following prohibited characters: " + "=,; \\ t\\ r\\ n\\ v\\ f: " + name );
46
- + name );
47
}
45
}
48
}
46
}
49
47
@@ -58,15 +56,15 @@ public static Cookie newValidCookie(String name, String value, String rawValue,
58
domain = validateValue ("domain" , domain );
56
domain = validateValue ("domain" , domain );
59
path = validateValue ("path" , path );
57
path = validateValue ("path" , path );
60
58
61
- return new Cookie (name , value , rawValue , domain , path , expires , maxAge , secure , httpOnly );
59
+ return new Cookie (name , value , wrap , domain , path , expires , maxAge , secure , httpOnly );
62
}
60
}
63
61
64
private static String validateValue (String name , String value ) {
62
private static String validateValue (String name , String value ) {
65
if (value == null ) {
63
if (value == null ) {
66
return null ;
64
return null ;
67
}
65
}
68
value = value .trim ();
66
value = value .trim ();
69
- if (value .isEmpty () ) {
67
+ if (value .length () == 0 ) {
70
return null ;
68
return null ;
71
}
69
}
72
70
@@ -78,28 +76,26 @@ private static String validateValue(String name, String value) {
78
case '\f' :
76
case '\f' :
79
case 0x0b :
77
case 0x0b :
80
case ';' :
78
case ';' :
81
- throw new IllegalArgumentException (name + " contains one of the following prohibited characters: " + ";\\ r\\ n\\ f\\ v ("
79
+ throw new IllegalArgumentException (name + " contains one of the following prohibited characters: " + ";\\ r\\ n\\ f\\ v (" + value + ')' );
82
- + value + ')' );
83
}
80
}
84
}
81
}
85
return value ;
82
return value ;
86
}
83
}
87
84
88
private final String name ;
85
private final String name ;
89
private final String value ;
86
private final String value ;
90
- private final String rawValue ;
87
+ private final boolean wrap ;
91
private final String domain ;
88
private final String domain ;
92
private final String path ;
89
private final String path ;
93
private long expires ;
90
private long expires ;
94
private final int maxAge ;
91
private final int maxAge ;
95
private final boolean secure ;
92
private final boolean secure ;
96
private final boolean httpOnly ;
93
private final boolean httpOnly ;
97
94
98
- public Cookie (String name , String value , String rawValue , String domain , String path , long expires , int maxAge , boolean secure ,
95
+ public Cookie (String name , String value , boolean wrap , String domain , String path , long expires , int maxAge , boolean secure , boolean httpOnly ) {
99
- boolean httpOnly ) {
100
this .name = name ;
96
this .name = name ;
101
this .value = value ;
97
this .value = value ;
102
- this .rawValue = rawValue ;
98
+ this .wrap = wrap ;
103
this .domain = domain ;
99
this .domain = domain ;
104
this .path = path ;
100
this .path = path ;
105
this .expires = expires ;
101
this .expires = expires ;
@@ -120,8 +116,8 @@ public String getValue() {
120
return value ;
116
return value ;
121
}
117
}
122
118
123
- public String getRawValue () {
119
+ public boolean isWrap () {
124
- return rawValue ;
120
+ return wrap ;
125
}
121
}
126
122
127
public String getPath () {
123
public String getPath () {
@@ -131,7 +127,7 @@ public String getPath() {
131
public long getExpires () {
127
public long getExpires () {
132
return expires ;
128
return expires ;
133
}
129
}
134
-
130
+
135
public int getMaxAge () {
131
public int getMaxAge () {
136
return maxAge ;
132
return maxAge ;
137
}
133
}
@@ -149,7 +145,10 @@ public String toString() {
149
StringBuilder buf = new StringBuilder ();
145
StringBuilder buf = new StringBuilder ();
150
buf .append (name );
146
buf .append (name );
151
buf .append ('=' );
147
buf .append ('=' );
152
- buf .append (rawValue );
148
+ if (wrap )
149
+ buf .append ('"' ).append (value ).append ('"' );
150
+ else
151
+ buf .append (value );
153
if (domain != null ) {
152
if (domain != null ) {
154
buf .append ("; domain=" );
153
buf .append ("; domain=" );
155
buf .append (domain );
154
buf .append (domain );
0 commit comments