Skip to content

Commit e4d39de

Browse files
committed
removing data limit in Spring-instantiated objectMapper
1 parent 3b5f7ff commit e4d39de

File tree

10 files changed

+63
-115
lines changed

10 files changed

+63
-115
lines changed

service/src/main/java/uk/nhs/adaptors/gp2gp/common/configuration/ObjectMapperConfig.java

Lines changed: 0 additions & 22 deletions
This file was deleted.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package uk.nhs.adaptors.gp2gp.common.configuration;
2+
3+
import com.fasterxml.jackson.core.StreamReadConstraints;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import org.springframework.beans.BeansException;
6+
import org.springframework.beans.factory.config.BeanPostProcessor;
7+
import org.springframework.context.annotation.Configuration;
8+
9+
@Configuration
10+
public class ObjectMapperPostProcessorConfig implements BeanPostProcessor {
11+
12+
@Override
13+
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
14+
if (bean instanceof ObjectMapper) {
15+
ObjectMapper objectMapper = (ObjectMapper) bean;
16+
objectMapper.getFactory().setStreamReadConstraints(StreamReadConstraints.builder().maxStringLength(Integer.MAX_VALUE).build());
17+
}
18+
return bean;
19+
}
20+
}

service/src/main/java/uk/nhs/adaptors/gp2gp/ehr/SendDocumentTaskExecutor.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import org.springframework.stereotype.Service;
1313
import uk.nhs.adaptors.gp2gp.common.configuration.Gp2gpConfiguration;
1414
import uk.nhs.adaptors.gp2gp.common.service.RandomIdGeneratorService;
15-
import uk.nhs.adaptors.gp2gp.common.service.TimestampService;
1615
import uk.nhs.adaptors.gp2gp.common.storage.StorageConnectorService;
1716
import uk.nhs.adaptors.gp2gp.common.task.TaskExecutor;
1817
import uk.nhs.adaptors.gp2gp.ehr.model.EhrExtractStatus;
@@ -39,7 +38,6 @@ public class SendDocumentTaskExecutor implements TaskExecutor<SendDocumentTaskDe
3938
private final DetectDocumentsSentService detectDocumentsSentService;
4039
private final Gp2gpConfiguration gp2gpConfiguration;
4140
private final EhrDocumentMapper ehrDocumentMapper;
42-
private final TimestampService timestampService;
4341

