@@ -57,7 +57,7 @@ private static final class RequestImpl implements Request {
57
57
private InetAddress address ;
58
58
private InetAddress localAddress ;
59
59
private FluentCaseInsensitiveStringsMap headers = new FluentCaseInsensitiveStringsMap ();
60
- private Collection <Cookie > cookies = new ArrayList < Cookie >() ;
60
+ private ArrayList <Cookie > cookies ;
61
61
private byte [] byteData ;
62
62
private String stringData ;
63
63
private InputStream streamData ;
@@ -226,7 +226,7 @@ public FluentCaseInsensitiveStringsMap getHeaders() {
226
226
227
227
/* @Override */
228
228
public Collection <Cookie > getCookies () {
229
- return Collections .unmodifiableCollection (cookies );
229
+ return cookies != null ? Collections .unmodifiableCollection (cookies ) : Collections .< Cookie > emptyList ( );
230
230
}
231
231
232
232
/* @Override */
@@ -460,17 +460,49 @@ public T setContentLength(int length) {
460
460
return derived .cast (this );
461
461
}
462
462
463
+ private void lazyInitCookies () {
464
+ if (request .cookies == null )
465
+ request .cookies = new ArrayList <Cookie >(3 );
466
+ }
467
+
468
+ public T setCookies (Collection <Cookie > cookies ) {
469
+ request .cookies = new ArrayList <Cookie >(cookies );
470
+ return derived .cast (this );
471
+ }
472
+
463
473
public T addCookie (Cookie cookie ) {
474
+ lazyInitCookies ();
464
475
request .cookies .add (cookie );
465
476
return derived .cast (this );
466
477
}
467
478
468
- public void resetQueryParameters () {
469
- request .queryParams = null ;
479
+ public T addOrReplaceCookie (Cookie cookie ) {
480
+ String cookieKey = cookie .getName ();
481
+ boolean replace = false ;
482
+ int index = 0 ;
483
+ lazyInitCookies ();
484
+ for (Cookie c : request .cookies ) {
485
+ if (c .getName ().equals (cookieKey )) {
486
+ replace = true ;
487
+ break ;
488
+ }
489
+
490
+ index ++;
491
+ }
492
+ if (replace )
493
+ request .cookies .set (index , cookie );
494
+ else
495
+ request .cookies .add (cookie );
496
+ return derived .cast (this );
470
497
}
471
498
472
499
public void resetCookies () {
473
- request .cookies .clear ();;
500
+ if (request .cookies != null )
501
+ request .cookies .clear ();
502
+ }
503
+
504
+ public void resetQueryParameters () {
505
+ request .queryParams = null ;
474
506
}
475
507
476
508
public void resetParameters () {
@@ -686,24 +718,4 @@ public Request build() {
686
718
computeRequestLength ();
687
719
return request ;
688
720
}
689
-
690
- public T addOrReplaceCookie (Cookie cookie ) {
691
- String cookieKey = cookie .getName ();
692
- boolean replace = false ;
693
- int index = 0 ;
694
- for (Cookie c : request .cookies ) {
695
- if (c .getName ().equals (cookieKey )) {
696
- replace = true ;
697
- break ;
698
- }
699
-
700
- index ++;
701
- }
702
- if (replace ) {
703
- ((ArrayList <Cookie >) request .cookies ).set (index , cookie );
704
- } else {
705
- request .cookies .add (cookie );
706
- }
707
- return derived .cast (this );
708
- }
709
721
}
0 commit comments