Skip to content

Commit cdc1fcd

Browse files
jpraetsmals-mavh
andauthored
Fix ProblemWebClientCustomizer Spring Boot compatibility issue (#102)
Fixes #98. Extract class from belgif-rest-problem-spring to belgif-rest-problem-spring-boot-2 and -3. --------- Co-authored-by: Marcel Van Hassel <[email protected]>
1 parent a35b538 commit cdc1fcd

File tree

20 files changed

+365
-9
lines changed

20 files changed

+365
-9
lines changed

belgif-rest-problem-it/belgif-rest-problem-it-common/src/main/java/io/github/belgif/rest/problem/AbstractRestProblemIT.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,15 @@ void retryAfter() {
5959
.body("type", equalTo("urn:problem-type:belgif:serviceUnavailable"));
6060
}
6161

62+
@ParameterizedTest
63+
@MethodSource("getClients")
64+
void okFromBackend(String client) {
65+
getSpec().when().queryParam("client", client)
66+
.get("/okFromBackend").then().assertThat()
67+
.statusCode(200)
68+
.body(containsString("OK"));
69+
}
70+
6271
@ParameterizedTest
6372
@MethodSource("getClients")
6473
void badRequestFromBackend(String client) {

belgif-rest-problem-it/belgif-rest-problem-jakarta-ee-it/src/main/java/io/github/belgif/rest/problem/Backend.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
@Path("/backend")
88
public interface Backend {
99

10+
@GET
11+
@Path("/ok")
12+
Response ok();
13+
1014
@GET
1115
@Path("/badRequest")
1216
Response badRequest();

belgif-rest-problem-it/belgif-rest-problem-jakarta-ee-it/src/main/java/io/github/belgif/rest/problem/BackendImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
@RequestScoped
1313
public class BackendImpl implements Backend {
1414

15+
@Override
16+
public Response ok() {
17+
return Response.ok("OK").build();
18+
}
19+
1520
@Override
1621
public Response badRequest() {
1722
BadRequestProblem problem = new BadRequestProblem();

belgif-rest-problem-it/belgif-rest-problem-jakarta-ee-it/src/main/java/io/github/belgif/rest/problem/Frontend.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@
44
import jakarta.validation.constraints.NotNull;
55
import jakarta.validation.constraints.Positive;
66
import jakarta.validation.constraints.Size;
7-
import jakarta.ws.rs.*;
7+
import jakarta.ws.rs.GET;
8+
import jakarta.ws.rs.HeaderParam;
9+
import jakarta.ws.rs.POST;
10+
import jakarta.ws.rs.Path;
11+
import jakarta.ws.rs.PathParam;
12+
import jakarta.ws.rs.QueryParam;
813
import jakarta.ws.rs.core.Response;
914

1015
import io.github.belgif.rest.problem.model.ChildModel;
@@ -33,6 +38,10 @@ public interface Frontend {
3338
@Path("/retryAfter")
3439
Response retryAfter();
3540

41+
@GET
42+
@Path("/okFromBackend")
43+
Response okFromBackend(@QueryParam("client") Client client);
44+
3645
@GET
3746
@Path("/badRequestFromBackend")
3847
Response badRequestFromBackend(@QueryParam("client") Client client);

belgif-rest-problem-it/belgif-rest-problem-jakarta-ee-it/src/main/java/io/github/belgif/rest/problem/FrontendImpl.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,31 @@ public Response retryAfter() {
8080
throw problem;
8181
}
8282

83+
@Override
84+
public Response okFromBackend(Client client) {
85+
String result = null;
86+
if (client == null || client == Client.MICROPROFILE) {
87+
result = microprofileClient.ok().readEntity(String.class);
88+
} else if (client == Client.JAXRS) {
89+
result = jaxRsClient.target(BASE_URI).path("backend/ok").request().get().readEntity(String.class);
90+
} else if (client == Client.JAXRS_ASYNC) {
91+
try {
92+
result = jaxRsClient.target(BASE_URI).path("backend/ok").request().async().get().get()
93+
.readEntity(String.class);
94+
} catch (InterruptedException e) {
95+
Thread.currentThread().interrupt();
96+
throw new RuntimeException(e);
97+
} catch (ExecutionException e) {
98+
throw new RuntimeException(e);
99+
}
100+
} else if (client == Client.RESTEASY) {
101+
result = resteasyClient.target(BASE_URI).path("backend/ok").request().get().readEntity(String.class);
102+
} else if (client == Client.RESTEASY_PROXY) {
103+
result = resteasyProxyClient.ok().readEntity(String.class);
104+
}
105+
return Response.ok(result).build();
106+
}
107+
83108
@Override
84109
public Response badRequestFromBackend(Client client) {
85110
try {

belgif-rest-problem-it/belgif-rest-problem-java-ee-it/src/main/java/io/github/belgif/rest/problem/Backend.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
@Path("/backend")
88
public interface Backend {
99

10+
@GET
11+
@Path("/ok")
12+
Response ok();
13+
1014
@GET
1115
@Path("/badRequest")
1216
Response badRequest();

belgif-rest-problem-it/belgif-rest-problem-java-ee-it/src/main/java/io/github/belgif/rest/problem/BackendImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
@RequestScoped
1313
public class BackendImpl implements Backend {
1414

15+
@Override
16+
public Response ok() {
17+
return Response.ok("OK").build();
18+
}
19+
1520
@Override
1621
public Response badRequest() {
1722
BadRequestProblem problem = new BadRequestProblem();

belgif-rest-problem-it/belgif-rest-problem-java-ee-it/src/main/java/io/github/belgif/rest/problem/Frontend.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@
44
import javax.validation.constraints.NotNull;
55
import javax.validation.constraints.Positive;
66
import javax.validation.constraints.Size;
7-
import javax.ws.rs.*;
7+
import javax.ws.rs.GET;
8+
import javax.ws.rs.HeaderParam;
9+
import javax.ws.rs.POST;
10+
import javax.ws.rs.Path;
11+
import javax.ws.rs.PathParam;
12+
import javax.ws.rs.QueryParam;
813
import javax.ws.rs.core.Response;
914

1015
import io.github.belgif.rest.problem.model.ChildModel;
@@ -33,6 +38,10 @@ public interface Frontend {
3338
@Path("/retryAfter")
3439
Response retryAfter();
3540

41+
@GET
42+
@Path("/okFromBackend")
43+
Response okFromBackend(@QueryParam("client") Client client);
44+
3645
@GET
3746
@Path("/badRequestFromBackend")
3847
Response badRequestFromBackend(@QueryParam("client") Client client);

belgif-rest-problem-it/belgif-rest-problem-java-ee-it/src/main/java/io/github/belgif/rest/problem/FrontendImpl.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,31 @@ public Response retryAfter() {
7979
throw problem;
8080
}
8181

82+
@Override
83+
public Response okFromBackend(Client client) {
84+
String result = null;
85+
if (client == null || client == Client.MICROPROFILE) {
86+
result = microprofileClient.ok().readEntity(String.class);
87+
} else if (client == Client.JAXRS) {
88+
result = jaxRsClient.target(BASE_URI).path("backend/ok").request().get().readEntity(String.class);
89+
} else if (client == Client.JAXRS_ASYNC) {
90+
try {
91+
result = jaxRsClient.target(BASE_URI).path("backend/ok").request().async().get().get()
92+
.readEntity(String.class);
93+
} catch (InterruptedException e) {
94+
Thread.currentThread().interrupt();
95+
throw new RuntimeException(e);
96+
} catch (ExecutionException e) {
97+
throw new RuntimeException(e);
98+
}
99+
} else if (client == Client.RESTEASY) {
100+
result = resteasyClient.target(BASE_URI).path("backend/ok").request().get().readEntity(String.class);
101+
} else if (client == Client.RESTEASY_PROXY) {
102+
result = resteasyProxyClient.ok().readEntity(String.class);
103+
}
104+
return Response.ok(result).build();
105+
}
106+
82107
@Override
83108
public Response badRequestFromBackend(Client client) {
84109
try {

belgif-rest-problem-it/belgif-rest-problem-spring-boot-2-it/src/main/java/io/github/belgif/rest/problem/BackendController.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.net.URI;
44

5+
import org.springframework.http.ResponseEntity;
56
import org.springframework.web.bind.annotation.GetMapping;
67
import org.springframework.web.bind.annotation.RequestMapping;
78
import org.springframework.web.bind.annotation.RestController;
@@ -14,6 +15,11 @@
1415
@RequestMapping("/backend")
1516
public class BackendController {
1617

18+
@GetMapping("/ok")
19+
public ResponseEntity<String> ok() {
20+
return ResponseEntity.ok("OK");
21+
}
22+
1723
@GetMapping("/badRequest")
1824
public void badRequest() {
1925
BadRequestProblem problem = new BadRequestProblem();

0 commit comments

Comments
 (0)