Skip to content

Commit 8bb9849

Browse files
author
Stephane Landelle
committed
Lazy init Request cookies list, add set(Collection) method, close AsyncHttpClient#584
1 parent 6ff459a commit 8bb9849

File tree

1 file changed

+37
-25
lines changed

1 file changed

+37
-25
lines changed

src/main/java/com/ning/http/client/RequestBuilderBase.java

Lines changed: 37 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ private static final class RequestImpl implements Request {
5757
private InetAddress address;
5858
private InetAddress localAddress;
5959
private FluentCaseInsensitiveStringsMap headers = new FluentCaseInsensitiveStringsMap();
60-
private Collection<Cookie> cookies = new ArrayList<Cookie>();
60+
private ArrayList<Cookie> cookies;
6161
private byte[] byteData;
6262
private String stringData;
6363
private InputStream streamData;
@@ -226,7 +226,7 @@ public FluentCaseInsensitiveStringsMap getHeaders() {
226226

227227
/* @Override */
228228
public Collection<Cookie> getCookies() {
229-
return Collections.unmodifiableCollection(cookies);
229+
return cookies != null ? Collections.unmodifiableCollection(cookies) : Collections.<Cookie> emptyList();
230230
}
231231

232232
/* @Override */
@@ -460,17 +460,49 @@ public T setContentLength(int length) {
460460
return derived.cast(this);
461461
}
462462

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+
463473
public T addCookie(Cookie cookie) {
474+
lazyInitCookies();
464475
request.cookies.add(cookie);
465476
return derived.cast(this);
466477
}
467478

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);
470497
}
471498

472499
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;
474506
}
475507

476508
public void resetParameters() {
@@ -686,24 +718,4 @@ public Request build() {
686718
computeRequestLength();
687719
return request;
688720
}
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-
}
709721
}

0 commit comments

Comments
 (0)