Skip to content

Commit 72bf595

Browse files
authored
Merge branch 'master' into ccd_5344
2 parents af9ff7a + c625f6a commit 72bf595

13 files changed

+12437
-256
lines changed

charts/ccd-data-store-api/Chart.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ description: Helm chart for the HMCTS CCD Data Store
22
name: ccd-data-store-api
33
apiVersion: v2
44
home: https://github.com/hmcts/ccd-data-store-api
5-
version: 2.0.26
5+
version: 2.0.27
66
maintainers:
77
- name: HMCTS CCD Dev Team
88
99
dependencies:
1010
- name: java
11-
version: 5.0.0
11+
version: 5.2.0
1212
repository: 'https://hmctspublic.azurecr.io/helm/v1/repo/'
1313
- name: elasticsearch
1414
version: 7.17.3

charts/ccd-data-store-api/values.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ java:
77
applicationPort: 4452
88
aadIdentityName: ccd
99
autoscaling:
10-
enabled: true
10+
enabled: false
1111
maxReplicas: 9
1212
minReplicas: 6
1313
keyVaults:

src/main/java/uk/gov/hmcts/ccd/data/definition/DefaultCaseDefinitionRepository.java

+12-14
Original file line numberDiff line numberDiff line change
@@ -193,16 +193,20 @@ public CaseTypeDefinitionVersion getLatestVersionFromDefinitionStore(String case
193193
@Cacheable(value = "jurisdictionCache")
194194
@Override
195195
public JurisdictionDefinition getJurisdiction(String jurisdictionId) {
196-
return getJurisdictionFromDefinitionStore(jurisdictionId);
196+
return retrieveJurisdictions(Optional.of(Collections.singletonList(jurisdictionId)))
197+
.stream()
198+
.findFirst()
199+
.orElse(null);
197200
}
198201

199-
public JurisdictionDefinition getJurisdictionFromDefinitionStore(String jurisdictionId) {
200-
List<JurisdictionDefinition> jurisdictionDefinitions = getJurisdictionsFromDefinitionStore(
201-
Optional.of(Collections.singletonList(jurisdictionId)));
202-
if (jurisdictionDefinitions.isEmpty()) {
203-
return null;
204-
}
205-
return jurisdictionDefinitions.get(0);
202+
@Cacheable(value = "allJurisdictionsCache")
203+
@Override
204+
public List<JurisdictionDefinition> getAllJurisdictionsFromDefinitionStore() {
205+
return retrieveJurisdictions(Optional.of(Collections.emptyList()));
206+
}
207+
208+
public List<JurisdictionDefinition> retrieveJurisdictions(Optional<List<String>> jurisdictionIds) {
209+
return getJurisdictionsFromDefinitionStore(jurisdictionIds);
206210
}
207211

208212
@Override
@@ -230,12 +234,6 @@ private List<String> getCaseTypeIdFromJurisdictionDefinition(List<JurisdictionDe
230234
.collect(Collectors.toList());
231235
}
232236

233-
@Cacheable(value = "allJurisdictionsCache")
234-
@Override
235-
public List<JurisdictionDefinition> getAllJurisdictionsFromDefinitionStore() {
236-
return getJurisdictionsFromDefinitionStore(Optional.of(Collections.emptyList()));
237-
}
238-
239237
private List<JurisdictionDefinition> getJurisdictionsFromDefinitionStore(Optional<List<String>> jurisdictionIds) {
240238
try {
241239
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(applicationParams.jurisdictionDefURL());

src/test/java/uk/gov/hmcts/ccd/TestConfiguration.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ CaseDefinitionRepository caseDefinitionRepository() throws IOException {
125125
when(caseDefinitionRepository.getUserRoleClassifications(any())).thenCallRealMethod();
126126
when(caseDefinitionRepository.getClassificationsForUserRoleList(any())).thenCallRealMethod();
127127
when(caseDefinitionRepository.getJurisdiction(anyString())).thenCallRealMethod();
128-
when(caseDefinitionRepository.getJurisdictionFromDefinitionStore(anyString())).thenCallRealMethod();
128+
when(caseDefinitionRepository.retrieveJurisdictions(any())).thenCallRealMethod();
129129
return caseDefinitionRepository;
130130
}
131131

src/test/java/uk/gov/hmcts/ccd/data/definition/CachedCaseDefinitionRepositoryTest.java

+34
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,19 @@
1010
import org.mockito.MockitoAnnotations;
1111
import uk.gov.hmcts.ccd.ApplicationParams;
1212
import uk.gov.hmcts.ccd.domain.model.definition.CaseTypeDefinition;
13+
import uk.gov.hmcts.ccd.domain.model.definition.JurisdictionDefinition;
1314
import uk.gov.hmcts.ccd.domain.model.definition.FieldTypeDefinition;
1415
import uk.gov.hmcts.ccd.domain.model.definition.UserRole;
1516

1617
import java.util.Arrays;
1718
import java.util.List;
19+
import java.util.Objects;
1820

1921
import static com.google.common.collect.Lists.newArrayList;
2022
import static org.hamcrest.MatcherAssert.assertThat;
2123
import static org.hamcrest.Matchers.is;
2224
import static org.junit.jupiter.api.Assertions.assertAll;
25+
import static org.junit.jupiter.api.Assertions.assertEquals;
2326
import static org.mockito.Matchers.anyString;
2427
import static org.mockito.Mockito.doReturn;
2528
import static org.mockito.Mockito.times;
@@ -212,6 +215,37 @@ void shouldRetrieveCaseTypesIDsByJurisdictions() {
212215
}
213216
}
214217

218+
@Nested
219+
@DisplayName("getAllJurisdictionsFromDefinitionStore()")
220+
class GetAllJurisdictionsFromDefinitionStore {
221+
222+
@Test
223+
@DisplayName("should retrieve all Jurisdictions.")
224+
void shouldRetrieveCaseTypesIDsByJurisdictions() {
225+
JurisdictionDefinition jurisdictionDefinition1 = new JurisdictionDefinition();
226+
jurisdictionDefinition1.setId("JURISDICTION_1");
227+
JurisdictionDefinition jurisdictionDefinition2 = new JurisdictionDefinition();
228+
jurisdictionDefinition2.setId("JURISDICTION_2");
229+
230+
final List<JurisdictionDefinition> expectedJurisdictionDefinitions =
231+
newArrayList(jurisdictionDefinition1, jurisdictionDefinition2);
232+
doReturn(expectedJurisdictionDefinitions).when(caseDefinitionRepository)
233+
.getAllJurisdictionsFromDefinitionStore();
234+
235+
final List<JurisdictionDefinition> jurisdictionDefinitions =
236+
cachedCaseDefinitionRepository.getAllJurisdictionsFromDefinitionStore();
237+
238+
assertAll(
239+
() -> assertEquals(expectedJurisdictionDefinitions.stream().map(JurisdictionDefinition::getId).toList(),
240+
jurisdictionDefinitions.stream().map(JurisdictionDefinition::getId).toList()),
241+
() -> assertEquals(expectedJurisdictionDefinitions.stream().map(Objects::hashCode).toList(),
242+
jurisdictionDefinitions.stream().map(Objects::hashCode).toList())
243+
);
244+
245+
verify(caseDefinitionRepository, times(1)).getAllJurisdictionsFromDefinitionStore();
246+
}
247+
}
248+
215249
@Nested
216250
@DisplayName("getUserRoleClassifications()")
217251
class GetUserRoleClassifications {

src/test/java/uk/gov/hmcts/ccd/domain/model/definition/CaseTypeDefinitionTest.java

+12-45
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,12 @@
1515
import org.junit.jupiter.api.Test;
1616

1717
import java.util.Arrays;
18-
import java.util.List;
1918
import java.util.Optional;
2019

2120
import static org.hamcrest.MatcherAssert.assertThat;
2221
import static org.hamcrest.Matchers.is;
2322
import static org.junit.jupiter.api.Assertions.assertEquals;
2423
import static org.junit.jupiter.api.Assertions.assertNotEquals;
25-
import static org.junit.jupiter.api.Assertions.assertNull;
2624
import static org.junit.jupiter.api.Assertions.assertTrue;
2725
import static uk.gov.hmcts.ccd.TestFixtures.fromFileAsString;
2826
import static uk.gov.hmcts.ccd.domain.service.common.TestBuildersUtil.CaseFieldBuilder.newCaseField;
@@ -58,9 +56,11 @@ public void ftMasterCaseTypeHashStringComparison() throws JsonProcessingExceptio
5856
String fileContent = fromFileAsString("tests/FT-MasterCaseType-payload.json");
5957

6058
CaseTypeDefinition caseTypeDefinition = objectMapper.readValue(fileContent, CaseTypeDefinition.class);
61-
String originalJson = objectMapper.writeValueAsString(caseTypeDefinition);
62-
6359
CaseTypeDefinition copiedCaseTypeDefinition = caseTypeDefinition.createCopy();
60+
61+
assertNotEquals(caseTypeDefinition.hashCode(), copiedCaseTypeDefinition.hashCode());
62+
63+
String originalJson = objectMapper.writeValueAsString(caseTypeDefinition);
6464
String copiedJson = objectMapper.writeValueAsString(copiedCaseTypeDefinition);
6565

6666
String originalJsonHash256 = DigestUtils.sha256Hex(originalJson);
@@ -74,25 +74,11 @@ public void beftaCaseType31HashStringComparison() throws JsonProcessingException
7474
String fileContent = fromFileAsString("tests/BEFTA-CASETYPE-3-1-payload.json");
7575

7676
CaseTypeDefinition caseTypeDefinition = objectMapper.readValue(fileContent, CaseTypeDefinition.class);
77-
String originalJson = objectMapper.writeValueAsString(caseTypeDefinition);
78-
7977
CaseTypeDefinition copiedCaseTypeDefinition = caseTypeDefinition.createCopy();
80-
String copiedJson = objectMapper.writeValueAsString(copiedCaseTypeDefinition);
81-
82-
String originalJsonHash256 = DigestUtils.sha256Hex(originalJson);
83-
String copiedJsonHash256 = DigestUtils.sha256Hex(copiedJson);
84-
85-
assertEquals(originalJsonHash256, copiedJsonHash256);
86-
}
8778

88-
@Test
89-
public void ftComplexCrudHashStringComparison() throws JsonProcessingException {
90-
String fileContent = fromFileAsString("tests/FT-ComplexCRUD-payload.json");
79+
assertNotEquals(caseTypeDefinition.hashCode(), copiedCaseTypeDefinition.hashCode());
9180

92-
CaseTypeDefinition caseTypeDefinition = objectMapper.readValue(fileContent, CaseTypeDefinition.class);
9381
String originalJson = objectMapper.writeValueAsString(caseTypeDefinition);
94-
95-
CaseTypeDefinition copiedCaseTypeDefinition = caseTypeDefinition.createCopy();
9682
String copiedJson = objectMapper.writeValueAsString(copiedCaseTypeDefinition);
9783

9884
String originalJsonHash256 = DigestUtils.sha256Hex(originalJson);
@@ -102,40 +88,21 @@ public void ftComplexCrudHashStringComparison() throws JsonProcessingException {
10288
}
10389

10490
@Test
105-
public void testCaseTypeEmptyEventsListCompareActualAndClone() throws JsonProcessingException {
106-
String fileContent = fromFileAsString("tests/CaseType-empty-events.json");
91+
public void ftComplexCrudHashStringComparison() throws JsonProcessingException {
92+
String fileContent = fromFileAsString("tests/FT-ComplexCRUD-payload.json");
10793

10894
CaseTypeDefinition caseTypeDefinition = objectMapper.readValue(fileContent, CaseTypeDefinition.class);
109-
assertTrue(caseTypeDefinition.getEvents().isEmpty());
110-
11195
CaseTypeDefinition copiedCaseTypeDefinition = caseTypeDefinition.createCopy();
112-
assertNotEquals(caseTypeDefinition.hashCode(), copiedCaseTypeDefinition.hashCode());
113-
114-
assertTrue(copiedCaseTypeDefinition.getEvents().isEmpty());
115-
116-
List<CaseEventDefinition> copiedEvents = copiedCaseTypeDefinition.getEvents();
117-
copiedEvents.add(new CaseEventDefinition());
118-
119-
assertTrue(caseTypeDefinition.getEvents().isEmpty());
120-
assertEquals(1, copiedCaseTypeDefinition.getEvents().size());
121-
}
12296

123-
@Test
124-
public void testCaseTypeNullStatesListCompareActualAndClone() throws JsonProcessingException {
125-
String fileContent = fromFileAsString("tests/CaseType-empty-events.json");
126-
127-
CaseTypeDefinition caseTypeDefinition = objectMapper.readValue(fileContent, CaseTypeDefinition.class);
128-
assertNull(caseTypeDefinition.getStates());
129-
130-
CaseTypeDefinition copiedCaseTypeDefinition = caseTypeDefinition.createCopy();
13197
assertNotEquals(caseTypeDefinition.hashCode(), copiedCaseTypeDefinition.hashCode());
13298

133-
assertNull(copiedCaseTypeDefinition.getStates());
99+
String originalJson = objectMapper.writeValueAsString(caseTypeDefinition);
100+
String copiedJson = objectMapper.writeValueAsString(copiedCaseTypeDefinition);
134101

135-
copiedCaseTypeDefinition.setStates(List.of(new CaseStateDefinition()));
102+
String originalJsonHash256 = DigestUtils.sha256Hex(originalJson);
103+
String copiedJsonHash256 = DigestUtils.sha256Hex(copiedJson);
136104

137-
assertNull(caseTypeDefinition.getStates());
138-
assertEquals(1, copiedCaseTypeDefinition.getStates().size());
105+
assertEquals(originalJsonHash256, copiedJsonHash256);
139106
}
140107

141108
@Nested
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package uk.gov.hmcts.ccd.domain.model.definition;
2+
3+
import com.fasterxml.jackson.annotation.JsonCreator;
4+
import com.fasterxml.jackson.core.JsonParser;
5+
import com.fasterxml.jackson.core.JsonProcessingException;
6+
import com.fasterxml.jackson.databind.DeserializationFeature;
7+
import com.fasterxml.jackson.databind.ObjectMapper;
8+
import com.fasterxml.jackson.databind.SerializationFeature;
9+
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
10+
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
11+
import com.fasterxml.jackson.module.paramnames.ParameterNamesModule;
12+
import org.apache.commons.codec.digest.DigestUtils;
13+
import org.junit.jupiter.api.BeforeEach;
14+
import org.junit.jupiter.api.Test;
15+
16+
import static org.junit.jupiter.api.Assertions.assertEquals;
17+
import static org.junit.jupiter.api.Assertions.assertNotEquals;
18+
import static uk.gov.hmcts.ccd.TestFixtures.fromFileAsString;
19+
20+
class JurisdictionDefinitionTest {
21+
private ObjectMapper objectMapper;
22+
23+
@BeforeEach
24+
void setUp() {
25+
objectMapper = new ObjectMapper()
26+
.registerModule(new Jdk8Module())
27+
.registerModule(new ParameterNamesModule(JsonCreator.Mode.PROPERTIES))
28+
.registerModule(new JavaTimeModule()).disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
29+
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
30+
.enable(JsonParser.Feature.STRICT_DUPLICATE_DETECTION);
31+
}
32+
33+
@Test
34+
public void autoTest1JurisdictionCompareActualAndClone() throws JsonProcessingException {
35+
String fileContent = fromFileAsString("tests/AUTOTEST1-jurisdiction-payload.json");
36+
37+
JurisdictionDefinition jurisdictionDefinition = objectMapper
38+
.readValue(fileContent, JurisdictionDefinition.class);
39+
JurisdictionDefinition copiedJurisdictionDefinition = jurisdictionDefinition.createCopy();
40+
41+
assertNotEquals(jurisdictionDefinition.hashCode(), copiedJurisdictionDefinition.hashCode());
42+
43+
String originalJson = objectMapper.writeValueAsString(jurisdictionDefinition);
44+
String copiedJson = objectMapper.writeValueAsString(copiedJurisdictionDefinition);
45+
46+
String originalJsonHash256 = DigestUtils.sha256Hex(originalJson);
47+
String copiedJsonHash256 = DigestUtils.sha256Hex(copiedJson);
48+
49+
assertNotEquals(jurisdictionDefinition.hashCode(), copiedJurisdictionDefinition.hashCode());
50+
assertEquals(originalJsonHash256, copiedJsonHash256);
51+
}
52+
53+
@Test
54+
public void beftaMasterJurisdictionCompareActualAndClone() throws JsonProcessingException {
55+
String fileContent = fromFileAsString("tests/BEFTA_MASTER-jurisdiction-payload.json");
56+
57+
JurisdictionDefinition jurisdictionDefinition = objectMapper
58+
.readValue(fileContent, JurisdictionDefinition.class);
59+
JurisdictionDefinition copiedJurisdictionDefinition = jurisdictionDefinition.createCopy();
60+
61+
assertNotEquals(jurisdictionDefinition.hashCode(), copiedJurisdictionDefinition.hashCode());
62+
63+
String originalJson = objectMapper.writeValueAsString(jurisdictionDefinition);
64+
String copiedJson = objectMapper.writeValueAsString(copiedJurisdictionDefinition);
65+
66+
String originalJsonHash256 = DigestUtils.sha256Hex(originalJson);
67+
String copiedJsonHash256 = DigestUtils.sha256Hex(copiedJson);
68+
69+
assertNotEquals(jurisdictionDefinition.hashCode(), copiedJurisdictionDefinition.hashCode());
70+
assertEquals(originalJsonHash256, copiedJsonHash256);
71+
}
72+
73+
@Test
74+
public void beftaJurisdiction3JurisdictionCompareActualAndClone() throws JsonProcessingException {
75+
String fileContent = fromFileAsString("tests/BEFTA_JURISDICTION_3-jurisdiction-payload.json");
76+
77+
JurisdictionDefinition jurisdictionDefinition = objectMapper
78+
.readValue(fileContent, JurisdictionDefinition.class);
79+
JurisdictionDefinition copiedJurisdictionDefinition = jurisdictionDefinition.createCopy();
80+
81+
assertNotEquals(jurisdictionDefinition.hashCode(), copiedJurisdictionDefinition.hashCode());
82+
83+
String originalJson = objectMapper.writeValueAsString(jurisdictionDefinition);
84+
String copiedJson = objectMapper.writeValueAsString(copiedJurisdictionDefinition);
85+
86+
String originalJsonHash256 = DigestUtils.sha256Hex(originalJson);
87+
String copiedJsonHash256 = DigestUtils.sha256Hex(copiedJson);
88+
89+
assertNotEquals(jurisdictionDefinition.hashCode(), copiedJurisdictionDefinition.hashCode());
90+
assertEquals(originalJsonHash256, copiedJsonHash256);
91+
}
92+
93+
}

0 commit comments

Comments
 (0)