Skip to content

Commit 3db03c3

Browse files
committed
Merge pull request AsyncHttpClient#1098 from truslan/pre-uri-set-npe-patch-1
fixed NPE that occured when setting query params before url was set
2 parents fbc6d48 + 86948f6 commit 3db03c3

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

client/src/main/java/org/asynchttpclient/RequestBuilderBase.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,8 @@ public void resetCookies() {
252252

253253
public void resetQuery() {
254254
queryParams = null;
255-
this.uri = this.uri.withNewQuery(null);
255+
if (this.uri != null)
256+
this.uri = this.uri.withNewQuery(null);
256257
}
257258

258259
public void resetFormParams() {
@@ -344,7 +345,7 @@ public T setQueryParams(Map<String, List<String>> map) {
344345

345346
public T setQueryParams(List<Param> params) {
346347
// reset existing query
347-
if (isNonEmpty(this.uri.getQuery()))
348+
if (this.uri != null && isNonEmpty(this.uri.getQuery()))
348349
this.uri = this.uri.withNewQuery(null);
349350
queryParams = params;
350351
return asDerivedType();

client/src/test/java/org/asynchttpclient/RequestBuilderTest.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,14 @@
1616
package org.asynchttpclient;
1717

1818
import static java.nio.charset.StandardCharsets.UTF_8;
19+
import static java.util.Collections.singletonList;
1920
import static org.asynchttpclient.Dsl.get;
2021
import static org.testng.Assert.assertEquals;
2122
import static org.testng.Assert.assertTrue;
2223

2324
import java.io.IOException;
2425
import java.io.UnsupportedEncodingException;
25-
import java.util.Collection;
26-
import java.util.Collections;
27-
import java.util.HashMap;
28-
import java.util.List;
29-
import java.util.Map;
26+
import java.util.*;
3027
import java.util.concurrent.ExecutionException;
3128

3229
import org.asynchttpclient.cookie.Cookie;
@@ -151,4 +148,13 @@ public void testAddOrReplaceCookies() {
151148
requestBuilder.addOrReplaceCookie(cookie3);
152149
assertEquals(requestBuilder.cookies.size(), 2, "cookie size must be 2 after adding 1 more cookie i.e. cookie3");
153150
}
151+
152+
@Test
153+
public void testSettingQueryParamsBeforeUrlShouldNotProduceNPE() {
154+
RequestBuilder requestBuilder = new RequestBuilder();
155+
requestBuilder.setQueryParams(singletonList(new Param("key", "value")));
156+
requestBuilder.setUrl("http://localhost");
157+
Request request = requestBuilder.build();
158+
assertEquals(request.getUrl(), "http://localhost?key=value");
159+
}
154160
}

0 commit comments

Comments
 (0)