Skip to content

Commit 2da1451

Browse files
committed
DTSPB-4818 update ResponseDecorator with spring
1 parent bae7226 commit 2da1451

File tree

6 files changed

+31
-35
lines changed

6 files changed

+31
-35
lines changed

src/main/java/uk/gov/hmcts/probate/client/ResponseDecorator.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import feign.Response;
66
import feign.Util;
77
import lombok.extern.slf4j.Slf4j;
8-
import uk.gov.hmcts.probate.configuration.ApplicationContextProvider;
98
import uk.gov.hmcts.reform.probate.model.client.ErrorResponse;
109

1110
import java.io.IOException;
@@ -18,10 +17,10 @@ public class ResponseDecorator {
1817

1918
private ObjectMapper objectMapper;
2019

21-
public ResponseDecorator(Response response) {
20+
public ResponseDecorator(Response response, ObjectMapper objectMapper) {
2221

2322
this.response = response;
24-
this.objectMapper = ApplicationContextProvider.getApplicationContext().getBean(ObjectMapper.class);
23+
this.objectMapper = objectMapper;
2524
}
2625

2726
public String bodyToString() {

src/main/java/uk/gov/hmcts/probate/client/submit/SubmitServiceApiErrorDecoder.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package uk.gov.hmcts.probate.client.submit;
22

3+
import com.fasterxml.jackson.databind.ObjectMapper;
34
import feign.Response;
45
import feign.codec.ErrorDecoder;
56
import lombok.extern.slf4j.Slf4j;
@@ -12,11 +13,17 @@
1213
@Slf4j
1314
public class SubmitServiceApiErrorDecoder implements ErrorDecoder {
1415

16+
private ObjectMapper objectMapper;
17+
18+
public SubmitServiceApiErrorDecoder(ObjectMapper objectMapper) {
19+
this.objectMapper = objectMapper;
20+
}
21+
1522
@Override
1623
public Exception decode(String methodKey, Response response) {
1724
log.error("Response status: {}", response.status());
1825

19-
ResponseDecorator responseDecorator = new ResponseDecorator(response);
26+
ResponseDecorator responseDecorator = new ResponseDecorator(response,this.objectMapper);
2027
ErrorResponse errorResponse = responseDecorator.mapToErrorResponse();
2128

2229
return new ApiClientException(response.status(), errorResponse);

src/main/java/uk/gov/hmcts/probate/client/submit/SubmitServiceConfiguration.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,16 @@ public class SubmitServiceConfiguration {
1717
static final String INVITATION_ID = "invitationId";
1818
static final String CASE_ID = "caseId";
1919

20+
2021
@Bean
2122
@Primary
2223
public Decoder feignDecoder(ObjectMapper objectMapper) {
2324
return new JacksonDecoder(objectMapper);
2425
}
2526

2627
@Bean
27-
public SubmitServiceApiErrorDecoder submitServiceApiErrorDecoder() {
28-
return new SubmitServiceApiErrorDecoder();
28+
public SubmitServiceApiErrorDecoder submitServiceApiErrorDecoder(ObjectMapper objectMapper) {
29+
return new SubmitServiceApiErrorDecoder(objectMapper);
2930
}
3031

3132
@Bean

src/main/java/uk/gov/hmcts/probate/configuration/ApplicationContextProvider.java

Lines changed: 0 additions & 20 deletions
This file was deleted.

src/test/java/uk/gov/hmcts/probate/client/ResponseDecoratorTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public void bodyToStringShouldReturnString() throws ReflectiveOperationException
4545
.body("hello world", UTF_8)
4646
.build();
4747

48-
ResponseDecorator responseDecorator = new ResponseDecorator(response);
48+
ResponseDecorator responseDecorator = new ResponseDecorator(response,objectMapper);
4949
Field objectMapperField = ResponseDecorator.class.getDeclaredField("objectMapper");
5050
objectMapperField.setAccessible(true);
5151
objectMapperField.set(responseDecorator, objectMapper);
@@ -63,7 +63,7 @@ public void bodyToStringShouldReturnEmptyStringIfResponseBodyIsNull() {
6363
.headers(headers)
6464
.build();
6565

66-
ResponseDecorator responseDecorator = new ResponseDecorator(response);
66+
ResponseDecorator responseDecorator = new ResponseDecorator(response,objectMapper);
6767
String body = responseDecorator.bodyToString();
6868

6969
assertThat(response.body()).isNull();
@@ -84,7 +84,7 @@ public int read() throws IOException {
8484
}
8585
}, 1)
8686
.build();
87-
ResponseDecorator responseDecorator = new ResponseDecorator(response);
87+
ResponseDecorator responseDecorator = new ResponseDecorator(response,objectMapper);
8888

8989
String body = responseDecorator.bodyToString();
9090

@@ -103,7 +103,7 @@ public void mapToErrorResponseShouldReturnValidationErrorResponse() throws IOExc
103103
.body(validationErrorResponse, UTF_8)
104104
.build();
105105

106-
ResponseDecorator responseDecorator = new ResponseDecorator(response);
106+
ResponseDecorator responseDecorator = new ResponseDecorator(response,objectMapper);
107107
ErrorResponse errorResponse = responseDecorator.mapToErrorResponse();
108108

109109
assertThat(errorResponse.getType()).isEqualTo(ErrorType.VALIDATION);
@@ -121,7 +121,7 @@ public void mapToErrorResponseShouldReturnApiClientErrorResponse() throws IOExce
121121
.body(apiClientErrorResponse, UTF_8)
122122
.build();
123123

124-
ResponseDecorator responseDecorator = new ResponseDecorator(response);
124+
ResponseDecorator responseDecorator = new ResponseDecorator(response,objectMapper);
125125
ErrorResponse errorResponse = responseDecorator.mapToErrorResponse();
126126

127127
assertThat(errorResponse.getType()).isEqualTo(ErrorType.API_CLIENT);
@@ -137,7 +137,7 @@ public void mapToErrorResponseResponseBodyIsNull() {
137137
.headers(headers)
138138
.build();
139139

140-
ResponseDecorator responseDecorator = new ResponseDecorator(response);
140+
ResponseDecorator responseDecorator = new ResponseDecorator(response,objectMapper);
141141
ErrorResponse errorResponse = responseDecorator.mapToErrorResponse();
142142

143143
assertThat(errorResponse).isNull();

src/test/java/uk/gov/hmcts/probate/client/SubmitServiceApiErrorDecoderTest.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
package uk.gov.hmcts.probate.client;
22

3+
import com.fasterxml.jackson.databind.ObjectMapper;
34
import feign.Request;
45
import feign.Response;
56
import feign.Util;
67
import org.junit.jupiter.api.Test;
8+
import org.junit.jupiter.api.extension.ExtendWith;
9+
import org.springframework.beans.factory.annotation.Autowired;
10+
import org.springframework.boot.test.context.SpringBootTest;
711
import org.springframework.http.HttpMethod;
12+
import org.springframework.test.context.junit.jupiter.SpringExtension;
813
import uk.gov.hmcts.probate.client.submit.SubmitServiceApiErrorDecoder;
914
import uk.gov.hmcts.reform.probate.model.client.ApiClientException;
1015

@@ -15,15 +20,20 @@
1520

1621
import static org.junit.jupiter.api.Assertions.assertThrows;
1722

18-
23+
@ExtendWith(SpringExtension.class)
24+
@SpringBootTest
1925
public class SubmitServiceApiErrorDecoderTest {
2026

27+
@Autowired
28+
private ObjectMapper objectMapper;
29+
2130
private Map<String, Collection<String>> headers = new LinkedHashMap<>();
2231

23-
private SubmitServiceApiErrorDecoder errorDecoder = new SubmitServiceApiErrorDecoder();
32+
private SubmitServiceApiErrorDecoder errorDecoder;
2433

2534
@Test
2635
public void throwsApiClientException() throws Throwable {
36+
errorDecoder = new SubmitServiceApiErrorDecoder(objectMapper);
2737
assertThrows(ApiClientException.class, () -> {
2838
Response response = Response.builder()
2939
.status(500)
@@ -32,7 +42,6 @@ public void throwsApiClientException() throws Throwable {
3242
"/api", Collections.emptyMap(), null, Util.UTF_8))
3343
.headers(headers)
3444
.build();
35-
3645
throw errorDecoder.decode("Service#foo()", response);
3746
});
3847

0 commit comments

Comments
 (0)