Skip to content

Commit 183caaa

Browse files
Merge pull request #46 from julian-michelmann/feature/java8-compatibility
Java 1.8 compatibility
2 parents 9ab3fdf + 5bc8671 commit 183caaa

File tree

9 files changed

+97
-63
lines changed

9 files changed

+97
-63
lines changed

pom.xml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@
1616
</licenses>
1717

1818
<properties>
19-
<java.version>11</java.version>
20-
<maven.compiler.release>${java.version}</maven.compiler.release>
19+
<java.version>1.8</java.version>
20+
<maven.compiler.target>${java.version}</maven.compiler.target>
21+
<maven.compiler.source>${java.version}</maven.compiler.source>
2122
<wiremock.version>2.35.0</wiremock.version>
2223
<testcontainers.version>1.18.1</testcontainers.version>
2324
<junit.version>5.9.3</junit.version>
@@ -97,7 +98,7 @@
9798
<dependency>
9899
<groupId>ch.qos.logback</groupId>
99100
<artifactId>logback-classic</artifactId>
100-
<version>1.4.7</version>
101+
<version>1.3.7</version>
101102
<scope>provided</scope>
102103
<optional>true</optional>
103104
</dependency>

src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerExtensionTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121
import org.slf4j.Logger;
2222
import org.slf4j.LoggerFactory;
2323
import org.testcontainers.containers.output.Slf4jLogConsumer;
24+
import org.wiremock.integrations.testcontainers.testsupport.http.HttpResponse;
2425
import org.wiremock.integrations.testcontainers.testsupport.http.TestHttpClient;
2526

26-
import java.net.http.HttpResponse;
2727
import java.nio.file.Paths;
2828
import java.time.Duration;
2929
import java.util.Collections;
@@ -58,10 +58,10 @@ public void testJSONBodyTransformer() throws Exception {
5858
String body = "{\"name\":\"John Doe\"}";
5959

6060
// when
61-
HttpResponse<String> response = TestHttpClient.newInstance().post(url, body);
61+
HttpResponse response = new TestHttpClient().post(url, body);
6262

6363
// then
64-
assertThat(response.body())
64+
assertThat(response.getBody())
6565
.as("Wrong response body")
6666
.contains("Hello, John Doe!");
6767
}

src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerExtensionsCombinationTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,12 @@
2121
import org.slf4j.Logger;
2222
import org.slf4j.LoggerFactory;
2323
import org.testcontainers.containers.output.Slf4jLogConsumer;
24+
import org.wiremock.integrations.testcontainers.testsupport.http.HttpResponse;
2425
import org.wiremock.integrations.testcontainers.testsupport.http.TestHttpClient;
2526

26-
import java.net.http.HttpResponse;
2727
import java.nio.file.Paths;
2828
import java.util.Collections;
29+
import java.util.concurrent.TimeUnit;
2930

3031
import static org.assertj.core.api.Assertions.assertThat;
3132

@@ -59,12 +60,11 @@ public void testJSONBodyTransformer() throws Exception {
5960
String body = "{\"name\":\"John Doe\"}";
6061

6162
// when
62-
HttpResponse<String> response = TestHttpClient.newInstance().post(url, body);
63+
HttpResponse response = new TestHttpClient().post(url, body);
6364

6465
// then
65-
assertThat(response.body())
66+
assertThat(response.getBody())
6667
.as("Wrong response body")
6768
.contains("Hello, John Doe!");
6869
}
69-
7070
}

src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerExtensionsWebhookTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@
2222
import org.testcontainers.Testcontainers;
2323
import org.testcontainers.containers.GenericContainer;
2424
import org.testcontainers.containers.output.Slf4jLogConsumer;
25+
import org.wiremock.integrations.testcontainers.testsupport.http.HttpResponse;
2526
import org.wiremock.integrations.testcontainers.testsupport.http.TestHttpClient;
2627
import org.wiremock.integrations.testcontainers.testsupport.http.TestHttpServer;
2728

