Skip to content

Commit 579364b

Browse files
Replace URI builder check (#40)
* Replace URIBuilder check with URL().toURI()
1 parent 277f165 commit 579364b

File tree

4 files changed

+67
-51
lines changed

4 files changed

+67
-51
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@
9797
<scope>test</scope>
9898
</dependency>
9999
</dependencies>
100-
100+
101101
<build>
102102
<plugins>
103103
<plugin>

src/main/java/com/ericsson/eiffelcommons/JenkinsManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131

3232
import com.ericsson.eiffelcommons.helpers.MediaType;
3333
import com.ericsson.eiffelcommons.http.HttpRequest;
34-
import com.ericsson.eiffelcommons.http.HttpRequest.HttpMethod;
3534
import com.ericsson.eiffelcommons.http.ResponseEntity;
35+
import com.ericsson.eiffelcommons.http.HttpRequest.HttpMethod;
3636

3737
public class JenkinsManager {
3838

src/main/java/com/ericsson/eiffelcommons/http/HttpRequest.java

Lines changed: 38 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,32 @@
1919
import java.io.File;
2020
import java.io.IOException;
2121
import java.io.UnsupportedEncodingException;
22+
import java.net.MalformedURLException;
2223
import java.net.URI;
2324
import java.net.URISyntaxException;
24-
import java.util.HashMap;
25+
import java.net.URL;
26+
import java.util.ArrayList;
2527
import java.util.Map;
2628

2729
import org.apache.commons.codec.binary.Base64;
2830
import org.apache.commons.io.FileUtils;
2931
import org.apache.commons.lang3.StringUtils;
32+
import org.apache.http.Consts;
3033
import org.apache.http.Header;
3134
import org.apache.http.HttpHeaders;
35+
import org.apache.http.NameValuePair;
3236
import org.apache.http.client.ClientProtocolException;
3337
import org.apache.http.client.methods.HttpDelete;
3438
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
3539
import org.apache.http.client.methods.HttpGet;
3640
import org.apache.http.client.methods.HttpPost;
3741
import org.apache.http.client.methods.HttpPut;
3842
import org.apache.http.client.methods.HttpRequestBase;
39-
import org.apache.http.client.utils.URIBuilder;
43+
import org.apache.http.client.utils.URLEncodedUtils;
4044
import org.apache.http.entity.ContentType;
4145
import org.apache.http.entity.StringEntity;
4246
import org.apache.http.message.BasicHeader;
47+
import org.apache.http.message.BasicNameValuePair;
4348

4449
import lombok.Getter;
4550
import lombok.Setter;
@@ -62,10 +67,10 @@ public enum HttpMethod {
6267
protected String endpoint;
6368

6469
@Getter
65-
protected Map<String, String> params;
70+
protected ArrayList<NameValuePair> params;
6671

6772
public HttpRequest() {
68-
params = new HashMap<>();
73+
params = new ArrayList<NameValuePair>();
6974
initExecutor(false);
7075
}
7176

@@ -79,7 +84,7 @@ public HttpRequest(HttpMethod method, HttpExecutor executor) {
7984
}
8085

8186
public HttpRequest(HttpMethod method, boolean persistentClient) {
82-
params = new HashMap<>();
87+
params = new ArrayList<NameValuePair>();
8388
setHttpMethod(method);
8489
initExecutor(persistentClient);
8590
}
@@ -205,7 +210,7 @@ public void addParameters(Map<String, String> parameters) {
205210
* @return HttpRequest
206211
*/
207212
public HttpRequest addParameter(String key, String value) {
208-
params.put(key, value);
213+
params.add(new BasicNameValuePair(key, value));
209214
return this;
210215
}
211216

@@ -291,9 +296,9 @@ public HttpRequest setBasicAuth(String username, String password)
291296
*/
292297
public ResponseEntity performRequest()
293298
throws URISyntaxException, ClientProtocolException, IOException {
294-
URIBuilder builder = createURIBuilder();
295-
builder = addParametersToURIBuilder(builder);
296-
request.setURI(builder.build());
299+
URI uri = createURI();
300+
uri = addParametersToURI(uri);
301+
request.setURI(uri);
297302
return executor.executeRequest(request);
298303
}
299304

@@ -302,43 +307,44 @@ public ResponseEntity performRequest()
302307
*
303308
* @return URI
304309
* @throws URISyntaxException
310+
* @throws MalformedURLException
305311
*/
306-
public URI getURI() throws URISyntaxException {
307-
URIBuilder builder = createURIBuilder();
308-
return builder.build();
312+
@Deprecated
313+
public URI getURI() throws MalformedURLException, URISyntaxException {
314+
return createURI();
309315
}
310316

311317
/**
312-
* Function that adds parameters to the URIBuilder
318+
* Function that creates the URI from the baseUrl and endpoint
313319
*
314-
* @param URIBuilder
315-
* @return URIBuilder
320+
* @param
321+
* @return URI
322+
* @throws MalformedURLException
323+
* @throws URISyntaxException
316324
*/
317-
private URIBuilder addParametersToURIBuilder(URIBuilder builder) {
318-
if (!params.isEmpty()) {
319-
for (Map.Entry<String, String> entry : params.entrySet()) {
320-
builder.addParameter(entry.getKey(), entry.getValue());
321-
}
325+
public URI createURI() throws MalformedURLException, URISyntaxException {
326+
if (!StringUtils.isEmpty(endpoint) && endpoint.startsWith("/")) {
327+
return new URL(baseUrl + endpoint).toURI();
328+
} else if (!StringUtils.isEmpty(endpoint)) {
329+
return new URL(baseUrl + "/" + endpoint).toURI();
330+
} else {
331+
return new URL(baseUrl).toURI();
322332
}
323333

324-
return builder;
325334
}
326335

327336
/**
328-
* Function that creates the URI from the baseUrl and endpoint
337+
* Function that adds parameters to the URI
329338
*
330-
* @param
331-
* @return URIBuilder
339+
* @param oldUri
340+
* @return URI
332341
* @throws URISyntaxException
333342
*/
334-
private URIBuilder createURIBuilder() throws URISyntaxException {
335-
if (!StringUtils.isEmpty(endpoint) && endpoint.startsWith("/")) {
336-
return new URIBuilder(baseUrl + endpoint);
337-
} else if (!StringUtils.isEmpty(endpoint)) {
338-
return new URIBuilder(baseUrl + "/" + endpoint);
339-
} else {
340-
return new URIBuilder(baseUrl);
341-
}
343+
private URI addParametersToURI(URI oldUri) throws URISyntaxException {
344+
String query = URLEncodedUtils.format(params, Consts.UTF_8);
345+
URI newUri = new URI(oldUri.getScheme(), oldUri.getAuthority(), oldUri.getPath(), query,
346+
oldUri.getFragment());
347+
return newUri;
342348
}
343349

344350
/**

src/test/java/com/ericsson/eiffelcommons/httptest/HttpRequestTest.java

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.io.IOException;
1010
import java.io.InputStream;
1111
import java.io.UnsupportedEncodingException;
12+
import java.net.MalformedURLException;
1213
import java.net.URI;
1314
import java.net.URISyntaxException;
1415
import java.net.UnknownHostException;
@@ -21,7 +22,6 @@
2122
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
2223
import org.apache.http.client.methods.HttpGet;
2324
import org.apache.http.client.methods.HttpRequestBase;
24-
import org.apache.http.client.utils.URIBuilder;
2525
import org.apache.http.entity.ContentType;
2626
import org.junit.Test;
2727
import org.powermock.reflect.Whitebox;
@@ -56,29 +56,28 @@ public class HttpRequestTest {
5656

5757
@Test
5858
public void testBuildingOfURI() throws Exception {
59+
5960
HttpRequest request = new HttpRequest(HttpMethod.POST);
61+
6062
request.setBaseUrl(URL_1);
6163
request.setEndpoint(ENDPOINT_1);
62-
URIBuilder builder = (URIBuilder) Whitebox.invokeMethod(request, "createURIBuilder");
63-
assertEquals(EXPECTED_URI, builder.toString());
64+
URI uri = (URI) Whitebox.invokeMethod(request, "createURI");
65+
assertEquals(EXPECTED_URI, uri.toString());
6466

65-
request = new HttpRequest(HttpMethod.GET);
6667
request.setBaseUrl(URL_2);
6768
request.setEndpoint(ENDPOINT_1);
68-
builder = (URIBuilder) Whitebox.invokeMethod(request, "createURIBuilder");
69-
assertEquals(EXPECTED_URI, builder.toString());
69+
uri = (URI) Whitebox.invokeMethod(request, "createURI");
70+
assertEquals(EXPECTED_URI, uri.toString());
7071

71-
request = new HttpRequest(HttpMethod.DELETE);
7272
request.setBaseUrl(URL_2);
7373
request.setEndpoint(ENDPOINT_2);
74-
builder = (URIBuilder) Whitebox.invokeMethod(request, "createURIBuilder");
75-
assertEquals(EXPECTED_URI, builder.toString());
74+
uri = (URI) Whitebox.invokeMethod(request, "createURI");
75+
assertEquals(EXPECTED_URI, uri.toString());
7676

77-
request = new HttpRequest(HttpMethod.PUT);
7877
request.setBaseUrl(URL_1);
7978
request.setEndpoint(ENDPOINT_2);
80-
builder = (URIBuilder) Whitebox.invokeMethod(request, "createURIBuilder");
81-
assertEquals(EXPECTED_URI, builder.toString());
79+
uri = (URI) Whitebox.invokeMethod(request, "createURI");
80+
assertEquals(EXPECTED_URI, uri.toString());
8281
}
8382

8483
@Test
@@ -186,6 +185,18 @@ public void testParameterProperty() {
186185
}
187186

188187
@Test
188+
public void testAddParametersToURI() throws Exception {
189+
HttpRequest request = new HttpRequest(HttpMethod.GET);
190+
request.setBaseUrl(URL_1)
191+
.addParameter(PARAMETER_KEY_1, PARAMETER_VALUE_1)
192+
.addParameter(PARAMETER_KEY_2, PARAMETER_VALUE_2);
193+
URI uri = (URI) Whitebox.invokeMethod(request, "createURI");
194+
URI newUri = (URI) Whitebox.invokeMethod(request, "addParametersToURI", uri);
195+
String expectedURI = URL_1 + "?" + PARAMETER_KEY_1 + "=" + PARAMETER_VALUE_1 + "&"
196+
+ PARAMETER_KEY_2 + "=" + PARAMETER_VALUE_2;
197+
assertEquals(expectedURI, newUri.toString());
198+
}
199+
189200
public void testHeaderProperty() {
190201
HttpRequest request = new HttpRequest(HttpMethod.GET);
191202
request.addHeader(HEADER_KEY_1, HEADER_VALUE_1);
@@ -206,10 +217,10 @@ public void testHeaderProperty() {
206217
}
207218

208219
@Test
209-
public void testGetURI() throws URISyntaxException {
220+
public void testGetURI() throws MalformedURLException, URISyntaxException {
210221
HttpRequest request = new HttpRequest(HttpMethod.GET);
211222
request.setBaseUrl(URL_1).setEndpoint(ENDPOINT_1);
212-
URI uri = request.getURI();
223+
URI uri = request.createURI();
213224
String fullURI = uri.toString();
214225
assertEquals(URL_1 + ENDPOINT_1, fullURI);
215226
}
@@ -222,9 +233,8 @@ public void testPerformRequestUnknownHost()
222233
request.performRequest();
223234
}
224235

225-
@Test(expected = ClientProtocolException.class)
226-
public void testPerformRequestBadProtocol()
227-
throws ClientProtocolException, URISyntaxException, IOException {
236+
@Test(expected = MalformedURLException.class)
237+
public void testPerformRequestBadProtocol() throws ClientProtocolException, URISyntaxException, IOException {
228238
HttpRequest request = new HttpRequest(HttpMethod.GET);
229239
request.setBaseUrl(URL_BAD_PROTOCOL);
230240
request.performRequest();

0 commit comments

Comments
 (0)