4442
@Override
4543
public Class<SendDocumentTaskDefinition> getTaskType() {

service/src/main/java/uk/nhs/adaptors/gp2gp/ehr/model/EhrExtractStatus.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ public EhrExtractStatus(Instant created, Instant updatedAt, String conversationI
5858
}
5959

6060
@Data
61-
@NoArgsConstructor
6261
@AllArgsConstructor
6362
@Document
6463
@Builder
@@ -75,7 +74,6 @@ public static class EhrRequest {
7574
}
7675

7776
@Data
78-
@NoArgsConstructor
7977
@AllArgsConstructor
8078
@Document
8179
@Builder
@@ -99,7 +97,6 @@ public static class GpcDocument {
9997
}
10098

10199
@Data
102-
@NoArgsConstructor
103100
@AllArgsConstructor
104101
@Document
105102
@Builder
@@ -111,7 +108,6 @@ public static class GpcAccessStructured {
111108
}
112109

113110
@Data
114-
@NoArgsConstructor
115111
@AllArgsConstructor
116112
@Document
117113
@Builder
@@ -120,7 +116,6 @@ public static class GpcAccessDocument {
120116
private String patientId;
121117

122118
@Data
123-
@NoArgsConstructor
124119
@AllArgsConstructor
125120
@Document
126121
@Builder
@@ -132,7 +127,6 @@ public static class SentToMhs {
132127
}
133128

134129
@Data
135-
@NoArgsConstructor
136130
@AllArgsConstructor
137131
@Document
138132
@Builder
@@ -142,7 +136,6 @@ public static class EhrExtractCore {
142136
}
143137

144138
@Data
145-
@NoArgsConstructor
146139
@AllArgsConstructor
147140
@Document
148141
@Builder
@@ -152,7 +145,6 @@ public static class EhrExtractCorePending {
152145
}
153146

154147
@Data
155-
@NoArgsConstructor
156148
@AllArgsConstructor
157149
@Document
158150
@Builder
@@ -161,7 +153,6 @@ public static class EhrContinue {
161153
}
162154

163155
@Data
164-
@NoArgsConstructor
165156
@AllArgsConstructor
166157
@Document
167158
@Builder
@@ -174,7 +165,6 @@ public static class AckToRequester {
174165
}
175166

176167
@Data
177-
@NoArgsConstructor
178168
@AllArgsConstructor
179169
@Document
180170
@Builder
@@ -186,7 +176,6 @@ public static class AckPending {
186176
}
187177

188178
@Data
189-
@NoArgsConstructor
190179
@AllArgsConstructor
191180
@Document
192181
@Builder
@@ -199,7 +188,6 @@ public static class EhrReceivedAcknowledgement {
199188
private String messageRef;
200189

201190
@Data
202-
@NoArgsConstructor
203191
@AllArgsConstructor
204192
@Document
205193
@Builder
@@ -210,7 +198,6 @@ public static class ErrorDetails {
210198
}
211199

212200
@Data
213-
@NoArgsConstructor
214201
@AllArgsConstructor
215202
@Document
216203
@Builder
@@ -219,7 +206,6 @@ public static class AckHistory {
219206
}
220207

221208
@Data
222-
@NoArgsConstructor
223209
@AllArgsConstructor
224210
@Document
225211
@Builder

service/src/main/java/uk/nhs/adaptors/gp2gp/ehr/status/model/EhrStatus.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,13 @@
33
import java.time.Instant;
44
import java.util.List;
55

6-
import lombok.AllArgsConstructor;
76
import lombok.Builder;
87
import lombok.Data;
9-
import lombok.NoArgsConstructor;
108
import uk.nhs.adaptors.gp2gp.ehr.model.EhrExtractStatus;
119
import uk.nhs.adaptors.gp2gp.mhs.model.Identifier;
1210

1311
@Builder
1412
@Data
15-
@NoArgsConstructor
16-
@AllArgsConstructor
1713
public class EhrStatus {
1814

1915
private List<AttachmentStatus> attachmentStatus;
@@ -25,8 +21,6 @@ public class EhrStatus {
2521

2622
@Builder
2723
@Data
28-
@NoArgsConstructor
29-
@AllArgsConstructor
3024
public static class AttachmentStatus {
3125
private List<Identifier> identifier;
3226
private FileStatus fileStatus;

service/src/main/java/uk/nhs/adaptors/gp2gp/ehr/status/model/EhrStatusRequest.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
11
package uk.nhs.adaptors.gp2gp.ehr.status.model;
22

33
import java.time.Instant;
4-
5-
import lombok.AllArgsConstructor;
64
import lombok.Builder;
75
import lombok.Data;
8-
import lombok.NoArgsConstructor;
96

107
@Builder
118
@Data
12-
@NoArgsConstructor
13-
@AllArgsConstructor
149
public class EhrStatusRequest {
1510

1611
private Instant initialRequestTimestamp;

service/src/main/java/uk/nhs/adaptors/gp2gp/mhs/model/Identifier.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
package uk.nhs.adaptors.gp2gp.mhs.model;
22

3-
import lombok.AllArgsConstructor;
43
import lombok.Builder;
54
import lombok.Data;
6-
import lombok.NoArgsConstructor;
75

86
@Builder
97
@Data
10-
@NoArgsConstructor
11-
@AllArgsConstructor
128
public class Identifier {
139
private String system;
1410
private String value;

service/src/test/java/uk/nhs/adaptors/gp2gp/common/configuration/ObjectMapperConfigTest.java

Lines changed: 0 additions & 60 deletions
This file was deleted.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package uk.nhs.adaptors.gp2gp.common.configuration;
2+
3+
import com.fasterxml.jackson.core.JsonFactory;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import org.junit.jupiter.api.BeforeEach;
6+
import org.junit.jupiter.api.Test;
7+
import org.mockito.InjectMocks;
8+
import org.mockito.Mock;
9+
import org.mockito.MockitoAnnotations;
10+
11+
import static org.mockito.ArgumentMatchers.argThat;
12+
import static org.mockito.Mockito.times;
13+
import static org.mockito.Mockito.verify;
14+
import static org.mockito.Mockito.when;
15+
16+
public class ObjectMapperPostProcessorConfigTest {
17+
18+
@Mock
19+
private ObjectMapper objectMapper;
20+
21+
@Mock
22+
private JsonFactory mockJsonFactory;
23+
24+
@InjectMocks
25+
private ObjectMapperPostProcessorConfig objectMapperPostProcessorConfig;
26+
27+
@BeforeEach
28+
public void setup() {
29+
MockitoAnnotations.openMocks(this);
30+
}
31+
32+
@Test
33+
public void objectMapperPostProcessSetsMaxDataProcessingLimitTest() {
34+
35+
when(objectMapper.getFactory()).thenReturn(mockJsonFactory);
36+
37+
objectMapperPostProcessorConfig.postProcessAfterInitialization(objectMapper, "objectMapper");
38+
39+
verify(mockJsonFactory, times(1))
40+
.setStreamReadConstraints(argThat(constraints -> constraints.getMaxStringLength() == Integer.MAX_VALUE));
41+
}
42+
}

service/src/test/java/uk/nhs/adaptors/gp2gp/ehr/SendDocumentTaskExecutorTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,7 @@ public void setup() {
202202
new ObjectMapper(),
203203
this.detectDocumentsSentService,
204204
gp2gpConfiguration,
205-
new EhrDocumentMapper(new TimestampService(), new RandomIdGeneratorServiceStub()),
206-
new TimestampService()
205+
new EhrDocumentMapper(new TimestampService(), new RandomIdGeneratorServiceStub())
207206
);
208207
}
209208

0 commit comments

Comments
 (0)