28-
import java.net.http.HttpResponse;
2929
import java.nio.file.Paths;
3030
import java.time.Duration;
3131
import java.util.Collections;
@@ -73,15 +73,15 @@ public void callbackUsingJsonStub() throws Exception {
7373
String applicationCallbackUrl = String.format("http://%s:%d%s", GenericContainer.INTERNAL_HOST_HOSTNAME, applicationServer.getPort(), APPLICATION_PATH);
7474

7575
// when
76-
HttpResponse<String> response = TestHttpClient.newInstance().post(
76+
HttpResponse response = new TestHttpClient().post(
7777
wiremockUrl,
7878
"{\"callbackMethod\": \"PUT\", \"callbackUrl\": \"" + applicationCallbackUrl + "\"}"
7979
);
8080

8181
// then
8282
assertThat(response).as("Wiremock Response").isNotNull().satisfies(it -> {
83-
assertThat(it.statusCode()).as("Wiremock Response Status").isEqualTo(200);
84-
assertThat(it.body()).as("Wiremock Response Body")
83+
assertThat(it.getStatusCode()).as("Wiremock Response Status").isEqualTo(200);
84+
assertThat(it.getBody()).as("Wiremock Response Body")
8585
.contains("Please wait callback")
8686
.contains("PUT")
8787
.contains(applicationCallbackUrl);

src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerJUnit5Test.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@
55
import org.junit.jupiter.params.provider.ValueSource;
66
import org.testcontainers.junit.jupiter.Container;
77
import org.testcontainers.junit.jupiter.Testcontainers;
8+
import org.wiremock.integrations.testcontainers.testsupport.http.HttpResponse;
89
import org.wiremock.integrations.testcontainers.testsupport.http.TestHttpClient;
910

10-
import java.net.http.HttpResponse;
11-
1211
import static org.assertj.core.api.Assertions.assertThat;
1312

1413
@Testcontainers
@@ -32,10 +31,10 @@ public void helloWorld(String path) throws Exception {
3231
String url = wiremockServer.getUrl(path);
3332

3433
// when
35-
HttpResponse<String> response = TestHttpClient.newInstance().get(url);
34+
HttpResponse response = new TestHttpClient().get(url);
3635

3736
// then
38-
assertThat(response.body())
37+
assertThat(response.getBody())
3938
.as("Wrong response body")
4039
.contains("Hello, world!");
4140
}
@@ -46,10 +45,10 @@ public void helloWorldFromFile() throws Exception {
4645
String url = wiremockServer.getUrl("/hello-from-file");
4746

4847
// when
49-
HttpResponse<String> response = TestHttpClient.newInstance().get(url);
48+
HttpResponse response = new TestHttpClient().get(url);
5049

5150
// then
52-
assertThat(response.body())
51+
assertThat(response.getBody())
5352
.as("Wrong response body")
5453
.contains("Hello, world!");
5554
}

src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerTest.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,9 @@
1717

1818
import org.junit.Rule;
1919
import org.junit.Test;
20+
import org.wiremock.integrations.testcontainers.testsupport.http.HttpResponse;
2021
import org.wiremock.integrations.testcontainers.testsupport.http.TestHttpClient;
2122

22-
import java.net.http.HttpResponse;
23-
2423
import static org.assertj.core.api.Assertions.assertThat;
2524

2625
public class WireMockContainerTest {
@@ -37,10 +36,10 @@ public void helloWorld() throws Exception {
3736
String url = wiremockServer.getUrl("/hello");
3837

3938
// when
40-
HttpResponse<String> response = TestHttpClient.newInstance().get(url);
39+
HttpResponse response = new TestHttpClient().get(url);
4140

4241
// then
43-
assertThat(response.body())
42+
assertThat(response.getBody())
4443
.as("Wrong response body")
4544
.contains("Hello, world!");
4645
}
@@ -51,10 +50,10 @@ public void helloWorldWithoutLeadingSlashInPath() throws Exception {
5150
String url = wiremockServer.getUrl("hello");
5251

5352
// when
54-
HttpResponse<String> response = TestHttpClient.newInstance().get(url);
53+
HttpResponse response = new TestHttpClient().get(url);
5554

5655
// then
57-
assertThat(response.body())
56+
assertThat(response.getBody())
5857
.as("Wrong response body")
5958
.contains("Hello, world!");
6059
}
@@ -65,10 +64,10 @@ public void helloWorldFromFile() throws Exception {
6564
String url = wiremockServer.getUrl("/hello-from-file");
6665

6766
// when
68-
HttpResponse<String> response = TestHttpClient.newInstance().get(url);
67+
HttpResponse response = new TestHttpClient().get(url);
6968

7069
// then
71-
assertThat(response.body())
70+
assertThat(response.getBody())
7271
.as("Wrong response body")
7372
.contains("Hello, world!");
7473
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.wiremock.integrations.testcontainers.testsupport.http;
2+
3+
public class HttpResponse {
4+
5+
String body;
6+
int statusCode;
7+
public HttpResponse(String body, int statusCode) {
8+
this.body = body;
9+
this.statusCode = statusCode;
10+
}
11+
12+
public String getBody() {
13+
return body;
14+
}
15+
16+
public int getStatusCode() {
17+
return statusCode;
18+
}
19+
}
Lines changed: 41 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,56 @@
11
package org.wiremock.integrations.testcontainers.testsupport.http;
22

33
import java.io.IOException;
4-
import java.net.URI;
5-
import java.net.http.HttpClient;
6-
import java.net.http.HttpRequest;
7-
import java.net.http.HttpResponse;
8-
import java.time.Duration;
4+
import java.io.InputStream;
5+
import java.io.OutputStream;
6+
import java.io.InputStreamReader;
7+
import java.io.BufferedReader;
8+
import java.net.HttpURLConnection;
9+
import java.net.URL;
10+
import java.nio.charset.StandardCharsets;
911

1012
public final class TestHttpClient {
11-
private final HttpClient client;
1213

13-
private TestHttpClient(HttpClient.Version version) {
14-
client = HttpClient.newBuilder().version(version).build();
14+
public HttpResponse send(HttpURLConnection connection) throws IOException {
15+
InputStream inputStream = connection.getInputStream();
16+
17+
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
18+
StringBuilder response = new StringBuilder();
19+
20+
String line;
21+
while ((line = reader.readLine()) != null) {
22+
response.append(line);
23+
}
24+
reader.close();
25+
26+
27+
28+
return new HttpResponse(response.toString(), connection.getResponseCode());
1529
}
1630

17-
public static TestHttpClient newInstance() {
18-
return new TestHttpClient(HttpClient.Version.HTTP_1_1);
19-
}
31+
public HttpResponse get(String uri) throws IOException {
32+
URL url = new URL(uri);
33+
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
34+
connection.setRequestMethod("GET");
2035

21-
public HttpResponse<String> send(HttpRequest request) throws IOException, InterruptedException {
22-
return client.send(request, HttpResponse.BodyHandlers.ofString());
36+
return send(connection);
2337
}
2438

25-
public HttpResponse<String> get(String uri) throws IOException, InterruptedException {
26-
HttpRequest request = newRequestBuilder()
27-
.uri(URI.create(uri))
28-
.GET()
29-
.build();
30-
return send(request);
31-
}
3239

33-
public HttpResponse<String> post(String uri, String body) throws IOException, InterruptedException {
34-
HttpRequest request = newRequestBuilder()
35-
.uri(URI.create(uri))
36-
.header("Content-Type", "application/json")
37-
.POST(HttpRequest.BodyPublishers.ofString(body))
38-
.build();
39-
return send(request);
40-
}
40+
public HttpResponse post(String uri, String body) throws IOException {
41+
URL url = new URL(uri);
42+
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
43+
connection.setRequestMethod("POST");
44+
connection.setRequestProperty("Content-Type", "application/json");
45+
connection.setRequestProperty("Accept", "application/json");
46+
connection.setDoOutput(true);
47+
connection.setConnectTimeout(10000);
48+
49+
try (OutputStream outputStream = connection.getOutputStream()) {
50+
byte[] input = body.getBytes(StandardCharsets.UTF_8);
51+
outputStream.write(input, 0, input.length);
52+
}
4153

42-
private static HttpRequest.Builder newRequestBuilder() {
43-
return HttpRequest.newBuilder()
44-
.timeout(Duration.ofSeconds(10));
54+
return send(connection);
4555
}
4656
}

src/test/java/org/wiremock/integrations/testcontainers/testsupport/http/TestHttpServer.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.sun.net.httpserver.HttpServer;
66

77
import java.io.IOException;
8+
import java.io.InputStream;
89
import java.net.InetSocketAddress;
910
import java.nio.charset.StandardCharsets;
1011
import java.util.ArrayList;
@@ -48,10 +49,15 @@ private static final class AllRequestsRecorder implements HttpHandler {
4849
public void handle(HttpExchange exchange) throws IOException {
4950
String method = exchange.getRequestMethod();
5051
String path = exchange.getRequestURI().getPath();
51-
String body = exchange.getRequestBody().available() > 0
52-
? new String(exchange.getRequestBody().readAllBytes(), StandardCharsets.UTF_8)
53-
: null;
54-
52+
String body = null;
53+
54+
InputStream requestBody = exchange.getRequestBody();
55+
if (requestBody.available() > 0) {
56+
byte[] requestBodyBytes = new byte[requestBody.available()];
57+
requestBody.read(requestBodyBytes);
58+
body = new String(requestBodyBytes, StandardCharsets.UTF_8);
59+
}
60+
5561
recordedRequests.add(new RecordedRequest(method, path, body));
5662

5763
exchange.sendResponseHeaders(200, 0);

0 commit comments

Comments
 (0)