From c0563231915a9b36cb200ef80b3d83d767cedf37 Mon Sep 17 00:00:00 2001 From: zeeshanalamhmcts <149508769+zeeshanalamhmcts@users.noreply.github.com> Date: Fri, 15 May 2026 15:28:39 +0100 Subject: [PATCH 01/12] =?UTF-8?q?PEG-2848-R12=20=E2=86=92=20main:=20bring?= =?UTF-8?q?=20R12=20changes=20to=20main=20with=20main's=20pom=20version=20?= =?UTF-8?q?(#67)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * PEG-2866: Upgrade framework (#3) Co-authored-by: Mohamed Sherefudheen * New 17.0.82-PEG-2848-SNAPSHOT * PEG-2848: Fix sonar issue * PEG-2848: Fix sonar issue * New 17.0.83-PEG-2848-SNAPSHOT * dummy commit to create image * dummy commit to create image * New 17.0.85-PEG-2848-SNAPSHOT * RELEASE-ENGG-2609: Bump pom version to -RE-SNAPSHOT * New 17.0.90-RE-SNAPSHOT * PEG-2866: Upgrade framework (#3) Co-authored-by: Mohamed Sherefudheen * PEG-2848: Fix sonar issue * dummy commit to create image * dummy commit to create image * Rebase from RELEASE-ENGG-2609, Update version to 17.0.85-RBSD-2609-SNAPSHOT * Fix ProsecutionCaseFile: port updateCaseDetails from release-engg-2609, apply Framework D JSON API changes * PEG-2848: Bump pom version to -PEG-2848-R-SNAPSHOT * PEG-2848: Set azure-pipelines ref to dev/enforcer-disabled * New 17.0.86-PEG-2848-R-SNAPSHOT * PEG-2848-R12: tag SNAPSHOT versions with -PEG-2848-R12 suffix and switch azure-pipelines ref to dev/enforcer-disabled * New 17.0.92-PEG-2848-R12-SNAPSHOT * New 17.0.93-PEG-2848-R12-SNAPSHOT * PEG-2848-R12 → main: restore project pom versions to main (17.0.91-SNAPSHOT) * PEG-2848-R12 → main: revert azure-pipelines ref from dev/enforcer-disabled to main * reverted changes to azure-pipelines.yaml --------- Co-authored-by: MohamedFarouk-HMCTS Co-authored-by: Mohamed Sherefudheen Co-authored-by: devops-team Co-authored-by: vmuthuhm Co-authored-by: vmuthu Co-authored-by: Zeeshan Alam --- README.md | 1 + pom.xml | 2 +- .../casefile/command/api/AddMaterialApi.java | 4 +- .../casefile/command/api/PleadOnlineApi.java | 6 +- .../SjpProsecutionUpdateOffenceCodeApi.java | 4 +- .../command/api/SubmitCCApplicationApi.java | 2 +- .../command/api/AddMaterialApiTest.java | 4 +- .../command/api/PleadOnlineApiTest.java | 2 +- .../validator/PleadOnlineValidatorTest.java | 34 +- .../handler/CpsServeMaterialHandler.java | 4 +- .../service/ProsecutionCaseQueryService.java | 2 +- .../ProsecutionCaseQueryServiceTest.java | 2 +- .../handler/AcceptCaseHandlerTest.java | 17 +- ...oupIdForSummonsApplicationHandlerTest.java | 2 +- .../handler/RejectGroupCaseHandlerTest.java | 2 +- .../AddDefendantIdpcCommandBuilder.java | 2 +- .../casefile/service/DefenceServiceImpl.java | 2 +- .../aggregate/CpsServeMaterialAggregate.java | 4 +- .../aggregate/ProsecutionCaseFile.java | 10 +- ...rosecutionCaseFileErrorCorrectionTest.java | 10 +- .../ProsecutionCaseFileTest.java | 4928 ++++++++--------- .../ProsecutionReceivedListenerTest.java | 8 +- .../processor/ApplicationEventProcessor.java | 2 +- .../processor/CaseFilteredEventProcessor.java | 2 +- .../CpsServeMaterialEventProcessor.java | 16 +- .../DefendantIdpcEventProcessor.java | 2 +- ...pCasesParkedForApprovalEventProcessor.java | 2 +- .../processor/MaterialEventProcessor.java | 1190 ++-- .../event/processor/PocaEventProcessor.java | 6 +- .../ProgressionPublicEventProcessor.java | 2 +- .../activiti/delegates/AddMaterialToCase.java | 4 +- .../PendingCpsServeBcmExpiredDelegate.java | 2 +- .../PendingCpsServePetExpiredDelegate.java | 2 +- .../PendingIdpcMaterialExpiredDelegate.java | 4 +- .../PendingMaterialExpiredDelegate.java | 2 +- .../activiti/delegates/UploadFile.java | 4 +- .../service/DocumentGeneratorService.java | 2 +- .../processor/service/MaterialService.java | 10 +- .../service/ProsecutionCaseQueryService.java | 2 +- .../service/ReferenceDataService.java | 2 +- .../GroupCasesSummonsTemplateHelper.java | 4 +- .../event/processor/utils/MetadataHelper.java | 4 +- .../CaseFilteredEventProcessorTest.java | 2 +- .../CpsServeMaterialEventProcessorTest.java | 4 +- .../processor/MaterialEventProcessorTest.java | 2578 ++++----- .../ProgressionPublicEventProcessorTest.java | 4 +- .../ProsecutionReceivedProcessorTest.java | 6 +- .../sjp/CaseDocumentUploadedListenerTest.java | 4 +- .../service/DocumentGeneratorServiceTest.java | 2 +- .../processor/utils/CaseReceivedHelper.java | 2 +- .../processor/utils/EnvelopeHelperTest.java | 2 +- .../event/processor/utils/FileUtil.java | 4 +- .../casefile/helper/ActivitiHelper.java | 6 +- .../casefile/helper/AddMaterialHelper.java | 12 +- .../prosecution/casefile/helper/FileUtil.java | 2 +- .../helper/InitiateCCProsecutionHelper.java | 2 +- .../helper/SubmitCCApplicationHelper.java | 2 +- .../casefile/it/AddApplicationMaterialIT.java | 6 +- .../casefile/it/AddMaterialIT.java | 20 +- .../it/InitiateGroupProsecutionIT.java | 4 +- .../casefile/it/InitiateSjpProsecutionIT.java | 12 +- .../casefile/it/ProcessCasesCreatedIT.java | 2 +- .../casefile/stub/IdMapperStub.java | 6 +- .../service/ProgressionServiceImpl.java | 2 +- .../api/service/CaseForCitizenService.java | 2 +- .../query/api/service/ProgressionService.java | 2 +- .../service/ReferenceOffencesDataService.java | 2 +- .../query/api/service/SjpService.java | 2 +- .../query/api/CasefileQueryApiTest.java | 2 +- .../api/service/CaseDetailConverterTest.java | 4 +- .../service/CaseForCitizenServiceTest.java | 4 +- .../api/service/ProgressionServiceTest.java | 4 +- .../query/api/service/SjpServiceTest.java | 2 +- .../query/api/service/vo/FileUtil.java | 2 +- .../query/api/utils/OffenceHelperTest.java | 2 +- .../view/ProsecutionCasefileQueryView.java | 4 +- .../service/BusinessErrorDetailsService.java | 4 +- .../ReferenceDataQueryServiceImpl.java | 2 +- .../ReferenceDataQueryServiceTest.java | 16 +- .../ReferenceDataQueryServiceTestHelper.java | 140 +- .../casefile/validation/CpsFormValidator.java | 40 +- .../validation/CpsFormValidatorTest.java | 20 +- .../CpsDefendantIdValidationRuleTest.java | 4 +- .../forms/NameAndDOBValidationRuleTest.java | 40 +- .../casefile/validation/utils/FileUtil.java | 4 +- 85 files changed, 4628 insertions(+), 4674 deletions(-) diff --git a/README.md b/README.md index 65ad8ed3..4cbb08f5 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ = cpp.context.prosecution.casefile = ------------------------------------ + diff --git a/pom.xml b/pom.xml index 48cf26fb..164b1fb0 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.common service-parent-pom - 17.103.3 + 17.103.9 uk.gov.moj.cpp.prosecution.casefile diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/AddMaterialApi.java b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/AddMaterialApi.java index 2bf37500..a45f391a 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/AddMaterialApi.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/AddMaterialApi.java @@ -19,7 +19,7 @@ import java.util.UUID; import javax.inject.Inject; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonArray; import javax.json.JsonArrayBuilder; import javax.json.JsonObject; @@ -62,7 +62,7 @@ public void addMaterials(final JsonEnvelope addMaterialCommand) throws FileServi final JsonObject addMaterialPayload = addMaterialCommand.payloadAsJsonObject(); final JsonArray materials = addMaterialPayload.getJsonArray(MATERIALS); - final JsonArrayBuilder enrichedMaterialsBuilder = Json.createArrayBuilder(); + final JsonArrayBuilder enrichedMaterialsBuilder = JsonObjects.createArrayBuilder(); for (final JsonObject material : materials.getValuesAs(JsonObject.class)) { final JsonObjectBuilder enrichedMaterialBuilder = createObjectBuilder(material); getFileType(material).ifPresent(fileType -> enrichedMaterialBuilder.add(FILE_TYPE, fileType)); diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/PleadOnlineApi.java b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/PleadOnlineApi.java index 17283368..97e4e7e0 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/PleadOnlineApi.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/PleadOnlineApi.java @@ -2,7 +2,7 @@ import static java.util.Arrays.asList; import static java.util.Objects.nonNull; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.annotation.Component.COMMAND_API; import static uk.gov.justice.services.core.enveloper.Enveloper.envelop; import static uk.gov.justice.services.messaging.Envelope.envelopeFrom; @@ -29,7 +29,7 @@ import java.util.Map; import javax.inject.Inject; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; @@ -126,7 +126,7 @@ private void checkValidationErrors(Map> validationErrors) { private JsonObject getCaseDetailFromSjp(final Envelope envelope) { - final JsonObject queryCasePayload = Json.createObjectBuilder() + final JsonObject queryCasePayload = JsonObjects.createObjectBuilder() .add(CASE_ID, envelope.payload().getCaseId().toString()) .build(); final Envelope requestEnvelope = envelop(queryCasePayload) diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/SjpProsecutionUpdateOffenceCodeApi.java b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/SjpProsecutionUpdateOffenceCodeApi.java index 669ffc6a..31e5e401 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/SjpProsecutionUpdateOffenceCodeApi.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/SjpProsecutionUpdateOffenceCodeApi.java @@ -16,7 +16,7 @@ import java.util.Optional; import javax.inject.Inject; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import com.google.common.collect.Lists; @@ -42,7 +42,7 @@ public void updateOffenceCode(final JsonEnvelope envelope) { final List offencesRefData = referenceDataQueryService.retrieveOffenceDataList(Lists.newArrayList(payload.getString(OFFENCE_CODE)), Optional.empty()); final OffenceReferenceData offenceReferenceData = offencesRefData.get(0); - final JsonObject commandPayload = Json.createObjectBuilder() + final JsonObject commandPayload = JsonObjects.createObjectBuilder() .add("caseId", payload.getString("caseId")) .add(OFFENCE_CODE, payload.getString(OFFENCE_CODE)) .add("offenceReferenceData", objectToJsonObjectConverter.convert(offenceReferenceData)) diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/SubmitCCApplicationApi.java b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/SubmitCCApplicationApi.java index c1a9aa48..3a52c097 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/SubmitCCApplicationApi.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/SubmitCCApplicationApi.java @@ -5,7 +5,7 @@ import static java.util.Optional.ofNullable; import static java.util.UUID.randomUUID; import static java.util.stream.Collectors.toList; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.apache.commons.collections.CollectionUtils.isEmpty; import static org.slf4j.LoggerFactory.getLogger; import static uk.gov.justice.services.core.annotation.Component.COMMAND_API; diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/AddMaterialApiTest.java b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/AddMaterialApiTest.java index 2f5ad0ad..161591c6 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/AddMaterialApiTest.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/AddMaterialApiTest.java @@ -6,8 +6,8 @@ import static java.util.Optional.empty; import static java.util.Optional.of; import static java.util.UUID.randomUUID; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.allOf; diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/PleadOnlineApiTest.java b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/PleadOnlineApiTest.java index d0bce58f..99fdaaca 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/PleadOnlineApiTest.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/PleadOnlineApiTest.java @@ -2,7 +2,7 @@ import static java.util.Arrays.asList; import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.mockito.ArgumentMatchers.any; diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/validator/PleadOnlineValidatorTest.java b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/validator/PleadOnlineValidatorTest.java index f03f4b11..7166d3fa 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/validator/PleadOnlineValidatorTest.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/validator/PleadOnlineValidatorTest.java @@ -24,7 +24,7 @@ import java.util.List; import java.util.Map; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import org.mockito.InjectMocks; @@ -131,14 +131,14 @@ public void shouldValidateWithProsecutionCasePayload() { @Test public void shouldValidateWithJsonPayload_WhenCaseAlreadyReviewed() { - final JsonObject jsonObject = Json.createObjectBuilder() + final JsonObject jsonObject = JsonObjects.createObjectBuilder() .add("status", "") .add("completed", false) .add("assigned", false) - .add("defendant", Json + .add("defendant", JsonObjects .createObjectBuilder() - .add("offences", Json.createArrayBuilder() - .add(Json.createObjectBuilder() + .add("offences", JsonObjects.createArrayBuilder() + .add(JsonObjects.createObjectBuilder() .add("pendingWithdrawal", true) .build()) .build() @@ -153,14 +153,14 @@ public void shouldValidateWithJsonPayload_WhenCaseAlreadyReviewed() { @Test public void shouldValidateWithJsonPayload_WhenCaseAdjournedPostConviction() { - final JsonObject jsonObject = Json.createObjectBuilder() + final JsonObject jsonObject = JsonObjects.createObjectBuilder() .add("status", "") .add("completed", false) .add("assigned", false) - .add("defendant", Json + .add("defendant", JsonObjects .createObjectBuilder() - .add("offences", Json.createArrayBuilder() - .add(Json.createObjectBuilder() + .add("offences", JsonObjects.createArrayBuilder() + .add(JsonObjects.createObjectBuilder() .add("pendingWithdrawal", false) .add("convictionDate", "2020-12-23") .build()) @@ -176,14 +176,14 @@ public void shouldValidateWithJsonPayload_WhenCaseAdjournedPostConviction() { @Test public void shouldValidateWithJsonPayload_WhenPleaAlreadySubmitted() { - final JsonObject jsonObject = Json.createObjectBuilder() + final JsonObject jsonObject = JsonObjects.createObjectBuilder() .add("status", "") .add("completed", false) .add("assigned", false) - .add("defendant", Json + .add("defendant", JsonObjects .createObjectBuilder() - .add("offences", Json.createArrayBuilder() - .add(Json.createObjectBuilder() + .add("offences", JsonObjects.createArrayBuilder() + .add(JsonObjects.createObjectBuilder() .add("pendingWithdrawal", false) .add("plea", "Guilty") .build()) @@ -199,14 +199,14 @@ public void shouldValidateWithJsonPayload_WhenPleaAlreadySubmitted() { @Test public void shouldValidateWithJsonPayload() { - final JsonObject jsonObject = Json.createObjectBuilder() + final JsonObject jsonObject = JsonObjects.createObjectBuilder() .add("status", "") .add("completed", false) .add("assigned", false) - .add("defendant", Json + .add("defendant", JsonObjects .createObjectBuilder() - .add("offences", Json.createArrayBuilder() - .add(Json.createObjectBuilder() + .add("offences", JsonObjects.createArrayBuilder() + .add(JsonObjects.createObjectBuilder() .add("pendingWithdrawal", false) .build()) .build()) diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/CpsServeMaterialHandler.java b/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/CpsServeMaterialHandler.java index c68ae02e..4731f708 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/CpsServeMaterialHandler.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/CpsServeMaterialHandler.java @@ -4,8 +4,8 @@ import static java.util.Objects.nonNull; import static java.util.UUID.fromString; import static java.util.UUID.nameUUIDFromBytes; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static javax.json.JsonValue.NULL; import static uk.gov.justice.services.core.annotation.Component.COMMAND_HANDLER; import static uk.gov.justice.services.core.enveloper.Enveloper.toEnvelopeWithMetadataFrom; diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/service/ProsecutionCaseQueryService.java b/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/service/ProsecutionCaseQueryService.java index 6b2aff26..a090bfb4 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/service/ProsecutionCaseQueryService.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/service/ProsecutionCaseQueryService.java @@ -13,7 +13,7 @@ import javax.json.JsonObject; import javax.json.JsonValue; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.annotation.Component.COMMAND_HANDLER; import static uk.gov.justice.services.messaging.Envelope.metadataFrom; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/ProsecutionCaseQueryServiceTest.java b/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/ProsecutionCaseQueryServiceTest.java index 2a4edb81..30acf24d 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/ProsecutionCaseQueryServiceTest.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/ProsecutionCaseQueryServiceTest.java @@ -1,7 +1,7 @@ package uk.gov.moj.cpp.prosecution.casefile; import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/AcceptCaseHandlerTest.java b/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/AcceptCaseHandlerTest.java index 1913d705..3697d6b0 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/AcceptCaseHandlerTest.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/AcceptCaseHandlerTest.java @@ -21,6 +21,7 @@ import static uk.gov.justice.services.core.annotation.Component.COMMAND_HANDLER; import static uk.gov.justice.services.messaging.Envelope.envelopeFrom; import static uk.gov.justice.services.messaging.Envelope.metadataFrom; +import static uk.gov.justice.services.messaging.JsonObjects.*; import static uk.gov.justice.services.test.utils.core.enveloper.EnveloperFactory.createEnveloperWithEvents; import static uk.gov.justice.services.test.utils.core.helper.EventStreamMockHelper.verifyAppendAndGetArgumentFrom; import static uk.gov.justice.services.test.utils.core.matchers.HandlerMatcher.isHandler; @@ -47,8 +48,9 @@ import uk.gov.justice.services.eventsourcing.source.core.exception.EventStreamException; import uk.gov.justice.services.messaging.Envelope; import uk.gov.justice.services.messaging.JsonEnvelope; +import uk.gov.justice.services.messaging.JsonObjects; import uk.gov.justice.services.messaging.Metadata; -import uk.gov.justice.services.test.utils.core.messaging.JsonObjects; + import uk.gov.justice.services.test.utils.core.reflection.ReflectionUtil; import uk.gov.moj.cpp.prosecution.casefile.aggregate.ProsecutionCaseFile; import uk.gov.moj.cpp.prosecution.casefile.command.service.ProsecutionCaseQueryService; @@ -81,7 +83,6 @@ import java.util.UUID; import java.util.stream.Stream; -import javax.json.Json; import javax.json.JsonObject; import javax.json.JsonValue; @@ -460,15 +461,15 @@ private void mockPreviousMaterialEvents(final JsonEnvelope... pendingMaterials) } private JsonEnvelope materialPendingEventEnvelope(final UUID submissionId, final MaterialPending materialPending) { - final Metadata metadata = metadataFrom(JsonObjects.createObjectBuilder(metadataWithRandomUUID("prosecutioncasefile.events.material-pending").build().asJsonObject()) + final Metadata metadata = metadataFrom(createObjectBuilder(metadataWithRandomUUID("prosecutioncasefile.events.material-pending").build().asJsonObject()) .add("submissionId", submissionId.toString()).build()) .build(); - final JsonObject payload = Json.createObjectBuilder() + final JsonObject payload = createObjectBuilder() .add("caseId", materialPending.getCaseId().toString()) .add("prosecutingAuthority", materialPending.getProsecutingAuthority()) .add("prosecutorDefendantId", materialPending.getProsecutorDefendantId()) - .add("material", Json.createObjectBuilder() + .add("material", JsonObjects.createObjectBuilder() .add("fileStoreId", materialPending.getMaterial().getFileStoreId().toString()) .add("documentType", materialPending.getMaterial().getDocumentType()) .add("fileType", materialPending.getMaterial().getFileType()) @@ -483,10 +484,10 @@ private JsonEnvelope materialPendingEventEnvelopeV2(final UUID submissionId, fin .add("submissionId", submissionId.toString()).build()) .build(); - final JsonObject payload = Json.createObjectBuilder() + final JsonObject payload = createObjectBuilder() .add("caseId", materialPending.getCaseId().toString()) .add("caseSubFolderName", materialPending.getCaseSubFolderName()) - .add("exhibit", Json.createObjectBuilder() + .add("exhibit", createObjectBuilder() .add("reference", materialPending.getExhibit().getReference()) .build()) .add("fileName", materialPending.getFileName()) @@ -502,4 +503,4 @@ private JsonEnvelope materialPendingEventEnvelopeV2(final UUID submissionId, fin private Metadata withSubmissionId(final Metadata metadata, final String submissionId) { return metadataFrom(JsonObjects.createObjectBuilder(metadata.asJsonObject()).add("submissionId", submissionId).build()).build(); } -} \ No newline at end of file +} diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/RecordGroupIdForSummonsApplicationHandlerTest.java b/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/RecordGroupIdForSummonsApplicationHandlerTest.java index cdb658ea..e30c45a9 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/RecordGroupIdForSummonsApplicationHandlerTest.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/RecordGroupIdForSummonsApplicationHandlerTest.java @@ -22,7 +22,7 @@ import java.util.UUID; import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import static uk.gov.justice.services.messaging.Envelope.envelopeFrom; diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/RejectGroupCaseHandlerTest.java b/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/RejectGroupCaseHandlerTest.java index e0ca18c6..0642a3d0 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/RejectGroupCaseHandlerTest.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/RejectGroupCaseHandlerTest.java @@ -1,7 +1,7 @@ package uk.gov.moj.cpp.prosecution.casefile.command.handler; import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/builder/AddDefendantIdpcCommandBuilder.java b/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/builder/AddDefendantIdpcCommandBuilder.java index 424ffa80..d7b8746c 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/builder/AddDefendantIdpcCommandBuilder.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/builder/AddDefendantIdpcCommandBuilder.java @@ -1,7 +1,7 @@ package uk.gov.moj.cpp.prosecution.casefile.command.handler.builder; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.messaging.JsonEnvelope.metadataBuilder; import static uk.gov.moj.cpp.prosecution.casefile.command.handler.util.DefaultTestData.CASE_DOCUMENT_ID; import static uk.gov.moj.cpp.prosecution.casefile.command.handler.util.DefaultTestData.CASE_DOCUMENT_MATERIAL_ID; diff --git a/prosecutioncasefile-defence-service/src/main/java/uk/gov/moj/cpp/prosecution/casefile/service/DefenceServiceImpl.java b/prosecutioncasefile-defence-service/src/main/java/uk/gov/moj/cpp/prosecution/casefile/service/DefenceServiceImpl.java index 6f90f640..308ff9ef 100644 --- a/prosecutioncasefile-defence-service/src/main/java/uk/gov/moj/cpp/prosecution/casefile/service/DefenceServiceImpl.java +++ b/prosecutioncasefile-defence-service/src/main/java/uk/gov/moj/cpp/prosecution/casefile/service/DefenceServiceImpl.java @@ -1,7 +1,7 @@ package uk.gov.moj.cpp.prosecution.casefile.service; import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.annotation.Component.COMMAND_API; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; import static uk.gov.justice.services.messaging.JsonEnvelope.metadataBuilder; diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/main/java/uk/gov/moj/cpp/prosecution/casefile/aggregate/CpsServeMaterialAggregate.java b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/main/java/uk/gov/moj/cpp/prosecution/casefile/aggregate/CpsServeMaterialAggregate.java index 42eced08..35ea53b5 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/main/java/uk/gov/moj/cpp/prosecution/casefile/aggregate/CpsServeMaterialAggregate.java +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/main/java/uk/gov/moj/cpp/prosecution/casefile/aggregate/CpsServeMaterialAggregate.java @@ -11,8 +11,8 @@ import static java.util.UUID.fromString; import static java.util.UUID.randomUUID; import static java.util.stream.Stream.of; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.apache.commons.lang3.StringUtils.isNotEmpty; import static uk.gov.justice.domain.aggregate.matcher.EventSwitcher.match; import static uk.gov.justice.domain.aggregate.matcher.EventSwitcher.otherwiseDoNothing; diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/main/java/uk/gov/moj/cpp/prosecution/casefile/aggregate/ProsecutionCaseFile.java b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/main/java/uk/gov/moj/cpp/prosecution/casefile/aggregate/ProsecutionCaseFile.java index 11826e65..a1e14a7d 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/main/java/uk/gov/moj/cpp/prosecution/casefile/aggregate/ProsecutionCaseFile.java +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/main/java/uk/gov/moj/cpp/prosecution/casefile/aggregate/ProsecutionCaseFile.java @@ -17,7 +17,7 @@ import static java.util.stream.Collectors.toSet; import static java.util.stream.Stream.builder; import static java.util.stream.Stream.of; -import static javax.json.Json.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; import static org.apache.commons.collections.CollectionUtils.isEmpty; import static org.apache.commons.collections.CollectionUtils.isNotEmpty; import static org.apache.commons.collections.ListUtils.union; @@ -171,7 +171,7 @@ import java.util.stream.Stream; import java.util.stream.Stream.Builder; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonArray; import javax.json.JsonArrayBuilder; import javax.json.JsonObject; @@ -420,7 +420,7 @@ private void updateCaseCorrections(final JsonObject correctedFields, final JsonO final String id = errorField.containsKey("id") ? errorField.getString("id") : null; addJsonProperty(mutableJsonObject, value, fieldName, id); })); - try (JsonReader jsonReader = Json.createReader(new StringReader(mutableJsonObject.getAsJsonObject().toString()))) { + try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(mutableJsonObject.getAsJsonObject().toString()))) { final JsonObject updatedJsonObject = jsonReader.readObject(); this.caseDetails = jsonObjectToObjectConverter.convert(updatedJsonObject, CaseDetails.class); } @@ -446,7 +446,7 @@ private List updateDefendantCorrections(final JsonObject correctedFi } ); - try (JsonReader jsonReader = Json.createReader(new StringReader(mutableJsonObject.getAsJsonObject().toString()))) { + try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(mutableJsonObject.getAsJsonObject().toString()))) { return jsonReader.readObject(); } }).collect(toList()); @@ -1950,7 +1950,7 @@ public Stream updateOffenceCode(final String offenceCode, final OffenceR .stream() .map((d) -> { final JsonObjectBuilder defendantJsonObjectBuilder = createObjectBuilder(objectToJsonObjectConverter.convert(d)); - final JsonArrayBuilder jsonArrayBuilder = Json.createArrayBuilder(); + final JsonArrayBuilder jsonArrayBuilder = JsonObjects.createArrayBuilder(); d.getOffences().forEach((o) -> { final JsonObjectBuilder offenceJsonObjectBuilder = createObjectBuilder(objectToJsonObjectConverter.convert(o)); diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/test/java/uk/gov/moj/cps/prosecutioncasefile/ProsecutionCaseFileErrorCorrectionTest.java b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/test/java/uk/gov/moj/cps/prosecutioncasefile/ProsecutionCaseFileErrorCorrectionTest.java index feea3d5e..5dcee51d 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/test/java/uk/gov/moj/cps/prosecutioncasefile/ProsecutionCaseFileErrorCorrectionTest.java +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/test/java/uk/gov/moj/cps/prosecutioncasefile/ProsecutionCaseFileErrorCorrectionTest.java @@ -3,8 +3,8 @@ import static java.util.Collections.singletonList; import static java.util.Optional.ofNullable; import static java.util.UUID.randomUUID; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.IsInstanceOf.instanceOf; @@ -84,7 +84,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import org.junit.Rule; @@ -818,8 +818,8 @@ private JsonObject getCaseDetailsWithInvalidInitiationCodeAndCaseMarkerJsonObjec .add("initiationCode", INVALID_INITIATION_CODE) .add("caseMarkers", createArrayBuilder() - .add(Json.createObjectBuilder().add("markerTypeCode", VALID_CASE_MARKER_CODE).build()) - .add(Json.createObjectBuilder().add("markerTypeCode", INVALID_CASE_MARKER_CODE).build()) + .add(JsonObjects.createObjectBuilder().add("markerTypeCode", VALID_CASE_MARKER_CODE).build()) + .add(JsonObjects.createObjectBuilder().add("markerTypeCode", INVALID_CASE_MARKER_CODE).build()) .build()) .add("prosecutorCaseReference", PROSECUTOR_CASE_REFERENCE) .add("policeSystemId", POLICE_SYSTEM_ID) diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/test/java/uk/gov/moj/cps/prosecutioncasefile/ProsecutionCaseFileTest.java b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/test/java/uk/gov/moj/cps/prosecutioncasefile/ProsecutionCaseFileTest.java index 209b1668..a1879ad0 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/test/java/uk/gov/moj/cps/prosecutioncasefile/ProsecutionCaseFileTest.java +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/test/java/uk/gov/moj/cps/prosecutioncasefile/ProsecutionCaseFileTest.java @@ -1,2488 +1,2440 @@ -package uk.gov.moj.cps.prosecutioncasefile; - -import static com.google.common.collect.ImmutableList.of; -import static com.google.common.collect.Lists.newArrayList; -import static java.lang.Boolean.FALSE; -import static java.lang.Boolean.TRUE; -import static java.lang.String.format; -import static java.time.LocalDate.now; -import static java.time.LocalDate.of; -import static java.util.Arrays.asList; -import static java.util.Collections.emptyList; -import static java.util.Collections.singletonList; -import static java.util.Optional.ofNullable; -import static java.util.UUID.fromString; -import static java.util.UUID.randomUUID; -import static java.util.stream.Collectors.toList; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; -import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; -import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.contains; -import static org.hamcrest.Matchers.empty; -import static org.hamcrest.Matchers.greaterThan; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.core.IsInstanceOf.instanceOf; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.when; -import static org.mockito.quality.Strictness.LENIENT; -import static uk.gov.justice.core.courts.SummonsApprovedOutcome.summonsApprovedOutcome; -import static uk.gov.justice.core.courts.SummonsRejectedOutcome.summonsRejectedOutcome; -import static uk.gov.justice.cps.prosecutioncasefile.InitialHearing.initialHearing; -import static uk.gov.justice.services.test.utils.core.random.RandomGenerator.INTEGER; -import static uk.gov.justice.services.test.utils.core.random.RandomGenerator.STRING; -import static uk.gov.justice.services.test.utils.core.random.RandomGenerator.values; -import static uk.gov.moj.cpp.prosecution.casefile.domain.SummonsApplicationApprovedDetails.summonsApplicationApprovedDetails; -import static uk.gov.moj.cpp.prosecution.casefile.domain.SummonsApplicationRejectedDetails.summonsApplicationRejectedDetails; -import static uk.gov.moj.cpp.prosecution.casefile.event.CcCaseReceived.ccCaseReceived; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.BailStatusReferenceData.bailStatusReferenceData; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.CaseDetails.caseDetails; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.CaseMarker.caseMarker; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Channel.CIVIL; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Channel.CPPI; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Channel.MCC; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Channel.SPI; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.CustodyStatusReferenceData.custodyStatusReferenceData; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant.defendant; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.DefendantProblem.defendantProblem; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Individual.individual; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Offence.offence; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.OffenceReferenceData.offenceReferenceData; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.OrganisationUnitReferenceData.organisationUnitReferenceData; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.OrganisationUnitWithCourtroomReferenceData.organisationUnitWithCourtroomReferenceData; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.PersonalInformation.personalInformation; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Problem.problem; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Prosecution.prosecution; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.ProsecutorsReferenceData.prosecutorsReferenceData; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.ReferenceDataCountryNationality.referenceDataCountryNationality; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.SelfDefinedInformation.selfDefinedInformation; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.SummonsCodeReferenceData.summonsCodeReferenceData; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.APPLICATION_ID; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.APPLICATION_ID_2; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.ARREST_DATE; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.ARREST_SUMMON_NUMBER; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.BIRTH_DATE; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.CASE_ID; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.COURT_HEARING_LOCATION; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.CPS_ORGANISATION; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.CUSTODY_STATUS; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.DATE_OF_HEARING; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.DATE_OF_HEARING_IN_PAST; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.DEFENDANT_ID; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.EXTERNAL_ID; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.EXTERNAL_ID_2; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.EXTERNAL_ID_3; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.FIFTH_DEFENDANT_ID; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.FITH_SURNAME; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.FORENAME; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.FOURTH_DEFENDANT_ID; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.FOURTH_SURNAME; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.OFFENCE_CHARGE_DATE; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.OFFENCE_CODE; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.OFFENCE_COMMITTED_DATE; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.OFFENCE_NOT_IN_EFFECT_ON_OFFENCE_COMMITTED_DATE; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.OFFENCE_START_DATE; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.ORIGINATING_ORGANISATION; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.PROSECUTOR_CASE_REFERENCE; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.PROSECUTOR_COST; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.PROSECUTOR_DEFENDANT_REFERENCE_ONE; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.PROSECUTOR_DEFENDANT_REFERENCE_THREE; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.PROSECUTOR_DEFENDANT_REFERENCE_TWO; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.SECOND_BIRTH_DATE; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.SECOND_DEFENDANT_ID; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.SECOND_FORENAME; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.SECOND_SURNAME; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.SUMMONS_INITIATION_CODE; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.SURNAME; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.THIRD_BIRTH_DATE; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.THIRD_DEFENDANT_ID; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.THIRD_FORENAME; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.THIRD_SURNAME; -import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.URN; - -import com.google.common.collect.Lists; -import uk.gov.justice.core.courts.FeeStatus; -import uk.gov.justice.cps.prosecutioncasefile.InitialHearing; -import uk.gov.justice.services.common.converter.JsonObjectToObjectConverter; -import uk.gov.justice.services.common.converter.ObjectToJsonObjectConverter; -import uk.gov.justice.services.common.converter.jackson.ObjectMapperProducer; -import uk.gov.justice.services.test.utils.core.reflection.ReflectionUtil; -import uk.gov.moj.cpp.json.schemas.prosecutioncasefile.events.CaseReceivedWithDuplicateDefendants; -import uk.gov.moj.cpp.json.schemas.prosecutioncasefile.events.DefendantValidationPassed; -import uk.gov.moj.cpp.prosecution.casefile.aggregate.ProsecutionCaseFile; -import uk.gov.moj.cpp.prosecution.casefile.domain.*; -import uk.gov.moj.cpp.prosecution.casefile.event.*; -import uk.gov.moj.cpp.prosecution.casefile.event.CcCaseReceived; -import uk.gov.moj.cpp.prosecution.casefile.event.CcCaseReceivedWithWarnings; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.BailStatusReferenceData; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.CaseDetails; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.CaseMarker; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Channel; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.CivilFees; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.CpsPersonDefendantDetails; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.CustodyStatusReferenceData; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.DefendantProblem; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.DefendantSubject; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.DocumentTypeAccessReferenceData; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Material; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.MojOffences; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Offence; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.OrganisationUnitReferenceData; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Problem; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.ProblemValue; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Prosecution; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.ProsecutionCaseSubject; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Language; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Prosecutor; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.ProsecutorsReferenceData; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.SummonsCodeReferenceData; -import uk.gov.moj.cpp.prosecution.casefile.refdata.defendant.OffenceDataRefDataEnricher; -import uk.gov.moj.cpp.prosecution.casefile.refdata.proscase.InitiationTypesRefDataEnricher; -import uk.gov.moj.cpp.prosecution.casefile.service.ReferenceDataQueryService; -import uk.gov.moj.cpp.prosecution.casefile.validation.ProblemCode; -import uk.gov.moj.cps.prosecutioncasefile.common.AddMaterialCommonV2; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.*; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.CaseDetailsUpdated; - -import java.time.LocalDate; -import java.time.ZonedDateTime; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Optional; -import java.util.UUID; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import javax.json.JsonObject; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.collect.ImmutableList; -import org.apache.commons.collections.CollectionUtils; -import org.hamcrest.Matchers; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; -import org.mockito.junit.jupiter.MockitoExtension; -import org.mockito.junit.jupiter.MockitoSettings; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.Defendant; - -// TODO: remove LENIENT strictness -@MockitoSettings(strictness = LENIENT) -@ExtendWith(MockitoExtension.class) -public class ProsecutionCaseFileTest { - - private static final String VALID_CASE_MARKER_CODE = "AB"; - private static final String INVALID_CASE_MARKER_CODE = "BC"; - private final ObjectMapper objectMapper = new ObjectMapperProducer().objectMapper(); - - @Spy - private final JsonObjectToObjectConverter jsonObjectToObjectConverter = new JsonObjectToObjectConverter(objectMapper); - - @Spy - private final ObjectToJsonObjectConverter objectToJsonObjectConverter = new ObjectToJsonObjectConverter(objectMapper); - - @Mock - private ReferenceDataQueryService referenceDataQueryService; - - @Spy - @InjectMocks - private final InitiationTypesRefDataEnricher initiationTypesRefDataEnricher = new InitiationTypesRefDataEnricher(); - - @Spy - @InjectMocks - private final OffenceDataRefDataEnricher offenceDataRefDataEnricher = new OffenceDataRefDataEnricher(); - - private ProsecutionCaseFile prosecutionCaseFile; - - private UUID offenceId; - - private final boolean isCivil = true; - - public static Stream validChannels() { - return Stream.of( - Arguments.of(CPPI), - Arguments.of(MCC), - Arguments.of(SPI) - ); - } - - public static Stream nonSpiChannels() { - return Stream.of( - Arguments.of(CPPI), - Arguments.of(MCC) - ); - } - - public static Stream allowSummonsCodeWithSubsequentNonSjpInitiationCodes() { - return Stream.of( - Arguments.of("S","S"), - Arguments.of("S","Q"), - Arguments.of("S","C"), - Arguments.of("S","R"), - Arguments.of("S","O"), - Arguments.of("S","Z") - ); - } - - public static Stream allowWithSubsequentNonSjpInitiationCodes() { - return Stream.of( - Arguments.of("C","C"), - Arguments.of("C","Q"), - Arguments.of("C","R"), - Arguments.of("C","O"), - Arguments.of("Q","C"), - Arguments.of("Q","Q"), - Arguments.of("Q","R"), - Arguments.of("Q","O"), - Arguments.of("R","C"), - Arguments.of("R","Q"), - Arguments.of("R","R"), - Arguments.of("R","O") - ); - } - public static Stream rejectSubsequentSjpInitiationCodes() { - return Stream.of( - Arguments.of("C","J"), - Arguments.of("S","J"), - Arguments.of("Q","J"), - Arguments.of("R","J"), - Arguments.of("O","J"), - Arguments.of("Z","J") - ); - } - - public static Stream rejectSubsequentNonSjpInitiationCodes() { - return Stream.of( - Arguments.of("J","C"), - Arguments.of("J","Q"), - Arguments.of("J","R"), - Arguments.of("J","O"), - Arguments.of("J","Z") - ); - } - - public static Stream addDefendantAfterSummonsRejectedWithSubsequentNonSjpInitiationCodes() { - return Stream.of( - Arguments.of("C","S","Q"), - Arguments.of("Q","S","C") - ); - } - - public static Stream defendantsParkedForSummonsApprovalFollowingNonSjpInitiationCodes() { - return Stream.of( - Arguments.of("C","S"), - Arguments.of("Q","S"), - Arguments.of("R","S") - ); - } - - @BeforeEach - public void setup() { - when(referenceDataQueryService.isInitiationCodeValid(any())).thenReturn(true); - when(referenceDataQueryService.retrieveOrganisationUnits(COURT_HEARING_LOCATION)).thenReturn(buildOrganisationUnits()); - when(referenceDataQueryService.retrieveCustodyStatuses()).thenReturn(buildCustodyStatuses()); - when(referenceDataQueryService.retrieveBailStatuses()).thenReturn(buildBailStatuses()); - when(referenceDataQueryService.retrieveProsecutors(any(String.class))).thenReturn(getProsecutorsReferenceData()); - when(referenceDataQueryService.getProsecutorById(any(UUID.class))).thenReturn(getProsecutorsReferenceData()); - when(referenceDataQueryService.retrieveOrganisationUnitWithCourtroom(anyString())).thenReturn(ofNullable(organisationUnitWithCourtroomReferenceData().build())); - when(referenceDataQueryService.retrieveSummonsCodes()).thenReturn(buildSummonsCodeReferenceData()); - when(referenceDataQueryService.getCaseMarkerDetails()).thenReturn(buildCaseMarkers()); - when(referenceDataQueryService.getInitiationCodes()).thenReturn(of("J", "C", SUMMONS_INITIATION_CODE)); - when(referenceDataQueryService.retrieveOffenceData(any(Offence.class), any(String.class))).thenReturn(of(offenceReferenceData().withCjsOffenceCode(OFFENCE_CODE).build())); - when(referenceDataQueryService.retrieveOffencesByType("VP")).thenReturn(Collections.singletonList(MojOffences.mojOffences().withOffenceId(offenceId).withCjsOffenceCode(OFFENCE_CODE).build())); - - prosecutionCaseFile = new ProsecutionCaseFile(); - - offenceId = randomUUID(); - } - - @Test - public void shouldCreateCCCaseWithWarningsForCPPI() { - final LocalDate offenceCommittedDate = of(2018, 3, 2); - final LocalDate offenceChargeDate = of(2018, 11, 2); - - final Stream objectStream = prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate.minusMonths(4), PROSECUTOR_DEFENDANT_REFERENCE_TWO))), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(1)); - - final Optional firstMatchingEvent = getFirstMatching(eventList, CcCaseReceivedWithWarnings.class); - - assertThat(firstMatchingEvent.get().getDefendantWarnings().size(), is(1)); - assertThat(firstMatchingEvent.get().getDefendantWarnings().get(0).getProsecutorDefendantReference(), is(PROSECUTOR_DEFENDANT_REFERENCE_ONE)); - } - - @Test - public void shouldRaiseCaseValidationWarningsWithProsecutorDefendantReference() { - final LocalDate offenceCommittedDate = of(2018, 3, 2); - final LocalDate offenceChargeDate = of(2018, 11, 2); - - final Stream objectStream = prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendantWithAsnAndOffence(offenceCommittedDate, offenceChargeDate, - ARREST_SUMMON_NUMBER))), - new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(1)); - - final Optional firstMatchingEvent = getFirstMatching(eventList, CcCaseReceivedWithWarnings.class); - - assertThat(firstMatchingEvent.get().getDefendantWarnings().size(), is(1)); - assertThat(firstMatchingEvent.get().getDefendantWarnings().get(0).getProsecutorDefendantReference(), is(ARREST_SUMMON_NUMBER)); - } - - @Test - public void shouldRaiseCaseRejectedWWithProsecutorDefendantReference() { - final LocalDate offenceCommittedDate = of(2018, 3, 2); - final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( - of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), CPPI, "C"); - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(referenceData).build()); - final ProsecutionWithReferenceData subsequentReferenceData = getProsecutionWithReferenceData( - of(buildDefendantWithOffence(offenceCommittedDate, now().plusYears(1), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), CPPI, "C"); - - final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List eventList = objectStream.collect(toList()); - - final Optional ccProsecutionRejected = getFirstMatching(eventList, CcProsecutionRejected.class); - - assertThat(ccProsecutionRejected.isPresent(), is(true)); - assertThat(ccProsecutionRejected.get().getCaseErrors(), hasSize(1)); - assertThat(ccProsecutionRejected.get().getDefendantErrors().size(), is(1)); - assertThat(ccProsecutionRejected.get().getDefendantErrors().get(0).getProsecutorDefendantReference(), is(PROSECUTOR_DEFENDANT_REFERENCE_TWO)); - } - - @Test - public void shouldCreateCCCaseWithCivilFeesAndWarningsForCPPI() { - final LocalDate offenceCommittedDate = of(2018, 3, 2); - final LocalDate offenceChargeDate = of(2018, 11, 2); - - final Stream objectStream = prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceDataAndCivilFees(of(buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate.minusMonths(4), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), CPPI, false, Collections.emptyList()), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(1)); - - final Optional firstMatchingEvent = getFirstMatching(eventList, CcCaseReceivedWithWarnings.class); - - assertThat(firstMatchingEvent.get().getDefendantWarnings().size(), is(1)); - assertThat(firstMatchingEvent.get().getDefendantWarnings().get(0).getProsecutorDefendantReference(), is(PROSECUTOR_DEFENDANT_REFERENCE_ONE)); - } - - @ParameterizedTest - @MethodSource("provideParametersForCCCaseTest") - void shouldCreateCCCaseWithCivilFeesAndWarningsForCivil(String paymentRef, String actualFeeStatus, String expectedFeeStatus) { - final LocalDate offenceCommittedDate = of(2018, 3, 2); - final LocalDate offenceChargeDate = of(2018, 11, 2); - - List civilFees = new ArrayList<>(); - //if (!paymentRef.isEmpty()) { - civilFees.add(CivilFees.civilFees().withPaymentReference(paymentRef).withFeeStatus(actualFeeStatus).build()); - // } - - final ProsecutionWithReferenceData prosecutionWithReferenceDataAndCivilFees = getProsecutionWithReferenceDataAndCivilFees(of(buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate.minusMonths(4), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), CIVIL, true, civilFees); - - final Stream objectStream = prosecutionCaseFile.receiveCCCase(prosecutionWithReferenceDataAndCivilFees, new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(1)); - - final Optional firstMatchingEvent = getFirstMatching(eventList, CcCaseReceivedWithWarnings.class); - - assertThat(firstMatchingEvent.get().getDefendantWarnings().size(), is(1)); - assertThat(firstMatchingEvent.get().getDefendantWarnings().get(0).getProsecutorDefendantReference(), is(PROSECUTOR_DEFENDANT_REFERENCE_ONE)); - - assertCivilFees(firstMatchingEvent, expectedFeeStatus); - } - - private void assertCivilFees(Optional firstMatchingEvent, String expectedStatus) { - String initialFeeStatus = firstMatchingEvent.get().getProsecutionWithReferenceData().getProsecution().getCaseDetails().getFeeStatus(); - assertThat(initialFeeStatus, is(expectedStatus)); - } - - private static Stream provideParametersForCCCaseTest() { - return Stream.of( - Arguments.of(null, null, FeeStatus.OUTSTANDING.name()), - Arguments.of("paymentRef01", null, FeeStatus.SATISFIED.name()), - Arguments.of("paymentRef02", FeeStatus.NOT_APPLICABLE.name(), FeeStatus.NOT_APPLICABLE.name()) - ); - } - - @Test - public void shouldCreateCCCaseWithWarningsForCPPIWithMultipleDefendants() { - final LocalDate offenceCommittedDate = of(2018, 3, 2); - final LocalDate offenceChargeDate = of(2018, 11, 2); - - final Stream objectStream = prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate.plusMonths(8), PROSECUTOR_DEFENDANT_REFERENCE_TWO))), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(1)); - assertThat(eventList.get(0), is(instanceOf(CcCaseReceivedWithWarnings.class))); - - final CcCaseReceivedWithWarnings ccCaseReceivedWithWarnings = (CcCaseReceivedWithWarnings) eventList.get(0); - assertThat(ccCaseReceivedWithWarnings.getDefendantWarnings().size(), is(2)); - assertThat(ccCaseReceivedWithWarnings.getDefendantWarnings().get(0).getProsecutorDefendantReference(), is(PROSECUTOR_DEFENDANT_REFERENCE_ONE)); - assertThat(ccCaseReceivedWithWarnings.getDefendantWarnings().get(1).getProsecutorDefendantReference(), is(PROSECUTOR_DEFENDANT_REFERENCE_TWO)); - } - - @Test - public void shouldCreateCCCaseWithOffenceNotInEffectWarningForCPPI() { - - final String offenceStartDateRefData = of(2018, 5, 2).toString(); - final String offenceEndDateRefData = of(2018, 12, 2).toString(); - - final LocalDate offenceCommittedDate = of(2018, 3, 2); - final LocalDate offenceChargeDate = of(2018, 6, 2); - final ProsecutionWithReferenceData prosecutionWithReferenceData = getProsecutionWithReferenceData(of(buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendantWithOffence(offenceCommittedDate.plusMonths(4), offenceChargeDate.plusMonths(2), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), offenceStartDateRefData, offenceEndDateRefData); - - final Stream objectStream = prosecutionCaseFile.receiveCCCase(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(1)); - assertThat(eventList.get(0), is(instanceOf(CcCaseReceivedWithWarnings.class))); - - final CcCaseReceivedWithWarnings ccCaseReceivedWithWarnings = (CcCaseReceivedWithWarnings) eventList.get(0); - assertThat(ccCaseReceivedWithWarnings.getDefendantWarnings().size(), is(1)); - - final DefendantProblem defendantProblem = ccCaseReceivedWithWarnings.getDefendantWarnings().get(0); - assertThat(defendantProblem.getProsecutorDefendantReference(), is(PROSECUTOR_DEFENDANT_REFERENCE_ONE)); - assertThat(defendantProblem.getProblems().get(0).getCode(), is(OFFENCE_NOT_IN_EFFECT_ON_OFFENCE_COMMITTED_DATE)); - } - - @Test - public void shouldNotCreateCCCaseWithWarningsForSPI() { - final LocalDate offenceCommittedDate = of(2018, 3, 2); - final LocalDate offenceChargeDate = of(2018, 11, 2); - final Stream objectStream = prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - final List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(3)); - assertThat(eventList.get(0), is(instanceOf(DefendantValidationPassed.class))); - assertThat(eventList.get(1), is(instanceOf(DefendantValidationPassed.class))); - assertThat(eventList.get(2), is(instanceOf(CcCaseReceived.class))); - } - - @Test - public void shouldRaiseDefendantsParkedForSummonsApplicationApprovalEventForSubsequentMessages() { - final LocalDate offenceCommittedDate = of(2018, 3, 2); - final LocalDate offenceChargeDate = of(2018, 11, 2); - - final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( - of(buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, SUMMONS_INITIATION_CODE); - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(firstMessage).build()); - - final UUID externalIdForSecondMessage = randomUUID(); - final ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, randomAlphabetic(10))), SPI, SUMMONS_INITIATION_CODE, externalIdForSecondMessage); - final Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - final List eventList = objectStream.collect(toList()); - final Optional firstMatchingEvent = getFirstMatching(eventList, DefendantsParkedForSummonsApplicationApproval.class); - assertThat(eventList.size(), is(2)); - assertThat(firstMatchingEvent.isPresent(), is(true)); - assertThat(firstMatchingEvent.get().getProsecutionWithReferenceData().getExternalId(), is(externalIdForSecondMessage)); - } - - @Test - public void shouldUpdateCaseWhenNoAssociatedDefendant() { - prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), buildDefendant(" ", SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), "C"), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(" ").withOucode(ouCode).withSurname(SURNAME).build(); - - prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); - - final Stream objectStream = prosecutionCaseFile.caseUpdated(); - final List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(0)); - } - - @Test - public void shouldExpirePendingIDPCMaterial() { - prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(" ", SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(" ").withOucode(ouCode).withSurname(SURNAME).build(); - - prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); - final Stream objectStream = prosecutionCaseFile.expirePendingIdpcMaterial(materialId, ZonedDateTime.now()); - final List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(1)); - assertThat(eventList.get(0), is(instanceOf(IdpcMaterialRejected.class))); - - } - - - @Test - public void shouldRaiseIdpcDefendantMatchPendingEventMultipleSurnameMatchAndEmptyFirstNameAndValidDOB() { - - prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(" ", SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(" ").withOucode(ouCode).withSurname(SURNAME).build(); - - final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); - assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); - } - - @Test - public void shouldRaiseIdpcDefendantMatchPendingEventSurnameEmptyAndValidFirstnameAndDOB() { - prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, " ", BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), "C"), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(null).withOucode(ouCode).withSurname(" ").build(); - - final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); - assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); - } - - @Test - public void shouldRaiseIdpcDefendantMatchPendingEventMultipleSurnameMatchButMissingFirstNameAndDOB() { - prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(null).withOucode(ouCode).withSurname(SURNAME).build(); - final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); - assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); - } - - @Test - public void shouldRaiseIdpcDefendantMatchPendingEventMultipleSurnameMatchButMissingFirstName() { - prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(null).withOucode(ouCode).withSurname(SURNAME).build(); - final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); - assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); - } - - @Test - public void shouldRaiseIdpcDefendantMatchPendingEventWhenNoMatch() { - prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), "C"), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(null).withForenames(FORENAME + 2).withOucode(ouCode).withSurname(SURNAME + 2).build(); - final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); - assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); - } - - @Test - public void shouldRaiseIdpcDefendantMatchPendingEventWhenMultipleSurnameFirstDOBNameMatch() { - - prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(FORENAME).withOucode(ouCode).withSurname(SURNAME).build(); - - final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); - assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); - } - - @Test - public void shouldRaiseIdpcDefendantMatchPendingEventWhenMultipleSurnameFirstNameMatchButNoOtherMatch() { - prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(null).withForenames(FORENAME).withOucode(ouCode).withSurname(SURNAME).build(); - final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); - assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); - } - - @Test - public void shouldRaiseIdpcDefendantMatchPendingEventWhenMultipleSurnameMatchButNoOtherMatch() { - prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(SECOND_FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(null).withForenames(FORENAME + 1).withOucode(ouCode).withSurname(SURNAME).build(); - final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); - assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); - } - - @Test - public void shouldRaiseIdpcDefendantMatchPendingEventWhenOnlyDateOfBirthMatched() { - final ProsecutionWithReferenceData prosecutionWithReferenceData = getProsecutionWithReferenceData(MCC, false, null); - prosecutionCaseFile.receiveSjpProsecution(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(null).withForenames(FORENAME).withOucode(ouCode).withSurname(SURNAME + 1).build(); - final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); - assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); - } - - @Test - public void shouldRaiseIdpcDefendantMatchedEventWhenSurnameMatched() { - final ProsecutionWithReferenceData prosecutionWithReferenceData = getProsecutionWithReferenceData(MCC, false, null); - prosecutionCaseFile.receiveSjpProsecution(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(FORENAME).withOucode(ouCode).withSurname(SURNAME).build(); - final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(prosecutionWithReferenceData.getProsecution().getCaseDetails().getCaseId(), URN, materialId, materialType, defendant); - assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatched.class); - } - - @Test - public void shouldRaiseIdpcDefendantMatchedEventWhenSurnameMatchedWithLanguages() { - final ProsecutionWithReferenceData prosecutionWithReferenceData = getProsecutionWithReferenceData(MCC, false, Language.ENGLISH); - prosecutionCaseFile.receiveSjpProsecution(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(FORENAME).withOucode(ouCode).withSurname(SURNAME).build(); - final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(prosecutionWithReferenceData.getProsecution().getCaseDetails().getCaseId(), URN, materialId, materialType, defendant); - assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatched.class); - } - - - @Test - public void shouldRaiseIdpcDefendantMatchedEventWhenSurnameMatchWithWhiteSpaceCharacterAtStartAndEnd() { - final ProsecutionWithReferenceData prosecutionWithReferenceData = getProsecutionWithReferenceData(MCC, false, null); - prosecutionCaseFile.receiveSjpProsecution(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(FORENAME).withOucode(ouCode).withSurname(" " + SURNAME + " ").build(); - final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(prosecutionWithReferenceData.getProsecution().getCaseDetails().getCaseId(), URN, materialId, materialType, defendant); - assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatched.class); - } - - @Test - public void shouldRaiseIdpcDefendantMatchedEventWhenFornamesMatch() { - prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(SECOND_FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), "C"), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(SECOND_BIRTH_DATE.toString()).withForenames(FORENAME).withOucode(ouCode).withSurname(SURNAME).build(); - final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); - assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatched.class); - } - - @Test - public void shouldRaiseIdpcDefendantMatchedEventWhenFornamesMatchedWithWhiteSpaceCharacherAtStart() { - prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(SECOND_FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), "C"), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(SECOND_BIRTH_DATE.toString()).withForenames(" " + FORENAME).withOucode(ouCode).withSurname(SURNAME).build(); - final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); - assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatched.class); - } - - @Test - public void shouldRaiseIdpcDefendantMatchEventWhenDOBMatched() { - prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), buildDefendant(FORENAME, SURNAME, SECOND_BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), "C"), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(SECOND_BIRTH_DATE.toString()).withForenames(FORENAME).withOucode(ouCode).withSurname(SURNAME).build(); - final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); - assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatched.class); - } - - @Test - public void shouldRaiseIdpcMaterialReceivedEvent() { - final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(SECOND_BIRTH_DATE.toString()).withForenames(FORENAME).withOucode(ouCode).withSurname(SURNAME).build(); - final Stream objectStream = prosecutionCaseFile.populateIdpcMaterialReceived(CASE_ID, URN, materialId, materialType, defendant); - assertThatTheEventReturnedIsOfType(objectStream, IdpcMaterialReceived.class); - } - - @Test - public void shouldRaiseDefendantIdpcAlreadyExitsEventWhenDefendantIdpcIsPresent() { - prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(FORENAME, SURNAME, SECOND_BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), - referenceDataQueryService); - final UUID fileServiceId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); - final String materialType = "IDPC"; - final String ouCode = "B01AF00"; - final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(FORENAME).withOucode(ouCode).withSurname(SURNAME).build(); - final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, fileServiceId, materialType, defendant); - assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatched.class); - final Stream defendantIdpcAlreadyExistsStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, fileServiceId, materialType, defendant); - assertThatTheEventReturnedIsOfType(defendantIdpcAlreadyExistsStream, DefendantIdpcAlreadyExists.class); - } - - @Test - public void shouldRaiseBulkScanMaterialRejectedEvent() { - final ZonedDateTime now = ZonedDateTime.now(); - final UUID fileStoreId = randomUUID(); - prosecutionCaseFile.addMaterial(randomUUID(), "B01AF00", randomUUID().toString(), - new Material("SJPN", fileStoreId, "pdf", false), - referenceDataQueryService, false, null); - final Stream objectStream = prosecutionCaseFile.expireBulkScanPendingMaterial(fileStoreId, now); - assertThatTheEventReturnedIsOfType(objectStream, BulkscanMaterialRejected.class); - } - - @Test - public void shouldRaiseMaterialAddedEventsWhenCaseIsAccepted() { - ReflectionUtil.setField(prosecutionCaseFile, "prosecutionAccepted", TRUE); - final UUID fileStoreId = randomUUID(); - final Stream objectStream = prosecutionCaseFile.addMaterials(randomUUID(), "B01AF00", randomUUID().toString(), - singletonList(new Material("SJPN", fileStoreId, "pdf", false)), - referenceDataQueryService, false, null); - assertThatTheEventReturnedIsOfType(objectStream, MaterialAdded.class); - } - - @Test - public void shouldRaiseMaterialPendingEventsWhenCaseIsNotAccepted() { - ReflectionUtil.setField(prosecutionCaseFile, "prosecutionAccepted", FALSE); - final UUID fileStoreId = randomUUID(); - final Stream objectStream = prosecutionCaseFile.addMaterials(randomUUID(), "B01AF00", randomUUID().toString(), - asList(new Material("SJPN", fileStoreId, "pdf", false), new Material("PLEA", fileStoreId, "pdf", false)), - referenceDataQueryService, false, null); - assertThatTheEventReturnedIsOfType(objectStream, MaterialPending.class, 2); - } - - @Test - public void shouldRaiseBulkScanMaterialRejectedEventV2() { - final ZonedDateTime now = ZonedDateTime.now(); - final UUID fileStoreId = randomUUID(); - prosecutionCaseFile.addMaterialV2(AddMaterialCommonV2.addMaterialCommonV2() - .withMaterial(fileStoreId) - .build(), - referenceDataQueryService); - final Stream objectStream = prosecutionCaseFile.expireBulkScanPendingMaterial(fileStoreId, now); - assertThatTheEventReturnedIsOfType(objectStream, BulkscanMaterialRejected.class); - } - - @ParameterizedTest - @MethodSource("validChannels") - public void shouldRaiseDefendantsParkedForSummonsApplicationApprovalEventWhenInitiationCodeIsS(final Channel validChannel) { - final LocalDate offenceCommittedDate = of(2018, 3, 2); - final LocalDate offenceChargeDate = of(2018, 11, 2); - - final Stream objectStream = prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData( - of(buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(FORENAME, SURNAME, BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), validChannel, SUMMONS_INITIATION_CODE), newArrayList(), newArrayList(), referenceDataQueryService); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(SPI == validChannel ? 3 : 1)); - final Optional firstMatching = getFirstMatching(eventList, DefendantsParkedForSummonsApplicationApproval.class); - assertThat(firstMatching.get(), notNullValue()); - assertThat(firstMatching.get().getProsecutionWithReferenceData().getExternalId(), is(EXTERNAL_ID)); - } - - @Test - public void shouldRaiseProsecutionCaseUnSupportedEventWhenMultipleDefendantsProsecutionReceivedForSjpCaseViaSpiChannel() { - final ProsecutionWithReferenceData prosecutionWithReferenceData = getProsecutionWithReferenceData(SPI, true, Language.ENGLISH); - final Stream objectStream = prosecutionCaseFile.receiveSjpProsecution(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(1)); - assertThat(eventList.get(0), is(instanceOf(ProsecutionCaseUnsupported.class))); - final ProsecutionCaseUnsupported eventObject = (ProsecutionCaseUnsupported) eventList.get(0); - assertThat(eventObject.getErrorMessage(), containsString("Multiple Defendants Found")); - } - - @ParameterizedTest - @MethodSource("rejectSubsequentNonSjpInitiationCodes") - public void shouldRaiseProsecutionCaseUnsupportedEventWhenMultipleMessagesReceivedForSjpCaseViaSpiChannel(final String initialInitiationCode, final String newInitiationCode) { - - final ProsecutionWithReferenceData prosecutionWithReferenceData = getSjpProsecutionWithReferenceData(initialInitiationCode); - - final Stream objectStream = prosecutionCaseFile.receiveSjpProsecution(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List events = objectStream.collect(toList()); - assertThat(events.size(), is(1)); - - final ProsecutionWithReferenceData subsequentProsecutionWithReferenceData = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), newInitiationCode); - final Stream newObjectStream = prosecutionCaseFile.receiveCCCase(subsequentProsecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List eventList = newObjectStream.collect(toList()); - final ProsecutionCaseUnsupported eventObject = (ProsecutionCaseUnsupported) eventList.get(0); - - assertThat(eventList.size(), is(1)); - assertThat(eventObject.getErrorMessage(), containsString(format("Original Case with initiation code %s has received a case update with different case initiation code %s", initialInitiationCode, newInitiationCode))); - assertThat(eventObject.getUrn(), is(subsequentProsecutionWithReferenceData.getProsecution().getCaseDetails().getProsecutorCaseReference())); - assertThat(eventObject.getPoliceSystemId(), is(subsequentProsecutionWithReferenceData.getProsecution().getCaseDetails().getPoliceSystemId())); - assertThat(eventObject.getChannel(), is(SPI)); - assertThat(eventObject.getExternalId(), is(subsequentProsecutionWithReferenceData.getExternalId())); - - assertThat(eventList.size(), is(1)); - - } - @Test - public void shouldRaiseProsecutionCaseUnsupportedEventWhenDuplicateMessageReceivedForSjpWithNewDefendant() { - - final ProsecutionWithReferenceData prosecutionWithReferenceData = getSjpProsecutionWithReferenceData("J"); - - final Stream objectStream = prosecutionCaseFile.receiveSjpProsecution(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List events = objectStream.collect(toList()); - assertThat(events.size(), is(1)); - - final ProsecutionWithReferenceData subsequentProsecutionWithReferenceData = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "J"); - final Stream newObjectStream = prosecutionCaseFile.receiveSjpProsecution(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List eventList = newObjectStream.collect(toList()); - final ProsecutionCaseUnsupported eventObject = (ProsecutionCaseUnsupported) eventList.get(0); - - assertThat(eventList.size(), is(1)); - assertThat(eventObject.getErrorMessage(), containsString("Multiple Defendants Found")); - assertThat(eventObject.getPoliceSystemId(), is(subsequentProsecutionWithReferenceData.getProsecution().getCaseDetails().getPoliceSystemId())); - assertThat(eventObject.getChannel(), is(SPI)); - assertThat(eventObject.getExternalId(), is(subsequentProsecutionWithReferenceData.getExternalId())); - assertThat(eventList.size(), is(1)); - } - - public void shouldNotRaiseProsecutionCaseUnsupportedEventWhenMultipleMessagesReceivedForSjpCaseViaSpiChannel(final String initialInitiationCode, final String newInitiationCode) { - - final ProsecutionWithReferenceData prosecutionWithReferenceData = getSjpProsecutionWithReferenceData(initialInitiationCode); - - final Stream objectStream = prosecutionCaseFile.receiveSjpProsecution(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List events = objectStream.collect(toList()); - assertThat(events.size(), is(1)); - - final ProsecutionWithReferenceData subsequentProsecutionWithReferenceData = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), newInitiationCode); - final Stream newObjectStream = prosecutionCaseFile.receiveCCCase(subsequentProsecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List eventList = newObjectStream.collect(toList()); - final ProsecutionCaseUnsupported eventObject = (ProsecutionCaseUnsupported) eventList.get(0); - - assertThat(eventList.size(), is(1)); - assertThat(eventObject.getErrorMessage(), containsString(format("Original Case with initiation code %s has received a case update with different case initiation code %s", initialInitiationCode, newInitiationCode))); - assertThat(eventObject.getUrn(), is(subsequentProsecutionWithReferenceData.getProsecution().getCaseDetails().getProsecutorCaseReference())); - assertThat(eventObject.getPoliceSystemId(), is(subsequentProsecutionWithReferenceData.getProsecution().getCaseDetails().getPoliceSystemId())); - assertThat(eventObject.getChannel(), is(SPI)); - assertThat(eventObject.getExternalId(), is(subsequentProsecutionWithReferenceData.getExternalId())); - - assertThat(eventList.size(), is(1)); - - } - - @ParameterizedTest - @MethodSource("rejectSubsequentSjpInitiationCodes") - public void shouldRaiseProsecutionCaseUnsupportedWhenSubsequentSJPMessageWithDifferentInitiationCodeReceived(final String initialInitiationCode, final String newInitiationCode) { - final ProsecutionWithReferenceData initialProsecutionReferenceData = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, initialInitiationCode); - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(initialProsecutionReferenceData).build()); - - final ProsecutionWithReferenceData subsequentProsecutionWithReferenceData = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), newInitiationCode); - final Stream objectStream = prosecutionCaseFile.receiveSjpProsecution(subsequentProsecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List eventList = objectStream.collect(toList()); - final ProsecutionCaseUnsupported eventObject = (ProsecutionCaseUnsupported) eventList.get(0); - - assertThat(eventList.size(), is(1)); - assertThat(eventObject.getErrorMessage(), containsString("Multiple Defendants Found")); - assertThat(eventObject.getUrn(), is(subsequentProsecutionWithReferenceData.getProsecution().getCaseDetails().getProsecutorCaseReference())); - assertThat(eventObject.getPoliceSystemId(), is(subsequentProsecutionWithReferenceData.getProsecution().getCaseDetails().getPoliceSystemId())); - assertThat(eventObject.getChannel(), is(SPI)); - assertThat(eventObject.getExternalId(), is(subsequentProsecutionWithReferenceData.getExternalId())); - - assertThat(eventList.size(), is(1)); - } - - @ParameterizedTest - @MethodSource("allowSummonsCodeWithSubsequentNonSjpInitiationCodes") - public void shouldNotRaiseProsecutionCaseUnsupportedWhenSubsequentSPiMessageISDifferentToSummonsInitiationCode(final String initialInitiationCode - , String newInitiationCode) { - final ProsecutionWithReferenceData initialProsecutionReferenceData = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, initialInitiationCode); - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(initialProsecutionReferenceData).build()); - - final ProsecutionWithReferenceData subsequentProsecutionWithReferenceData = getProsecutionWithReferenceData( - of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), newInitiationCode); - final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentProsecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(2)); - } - - @ParameterizedTest - @MethodSource("allowWithSubsequentNonSjpInitiationCodes") - public void shouldAddDefendantWhenSubsequentSPiMessageIsDifferentToInitialInitiationCode(final String initialInitiationCode - , String newInitiationCode) { - - final ProsecutionWithReferenceData initialProsecutionReferenceData = getProsecutionWithReferenceData( - of(buildDefendantWithInitiationCode(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, initialInitiationCode)), SPI, initialInitiationCode); - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(initialProsecutionReferenceData).build()); - - final ProsecutionWithReferenceData subsequentProsecutionWithReferenceData = getProsecutionWithReferenceData( - of(buildDefendantWithInitiationCode(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO, newInitiationCode)), newInitiationCode); - final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentProsecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(2)); - ProsecutionDefendantsAdded prosecutionDefendantsAdded = (ProsecutionDefendantsAdded) eventList.get(1); - assertThat(prosecutionDefendantsAdded.getDefendants().size(), is(1)); - assertThat(prosecutionDefendantsAdded.getDefendants().get(0).getInitiationCode(), is(newInitiationCode)); - } - @ParameterizedTest - @MethodSource("defendantsParkedForSummonsApprovalFollowingNonSjpInitiationCodes") - public void shouldParkDefendantsForSummonsApprovalWhenSubsequentSPiMessageIsSummonsInitiationCode(final String initialInitiationCode - , String newInitiationCode) { - // given - final ProsecutionWithReferenceData initialProsecutionReferenceData = getProsecutionWithReferenceData( - of(buildDefendantWithInitiationCode(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, initialInitiationCode)), SPI, initialInitiationCode); - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(initialProsecutionReferenceData).build()); - - final ProsecutionWithReferenceData subsequentProsecutionWithReferenceData = getProsecutionWithReferenceData( - of(buildDefendantWithInitiationCode(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO, newInitiationCode)), newInitiationCode); - - //when - final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentProsecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List eventList = objectStream.collect(toList()); - - //then - assertThat(eventList.size(), is(2)); - DefendantsParkedForSummonsApplicationApproval defendantsParkedForSummonsApplicationApproval = (DefendantsParkedForSummonsApplicationApproval) eventList.get(1); - assertThat(defendantsParkedForSummonsApplicationApproval.getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getInitiationCode(), is("S")); - } - - @ParameterizedTest - @MethodSource("addDefendantAfterSummonsRejectedWithSubsequentNonSjpInitiationCodes") - public void shouldAddDefendantWhenSummonsApplicationWithEarlierApplicationWasRejectedForSameCaseReceivedWithDifferentInitiationCodeViaSpiChannel( - final String initialInitiationCode, final String summonsInitiationCode, final String newInitiationCode) { - - // c -s- sr- q // q - s sr - c - final ProsecutionWithReferenceData initialProsecutionReferenceData = getProsecutionWithReferenceData( - of(buildDefendantWithInitiationCode(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, initialInitiationCode)), SPI, initialInitiationCode); - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(initialProsecutionReferenceData).build()); - - final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( - of(buildDefendantWithInitiationCode(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO, summonsInitiationCode)), SPI, summonsInitiationCode); - - final Stream objectStreamNew = prosecutionCaseFile.receiveCCCase(referenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List eventList1 = objectStreamNew.collect(toList()); - assertThat(eventList1.size(), is(2)); - DefendantsParkedForSummonsApplicationApproval defendantsParkedForSummonsApplicationApproval = (DefendantsParkedForSummonsApplicationApproval) eventList1.get(1); - assertThat(defendantsParkedForSummonsApplicationApproval.getProsecutionWithReferenceData().getProsecution().getDefendants().size(), is(1)); - - prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, referenceData, emptyList())); - prosecutionCaseFile.apply(new SummonsApplicationRejected(APPLICATION_ID, CASE_ID, newArrayList(fromString(SECOND_DEFENDANT_ID)), summonsRejectedOutcome().withReasons(ImmutableList.of("Rejection Reason")).build())); - - final String updatedSurname = STRING.next(); - final ProsecutionWithReferenceData subsequentReferenceDataForSameDefendant = getProsecutionWithReferenceData( - of(buildDefendantWithInitiationCode(FORENAME, updatedSurname, BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO, newInitiationCode)), SPI, newInitiationCode, EXTERNAL_ID_2); - final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceDataForSameDefendant, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(2)); - ProsecutionDefendantsAdded prosecutionDefendantsAdded = (ProsecutionDefendantsAdded) eventList.get(1); - assertThat(prosecutionDefendantsAdded.getDefendants().size(), is(1)); - assertThat(prosecutionDefendantsAdded.getDefendants().get(0).getInitiationCode(), is(newInitiationCode)); - } - @Test - public void shouldAddNewDefendantWhenSummonsApplicationIsApprovedToExistingCaseWithDifferentInitiationCodeViaSpiChannel() { - // Given first SummonsMessage with 2 defendants - final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, SUMMONS_INITIATION_CODE); - - final Stream objectStream1 = prosecutionCaseFile.receiveCCCase(firstMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List eventList1 = objectStream1.collect(toList()); - assertThat(eventList1, hasSize(3)); - DefendantsParkedForSummonsApplicationApproval defendantsParkedForSummonsApplicationApproval = (DefendantsParkedForSummonsApplicationApproval) eventList1.get(2); - assertThat(defendantsParkedForSummonsApplicationApproval.getProsecutionWithReferenceData().getProsecution().getDefendants().size(), is(2)); - // approve the application - final SummonsApplicationApprovedDetails secondSummonsApplicationApprovedDetails = getSummonsApplicationApprovedDetails(defendantsParkedForSummonsApplicationApproval.getApplicationId()); - final Stream objectStream = prosecutionCaseFile.approveCaseDefendants(secondSummonsApplicationApprovedDetails, of(), of(), isCivil); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList, hasSize(1)); - - - // add a defendant - final ProsecutionWithReferenceData sameMessageWithDifferentInitiationCode = getProsecutionWithReferenceData( - of(buildDefendantWithInitiationCode(THIRD_FORENAME, THIRD_SURNAME, THIRD_BIRTH_DATE, THIRD_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_THREE, "C")), SPI, "C"); - - final Stream objectStream2 = prosecutionCaseFile.receiveCCCase(sameMessageWithDifferentInitiationCode, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List eventList2 = objectStream2.collect(toList()); - assertThat(eventList2, hasSize(2)); - assertThat(eventList2.get(0), is(instanceOf(DefendantValidationPassed.class))); - assertThat(eventList2.get(1), is(instanceOf(ProsecutionDefendantsAdded.class))); - } - - @Test - public void shouldRaiseNewCCCaseForSameDefendantWhenEarlierApplicationWasRejectedForSameCaseReceivedViaSpiChannel() { - final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( - of(buildDefendantWithInitiationCode(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "S")), SPI, "S"); - prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, referenceData, emptyList())); - prosecutionCaseFile.apply(new SummonsApplicationRejected(APPLICATION_ID, CASE_ID, newArrayList(fromString(DEFENDANT_ID)), summonsRejectedOutcome().withReasons(ImmutableList.of("Rejection Reason")).build())); - - final String updatedSurname = STRING.next(); - final ProsecutionWithReferenceData subsequentReferenceDataForSameDefendant = getProsecutionWithReferenceData( - of(buildDefendantWithInitiationCode(FORENAME, updatedSurname, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "Q")), SPI, "Q", EXTERNAL_ID_2); - final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceDataForSameDefendant, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList, hasSize(2)); - final Optional firstMatching = getFirstMatching(eventList, CcCaseReceived.class); - assertThat(firstMatching.isPresent(), is(true)); - assertThat(firstMatching.get().getProsecutionWithReferenceData().getExternalId(), is(EXTERNAL_ID_2)); - assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getInitiationCode(), is("Q")); - assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(1)); - assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(DEFENDANT_ID)); - assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getIndividual().getPersonalInformation().getFirstName(), is(FORENAME)); - assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getIndividual().getPersonalInformation().getLastName(), is(updatedSurname)); - } - - - @Test - public void shouldAddSpiChannelDefendantsWhenSubsequentMessagesReceivedWithKnownAndUniqueDifferentDefendants() { - final ProsecutionWithReferenceData initialCaseMessage = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, "C"); - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(initialCaseMessage).build()); - final String thirdDefendantId = randomUUID().toString(); - final ProsecutionWithReferenceData subsequentCaseMessage = getProsecutionWithReferenceData( - of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO), - buildDefendant(FORENAME, SURNAME, BIRTH_DATE, thirdDefendantId, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, "C"); - final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentCaseMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List eventList = objectStream.collect(toList()); - - final Optional newDefendantMatchingEvent = getFirstMatching(eventList, ProsecutionDefendantsAdded.class); - assertThat(newDefendantMatchingEvent.isPresent(), is(true)); - assertThat(newDefendantMatchingEvent.get(), notNullValue()); - assertThat(newDefendantMatchingEvent.get().getDefendants().get(0).getId(), is(SECOND_DEFENDANT_ID)); - - final Optional duplicateDefendantMatchingEvent = getFirstMatching(eventList, CaseReceivedWithDuplicateDefendants.class); - assertThat(duplicateDefendantMatchingEvent.isPresent(), is(true)); - assertThat(duplicateDefendantMatchingEvent.get(), notNullValue()); - assertThat(duplicateDefendantMatchingEvent.get().getDefendants().get(0).getId(), is(thirdDefendantId)); - } - - @Test - public void shouldRaiseCaseReceivedWithDuplicateDefendantsWhenSubsequentSPIMessagesReceivedWithKnownDefendants() { - final ProsecutionWithReferenceData initialReferenceData = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, "C"); - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(initialReferenceData).build()); - final ProsecutionWithReferenceData subsequentReferenceData = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, "C"); - final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List eventList = objectStream.collect(toList()); - assertThat(eventList.get(0), is(instanceOf(CaseReceivedWithDuplicateDefendants.class))); - } - - @Test - public void shouldNotDeduplicateDefendantsWhenCPPIMessageReceivedWithDuplicateDefendants() { - final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE) - ), CPPI, "C"); - final Stream objectStream = prosecutionCaseFile.receiveCCCase(referenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List eventList = objectStream.collect(toList()); - assertThat(eventList.get(0), is(instanceOf(CcCaseReceived.class))); - - final CcCaseReceived ccCaseReceived = (CcCaseReceived) eventList.get(0); - final List defendants = ccCaseReceived.getProsecutionWithReferenceData().getProsecution().getDefendants(); - assertThat(defendants.size(), is(2)); - assertThat(defendants.get(0).getId(), is(DEFENDANT_ID)); - assertThat(defendants.get(1).getId(), is(SECOND_DEFENDANT_ID)); - } - - @Test - public void shouldRaiseDefendantValidationFailedWhenSubsequentSPIMessagesReceivedWithInvalidDefendants() { - final LocalDate offenceCommittedDate = of(2018, 3, 2); - final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( - of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, "C"); - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(referenceData).build()); - final ProsecutionWithReferenceData subsequentReferenceData = getProsecutionWithReferenceData( - of(buildDefendantWithOffence(offenceCommittedDate, now().plusYears(1), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, "C"); - final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List eventList = objectStream.collect(toList()); - assertThat(eventList.get(0), is(instanceOf(DefendantValidationFailed.class))); - } - - @MethodSource("nonSpiChannels") - @ParameterizedTest - public void shouldRaiseCaseRejectedWhenFirstCPPIMessagesReceivedWithInvalidDefendants(final Channel channel) { - final LocalDate offenceCommittedDate = of(2018, 3, 2); - final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( - of(buildDefendantWithOffence(offenceCommittedDate, now().plusYears(1), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), channel, "C"); - final Stream objectStream = prosecutionCaseFile.receiveCCCase(firstMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - final List eventList = objectStream.collect(toList()); - final Optional eventObject = getFirstMatching(eventList, CcProsecutionRejected.class); - - assertThat(eventObject.isPresent(), is(true)); - assertThat(eventObject.get().getCaseErrors(), hasSize(0)); - assertThat(eventObject.get().getDefendantErrors(), hasSize(greaterThan(0))); - } - - @Test - public void shouldRaiseCaseRejectedWhenSubsequentCPPIMessagesReceived() { - final LocalDate offenceCommittedDate = of(2018, 3, 2); - final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( - of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), CPPI, "C"); - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(referenceData).build()); - final ProsecutionWithReferenceData subsequentReferenceData = getProsecutionWithReferenceData( - of(buildDefendantWithOffence(offenceCommittedDate, now().plusYears(1), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), CPPI, "C"); - final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - final List eventList = objectStream.collect(toList()); - - final Optional event = getFirstMatching(eventList, CcProsecutionRejected.class); - - assertThat(event.isPresent(), is(true)); - assertThat(event.get().getCaseErrors(), hasSize(1)); - assertThat(event.get().getDefendantErrors(), hasSize(greaterThan(0))); - } - - @Test - public void shouldRaiseCaseValidationFailedForFirstSPIMessageFoundWithErrors() { - final LocalDate offenceCommittedDate = of(2018, 3, 2); - final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( - of(buildDefendantWithOffence(offenceCommittedDate, now().plusYears(1), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, "C"); - final Stream objectStream = prosecutionCaseFile.receiveCCCase(firstMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - final List eventList = objectStream.collect(toList()); - final Optional caseValidationFailedEvent = getFirstMatching(eventList, CaseValidationFailed.class); - final Optional defendantValidationFailedEvent = getFirstMatching(eventList, DefendantValidationFailed.class); - assertThat(caseValidationFailedEvent.isPresent(), is(true)); - assertThat(defendantValidationFailedEvent.isPresent(), is(true)); - } - - @Test - public void shouldRaiseDefendantsReceivedNotAddedForSubsequentMessageWhenInitialSPIMessageFoundWithErrors() { - final LocalDate offenceCommittedDate = of(2018, 3, 2); - final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( - of(buildDefendantWithOffence(offenceCommittedDate, now().plusYears(1), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, "C"); - prosecutionCaseFile.apply(new CaseValidationFailed(referenceData.getProsecution(), ImmutableList.of(new Problem("CODE", new ArrayList<>())), randomUUID(), getInitialHearing())); - final ProsecutionWithReferenceData subsequentReferenceData = getProsecutionWithReferenceData( - of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, "C"); - - final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList.get(0), is(instanceOf(DefendantValidationPassed.class))); - assertThat(eventList.get(1), is(instanceOf(DefendantsReceivedNotAdded.class))); - } - - @Test - public void shouldCreateSingleSummonsApplicationWithAllParkedDefendantsOnceInitialCaseErrorsAreClearedForSPIChannel() { - final ProsecutionWithReferenceData firstMessage = getProsecutionWithMixedValidAndInvalidCaseMarkerRefData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE))); - - prosecutionCaseFile.apply(new CaseValidationFailed(firstMessage.getProsecution(), of(new Problem("CASE_MARKER_IS_INVALID", of( - new ProblemValue("0", "caseMarkers", VALID_CASE_MARKER_CODE), new ProblemValue("1", "caseMarkers", INVALID_CASE_MARKER_CODE)))), EXTERNAL_ID, getInitialHearing())); - - final ProsecutionWithReferenceData secondMessage = getProsecutionWithValidCaseMarker( - of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO))); - - final Stream receiveCCCaseObjectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - List eventList = receiveCCCaseObjectStream.collect(toList()); - assertThat(eventList, hasSize(2)); - assertThat(eventList.get(0), is(instanceOf(DefendantValidationPassed.class))); - assertThat(eventList.get(1), is(instanceOf(DefendantsReceivedNotAdded.class))); - - // correct error for first message - final Stream receiveErrorCorrectionsObjectStream = prosecutionCaseFile.receiveErrorCorrections(getCaseMarkerCorrectedField(), objectToJsonObjectConverter, - jsonObjectToObjectConverter, of(initiationTypesRefDataEnricher), new ArrayList<>(), referenceDataQueryService); - - eventList = receiveErrorCorrectionsObjectStream.collect(toList()); - assertThat(eventList, hasSize(5)); - assertThat(eventList.get(0), is(instanceOf(DefendantValidationPassed.class))); - assertThat(((DefendantValidationPassed) eventList.get(0)).getDefendantId().toString(), is(DEFENDANT_ID)); - assertThat(eventList.get(1), is(instanceOf(DefendantValidationPassed.class))); - assertThat(((DefendantValidationPassed) eventList.get(1)).getDefendantId().toString(), is(SECOND_DEFENDANT_ID)); - assertThat(eventList.get(2), is(instanceOf(DefendantsParkedForSummonsApplicationApproval.class))); - assertThat(((DefendantsParkedForSummonsApplicationApproval) eventList.get(2)).getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(2)); - assertThat(((DefendantsParkedForSummonsApplicationApproval) eventList.get(2)).getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(DEFENDANT_ID)); - assertThat(((DefendantsParkedForSummonsApplicationApproval) eventList.get(2)).getProsecutionWithReferenceData().getProsecution().getDefendants().get(1).getId(), is(SECOND_DEFENDANT_ID)); - } - - @Test - public void shouldCreateSummonsApplicationForValidDefendantsOnlyWhenCaseHasAlreadyBeenCreated() { - final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); - prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, firstMessage, emptyList())); - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(firstMessage).build()); - - final ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SECOND_SURNAME, BIRTH_DATE, SECOND_DEFENDANT_ID, randomAlphabetic(10)), - buildDefendant(FORENAME, THIRD_SURNAME, BIRTH_DATE, THIRD_DEFENDANT_ID, randomAlphabetic(10)), - buildDefendant(FORENAME, FOURTH_SURNAME, BIRTH_DATE, FOURTH_DEFENDANT_ID, randomAlphabetic(10), DATE_OF_HEARING_IN_PAST, Language.ENGLISH) - ), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID_2); - final Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(4)); - Optional firstMatchingEvent = getFirstMatching(eventList, DefendantsParkedForSummonsApplicationApproval.class); - assertThat(firstMatchingEvent.isPresent(), is(true)); - assertThat(firstMatchingEvent.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(2)); - assertThat(firstMatchingEvent.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(SECOND_DEFENDANT_ID)); - assertThat(firstMatchingEvent.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(1).getId(), is(THIRD_DEFENDANT_ID)); - - final Stream receiveErrorCorrectionsObjectStream = prosecutionCaseFile.receiveErrorCorrections(getDefendantDateOfHearingCorrectedField(), objectToJsonObjectConverter, - jsonObjectToObjectConverter, of(initiationTypesRefDataEnricher), of(offenceDataRefDataEnricher), referenceDataQueryService); - - eventList = receiveErrorCorrectionsObjectStream.collect(toList()); - assertThat(eventList.size(), is(4)); - firstMatchingEvent = getFirstMatching(eventList, DefendantsParkedForSummonsApplicationApproval.class); - assertThat(firstMatchingEvent.isPresent(), is(true)); - assertThat(firstMatchingEvent.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(1)); - assertThat(firstMatchingEvent.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(FOURTH_DEFENDANT_ID)); - } - - @Test - public void shouldCreateSjpCaseOnceChargeDateValidationErrorIsResolved(){ - uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant defendant = - buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE); - final ProsecutionWithReferenceData firstMessage = getProsecutionWithValidCaseMarker(Lists.newArrayList(defendant)); - final Problem problem = new Problem(ProblemCode.CHARGE_DATE_IN_FUTURE.name(), - of(new ProblemValue("0", "offence_chargeDate", "Charge date not provided"))); - final DefendantProblemsVO defendantProblemsVO = new DefendantProblemsVO(defendant,asList(problem)); - prosecutionCaseFile.apply(new SjpProsecutionRejected(asList(problem), firstMessage.getExternalId(), firstMessage.getProsecution())); - prosecutionCaseFile.apply(new SjpValidationFailed(firstMessage.getProsecution(), of(problem), asList(defendantProblemsVO), - firstMessage.getReferenceDataVO(), - getInitialHearing())); - - final Stream receiveErrorCorrectionsObjectStream = prosecutionCaseFile.receiveErrorCorrections(offenceChargeDateCorrectlySet(), objectToJsonObjectConverter, - jsonObjectToObjectConverter, of(initiationTypesRefDataEnricher), of(offenceDataRefDataEnricher), referenceDataQueryService); - List eventList = receiveErrorCorrectionsObjectStream.collect(toList()); - assertThat(eventList.size(), is(3)); - Optional sjpProsecutionReceived = getFirstMatching(eventList, SjpProsecutionReceived.class); - assertThat(sjpProsecutionReceived.isPresent(), is(true)); - assertThat(sjpProsecutionReceived.get().getProsecution().getDefendants().get(0).getPostingDate().toString(), is("2100-07-02")); - } - - @Test - public void shouldCreateSummonsApplicationForSubsequentMessagesWithValidDefendantsWhenEarlierDefendantsHaveBeenParked() { - final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, - PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, SUMMONS_INITIATION_CODE); - - prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, firstMessage, emptyList())); - - final ProsecutionWithReferenceData secondMessageWithValidAndInvalidDefendants = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, THIRD_SURNAME, BIRTH_DATE, THIRD_DEFENDANT_ID, randomAlphabetic(10)), - buildDefendant(FORENAME, FOURTH_SURNAME, BIRTH_DATE, FOURTH_DEFENDANT_ID, randomAlphabetic(10), DATE_OF_HEARING_IN_PAST, null) - ), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID_2); - Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessageWithValidAndInvalidDefendants, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(3)); - Optional firstMatchingForParkedDefendant = getFirstMatching(eventList, DefendantsParkedForSummonsApplicationApproval.class); - assertThat(firstMatchingForParkedDefendant.isPresent(), is(true)); - assertThat(firstMatchingForParkedDefendant.get().getApplicationId(), is(not(APPLICATION_ID))); - assertThat(firstMatchingForParkedDefendant.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(1)); - assertThat(firstMatchingForParkedDefendant.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(THIRD_DEFENDANT_ID)); - - final Optional firstMatchingForValidationFailed = getFirstMatching(eventList, DefendantValidationFailed.class); - assertThat(firstMatchingForValidationFailed.isPresent(), is(true)); - assertThat(firstMatchingForValidationFailed.get().getDefendant().getId(), is(FOURTH_DEFENDANT_ID)); - - final ProsecutionWithReferenceData thirdMessageWithValidDefendant = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, FITH_SURNAME, BIRTH_DATE, FIFTH_DEFENDANT_ID, randomAlphabetic(10))), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID_3); - objectStream = prosecutionCaseFile.receiveCCCase(thirdMessageWithValidDefendant, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(2)); - firstMatchingForParkedDefendant = getFirstMatching(eventList, DefendantsParkedForSummonsApplicationApproval.class); - assertThat(firstMatchingForParkedDefendant.isPresent(), is(true)); - assertThat(firstMatchingForParkedDefendant.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(1)); - assertThat(firstMatchingForParkedDefendant.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(FIFTH_DEFENDANT_ID)); - } - - @Test - public void shouldRaiseSummonsApplicationRejectedEventAndRemoveOnlyRejectedDefendants() { - final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, "S"); - prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, referenceData, emptyList())); - final ProsecutionWithReferenceData subsequentReferenceData = getProsecutionWithReferenceData( - of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, "S"); - - prosecutionCaseFile.receiveCCCase(subsequentReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - final SummonsApplicationRejectedDetails summonsApplicationRejectedDetails = summonsApplicationRejectedDetails() - .withApplicationId(APPLICATION_ID) - .withCaseId(CASE_ID) - .withSummonsRejectedOutcome(summonsRejectedOutcome() - .withReasons(ImmutableList.of("Rejection Reason")) - .build()) - .build(); - final Stream objectStream = prosecutionCaseFile.rejectCaseDefendants(summonsApplicationRejectedDetails); - - final List eventList = objectStream.collect(toList()); - final uk.gov.moj.cps.prosecutioncasefile.domain.event.SummonsApplicationRejected applicationRejected = (uk.gov.moj.cps.prosecutioncasefile.domain.event.SummonsApplicationRejected) eventList.get(0); - assertThat(applicationRejected, is(instanceOf(uk.gov.moj.cps.prosecutioncasefile.domain.event.SummonsApplicationRejected.class))); - assertThat(applicationRejected.getDefendantIds(), contains(fromString(DEFENDANT_ID))); - assertThat(applicationRejected.getDefendantIds(), not(contains(fromString(SECOND_DEFENDANT_ID)))); - assertThat(applicationRejected.getSummonsRejectedOutcome().getReasons(), contains("Rejection Reason")); - assertThat(prosecutionCaseFile.isProsecutionReceived(), is(false)); - assertThat(prosecutionCaseFile.getDefendants(), hasSize(1)); - assertThat(prosecutionCaseFile.getDefendants().get(0).getId(), is(SECOND_DEFENDANT_ID)); - } - - @Test - public void shouldRaiseNewSummonsApplicationForSameDefendantWhenEarlierApplicationWasRejectedForSameCaseReceivedViaSpiChannel() { - final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, "S"); - prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, referenceData, emptyList())); - prosecutionCaseFile.apply(new SummonsApplicationRejected(APPLICATION_ID, CASE_ID, newArrayList(fromString(DEFENDANT_ID), fromString(SECOND_DEFENDANT_ID)), summonsRejectedOutcome().withReasons(ImmutableList.of("Rejection Reason")).build())); - - final String updatedSurname = STRING.next(); - final ProsecutionWithReferenceData subsequentReferenceDataForSameDefendant = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, updatedSurname, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, "S", EXTERNAL_ID_2); - final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceDataForSameDefendant, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList, hasSize(2)); - final Optional firstMatching = getFirstMatching(eventList, DefendantsParkedForSummonsApplicationApproval.class); - assertThat(firstMatching.isPresent(), is(true)); - assertThat(firstMatching.get().getProsecutionWithReferenceData().getExternalId(), is(EXTERNAL_ID_2)); - assertThat(firstMatching.get().getApplicationId(), is(not(APPLICATION_ID))); - assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(1)); - assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(DEFENDANT_ID)); - assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getIndividual().getPersonalInformation().getFirstName(), is(FORENAME)); - assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getIndividual().getPersonalInformation().getLastName(), is(updatedSurname)); - } - - @Test - public void shouldInitiateCaseCreationWhenSummonsApplicationIsApprovedAndAllEarlierApplicationsWereRejectedViaSpiChannel() { - final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, SUMMONS_INITIATION_CODE); - prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, firstMessage, emptyList())); - prosecutionCaseFile.apply(new SummonsApplicationRejected(APPLICATION_ID, CASE_ID, newArrayList(fromString(DEFENDANT_ID), fromString(SECOND_DEFENDANT_ID)), summonsRejectedOutcome().withReasons(newArrayList("Rejection Reason")).build())); - - final String updatedSurname = STRING.next(); - final ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, updatedSurname, BIRTH_DATE, THIRD_DEFENDANT_ID, randomAlphabetic(10))), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID_2); - Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - List eventList = objectStream.collect(toList()); - assertThat(eventList, hasSize(2)); - final Optional firstMatching = getFirstMatching(eventList, DefendantsParkedForSummonsApplicationApproval.class); - assertThat(firstMatching.isPresent(), is(true)); - final UUID applicationId2 = firstMatching.get().getApplicationId(); - assertThat(applicationId2, is(not(APPLICATION_ID))); - assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(1)); - assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(THIRD_DEFENDANT_ID)); - - objectStream = prosecutionCaseFile.approveCaseDefendants(getSummonsApplicationApprovedDetails(applicationId2), of(), of(), isCivil); - - eventList = objectStream.collect(toList()); - assertThat(eventList, hasSize(1)); - final Optional firstMatchingCaseReceived = getFirstMatching(eventList, CcCaseReceived.class); - assertThat(firstMatchingCaseReceived.isPresent(), is(true)); - assertThat(firstMatchingCaseReceived.get().getProsecutionWithReferenceData().getExternalId(), is(EXTERNAL_ID_2)); - assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(1)); - assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(THIRD_DEFENDANT_ID)); - } - - @Test - public void shouldAddDefendantWhenSummonsApplicationIsApprovedForNewlyAddedDefendantToExistingCaseViaSpiChannel() { - final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, SUMMONS_INITIATION_CODE); - final String updatedSurname = STRING.next(); - final ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, updatedSurname, BIRTH_DATE, THIRD_DEFENDANT_ID, randomAlphabetic(10))), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID_2); - prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, firstMessage, emptyList())); - prosecutionCaseFile.apply(new CcCaseReceived(firstMessage, summonsApprovedOutcome().withPersonalService(true).withProsecutorCost("£300.00").withSummonsSuppressed(false).build(), randomUUID())); - prosecutionCaseFile.apply(new CaseCreatedSuccessfully(CASE_ID, SPI, EXTERNAL_ID)); - prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID_2, secondMessage, emptyList())); - - final SummonsApplicationApprovedDetails secondSummonsApplicationApprovedDetails = getSummonsApplicationApprovedDetails(APPLICATION_ID_2); - final Stream objectStream = prosecutionCaseFile.approveCaseDefendants(secondSummonsApplicationApprovedDetails, of(), of(), isCivil); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList, hasSize(1)); - final Optional defendantAdded = getFirstMatching(eventList, ProsecutionDefendantsAdded.class); - assertThat(defendantAdded.isPresent(), is(true)); - assertThat(defendantAdded.get().getExternalId(), is(EXTERNAL_ID_2)); - assertThat(defendantAdded.get().getDefendants(), hasSize(1)); - assertThat(defendantAdded.get().getDefendants().get(0).getId(), is(THIRD_DEFENDANT_ID)); - assertThat(defendantAdded.get().getSummonsApprovedOutcome(), notNullValue()); - assertThat(defendantAdded.get().getSummonsApprovedOutcome().getSummonsSuppressed(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getSummonsSuppressed())); - assertThat(defendantAdded.get().getSummonsApprovedOutcome().getProsecutorCost(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getProsecutorCost())); - assertThat(defendantAdded.get().getSummonsApprovedOutcome().getPersonalService(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getPersonalService())); - assertThat(defendantAdded.get().getSummonsApprovedOutcome().getProsecutorEmailAddress(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getProsecutorEmailAddress())); - } - - @Test - public void shouldAddSubsequentDefendantsToTheCaseWhenCaseHasBeenCreatedAndSummonsIsApprovedForDefendantsThatWereNotPartOfTheCaseCreationViaSpiChannel() { - final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); - final ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData( - of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID_2); - prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, firstMessage, emptyList())); - prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID_2, secondMessage, emptyList())); - prosecutionCaseFile.apply(new CcCaseReceived(firstMessage, summonsApprovedOutcome().withPersonalService(true).withProsecutorCost("£300.00").withSummonsSuppressed(false).build(), randomUUID())); - prosecutionCaseFile.apply(new CaseCreatedSuccessfully(CASE_ID, SPI, EXTERNAL_ID)); - - final SummonsApplicationApprovedDetails secondSummonsApplicationApprovedDetails = getSummonsApplicationApprovedDetails(APPLICATION_ID_2); - final Stream objectStream = prosecutionCaseFile.approveCaseDefendants(secondSummonsApplicationApprovedDetails, of(), of(), isCivil); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList, hasSize(1)); - final Optional defendantAdded = getFirstMatching(eventList, ProsecutionDefendantsAdded.class); - assertThat(defendantAdded.isPresent(), is(true)); - assertThat(defendantAdded.get().getExternalId(), is(EXTERNAL_ID_2)); - assertThat(defendantAdded.get().getDefendants(), hasSize(1)); - assertThat(defendantAdded.get().getDefendants().get(0).getId(), is(SECOND_DEFENDANT_ID)); - assertThat(defendantAdded.get().getSummonsApprovedOutcome(), notNullValue()); - assertThat(defendantAdded.get().getSummonsApprovedOutcome().getSummonsSuppressed(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getSummonsSuppressed())); - assertThat(defendantAdded.get().getSummonsApprovedOutcome().getProsecutorCost(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getProsecutorCost())); - assertThat(defendantAdded.get().getSummonsApprovedOutcome().getPersonalService(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getPersonalService())); - assertThat(defendantAdded.get().getSummonsApprovedOutcome().getProsecutorEmailAddress(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getProsecutorEmailAddress())); - } - - @Test - public void shouldAddSubsequentDefendantsToTheCaseWhenCaseHasBeenCreatedWithWarningsAndSummonsIsApprovedForDefendantsThatWereNotPartOfTheCaseCreationViaSpiChannel() { - final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); - final DefendantProblem firstDefendantWarning = defendantProblem().withProsecutorDefendantReference(PROSECUTOR_DEFENDANT_REFERENCE_ONE).withProblems(of(problem().withCode(OFFENCE_NOT_IN_EFFECT_ON_OFFENCE_COMMITTED_DATE).build())).build(); - final ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData( - of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID_2); - prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, firstMessage, of(firstDefendantWarning))); - final DefendantProblem secondDefendantWarning = defendantProblem().withProsecutorDefendantReference(PROSECUTOR_DEFENDANT_REFERENCE_TWO).withProblems(of(problem().withCode(OFFENCE_NOT_IN_EFFECT_ON_OFFENCE_COMMITTED_DATE).build())).build(); - prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID_2, secondMessage, of(secondDefendantWarning))); - prosecutionCaseFile.apply(new CcCaseReceivedWithWarnings(firstMessage, emptyList(), of(firstDefendantWarning), summonsApprovedOutcome().withPersonalService(true).withProsecutorCost("£300.00").withSummonsSuppressed(false).build(), randomUUID())); - prosecutionCaseFile.apply(new CaseCreatedSuccessfullyWithWarnings(CASE_ID, emptyList(), SPI, of(firstDefendantWarning), EXTERNAL_ID, firstDefendantWarning.getProblems())); - - final SummonsApplicationApprovedDetails secondSummonsApplicationApprovedDetails = getSummonsApplicationApprovedDetails(APPLICATION_ID_2); - final Stream objectStream = prosecutionCaseFile.approveCaseDefendants(secondSummonsApplicationApprovedDetails, of(), of(), isCivil); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList, hasSize(1)); - final Optional defendantAdded = getFirstMatching(eventList, ProsecutionDefendantsAdded.class); - assertThat(defendantAdded.isPresent(), is(true)); - assertThat(defendantAdded.get().getExternalId(), is(EXTERNAL_ID_2)); - assertThat(defendantAdded.get().getDefendants(), hasSize(1)); - assertThat(defendantAdded.get().getDefendants().get(0).getId(), is(SECOND_DEFENDANT_ID)); - assertThat(defendantAdded.get().getDefendantWarnings(), hasSize(1)); - assertThat(defendantAdded.get().getDefendantWarnings().get(0).getProsecutorDefendantReference(), is(PROSECUTOR_DEFENDANT_REFERENCE_TWO)); - assertThat(defendantAdded.get().getSummonsApprovedOutcome(), notNullValue()); - assertThat(defendantAdded.get().getSummonsApprovedOutcome().getSummonsSuppressed(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getSummonsSuppressed())); - assertThat(defendantAdded.get().getSummonsApprovedOutcome().getProsecutorCost(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getProsecutorCost())); - assertThat(defendantAdded.get().getSummonsApprovedOutcome().getPersonalService(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getPersonalService())); - assertThat(defendantAdded.get().getSummonsApprovedOutcome().getProsecutorEmailAddress(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getProsecutorEmailAddress())); - } - - @Test - public void shouldIndicateAsDuplicateDefendantWhenSameDefendantIsReceivedAndSummonsApplicationForTheDefendantHasAlreadyBeenApprovedViaSpiChannel() { - final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, "S"); - prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, referenceData, emptyList())); - prosecutionCaseFile.apply(new CcCaseReceived(referenceData, summonsApprovedOutcome().withPersonalService(true).withProsecutorCost("£300.00").withSummonsSuppressed(false).build(), randomUUID())); - - final ProsecutionWithReferenceData subsequentReferenceDataForSameDefendant = getProsecutionWithReferenceData( - of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, "S", EXTERNAL_ID_2); - final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceDataForSameDefendant, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList, hasSize(1)); - final CaseReceivedWithDuplicateDefendants caseReceivedWithDuplicateDefendants = (CaseReceivedWithDuplicateDefendants) eventList.get(0); - assertThat(caseReceivedWithDuplicateDefendants.getCaseId(), is(CASE_ID)); - assertThat(caseReceivedWithDuplicateDefendants.getDefendants(), hasSize(1)); - assertThat(caseReceivedWithDuplicateDefendants.getDefendants().get(0).getId(), is(SECOND_DEFENDANT_ID)); - } - - @MethodSource("nonSpiChannels") - @ParameterizedTest - public void shouldRaiseProsecutionCaseRejectedForMCCAndCPPIChannels(final Channel nonSpiChannel) { - final SummonsApplicationRejectedDetails applicationRejectedCommandPayload = summonsApplicationRejectedDetails() - .withApplicationId(APPLICATION_ID) - .withCaseId(CASE_ID) - .withSummonsRejectedOutcome(summonsRejectedOutcome() - .withReasons(ImmutableList.of("First Reason")) - .build()) - .build(); - final ProsecutionWithReferenceData prosecutionWithReferenceData = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), nonSpiChannel, "S"); - prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, prosecutionWithReferenceData, emptyList())); - - // application rejected and all defendants cleaned - final Stream objectStreamPostApplicationRejection = prosecutionCaseFile.rejectCaseDefendants(applicationRejectedCommandPayload); - - final List rejectionEventList = objectStreamPostApplicationRejection.collect(toList()); - assertThat(rejectionEventList.get(0), is(instanceOf(uk.gov.moj.cps.prosecutioncasefile.domain.event.SummonsApplicationRejected.class))); - assertThat(rejectionEventList.get(1), is(instanceOf(CcProsecutionRejected.class))); - final uk.gov.moj.cps.prosecutioncasefile.domain.event.SummonsApplicationRejected applicationRejected = (uk.gov.moj.cps.prosecutioncasefile.domain.event.SummonsApplicationRejected) rejectionEventList.get(0); - assertThat(applicationRejected.getDefendantIds(), contains(fromString(DEFENDANT_ID))); - assertThat(applicationRejected.getSummonsRejectedOutcome().getReasons(), contains("First Reason")); - assertThat(prosecutionCaseFile.isProsecutionReceived(), is(false)); - assertThat(prosecutionCaseFile.getDefendants(), empty()); - - // subsequent message rec'd after application rejection - final Stream objectStreamPostSubsequentMessageReceived = prosecutionCaseFile.receiveCCCase(prosecutionWithReferenceData, emptyList(), emptyList(), referenceDataQueryService); - final List subsequentCaseMessageEventList = objectStreamPostSubsequentMessageReceived.collect(toList()); - assertThat(subsequentCaseMessageEventList.get(0), is(instanceOf(DefendantsParkedForSummonsApplicationApproval.class))); - assertThat(prosecutionCaseFile.getDefendants(), hasSize(1)); - } - - @Test - public void shouldNotRaiseAnyEventWhenAcceptCaseIsCalledAndCaseNotReceivedForSJP() { - final Stream resultObjectStream = prosecutionCaseFile.acceptCase(CASE_ID, null, referenceDataQueryService); - - final List resultEventList = resultObjectStream.collect(toList()); - assertThat(resultEventList, hasSize(0)); - } - - - @Test - public void shouldRaiseMaterialAddedEventsWhenNextDefendantValidated() { - final UUID caseId = randomUUID(); - final UUID cpsDefendantId = randomUUID(); - - when(referenceDataQueryService.retrieveDocumentsTypeAccess()).thenReturn(singletonList(DocumentTypeAccessReferenceData.documentTypeAccessReferenceData().withSection("SECTION").withId(randomUUID()).withDocumentCategory("Defendant level").build())); - when(referenceDataQueryService.getProsecutorsByOuCode(any())).thenReturn(ProsecutorsReferenceData.prosecutorsReferenceData().withCpsFlag(true).build()); - prosecutionCaseFile.apply(ccCaseReceived() - .withProsecutionWithReferenceData(new ProsecutionWithReferenceData(prosecution() - .withCaseDetails(caseDetails().withCaseId(caseId).build()) - .withDefendants(singletonList(defendant() - .withId(randomUUID().toString()) - .withIndividual(individual() - .withPersonalInformation(personalInformation() - .withFirstName("John") - .withLastName("Doe") - .build()) - .build()) - .build())) - .build())) - .build()); - - prosecutionCaseFile.apply(CaseCreatedSuccessfully.caseCreatedSuccessfully() - .withCaseId(caseId) - .build()); - - List events = prosecutionCaseFile.addMaterialV2(AddMaterialCommonV2.addMaterialCommonV2() - .withMaterial(randomUUID()) - .withCaseId(caseId) - .withMaterialType("SECTION") - .withMaterialContentType("image/jpeg") - .withProsecutionCaseSubject(ProsecutionCaseSubject.prosecutionCaseSubject() - .withDefendantSubject(DefendantSubject.defendantSubject() - .withCpsDefendantId(cpsDefendantId.toString()) - .build()) - .withProsecutingAuthority("PA") - .build()) - .build(), referenceDataQueryService).collect(Collectors.toList()); - - assertThat(events.size(), Matchers.is(1)); - MaterialPendingV2 pendingEvent = (MaterialPendingV2) events.get(0); - assertThat(pendingEvent.getWarnings().size(), is(1)); - - events = prosecutionCaseFile.addMaterialV2(AddMaterialCommonV2.addMaterialCommonV2() - .withMaterial(randomUUID()) - .withCaseId(caseId) - .withMaterialType("SECTION") - .withMaterialContentType("image/jpeg") - .withProsecutionCaseSubject(ProsecutionCaseSubject.prosecutionCaseSubject() - .withDefendantSubject(DefendantSubject.defendantSubject() - .withCpsDefendantId(cpsDefendantId.toString()) - .withCpsPersonDefendantDetails(CpsPersonDefendantDetails.cpsPersonDefendantDetails() - .withForename("John") - .withSurname("Doe") - .build()) - .build()) - .withProsecutingAuthority("PA") - .build()) - .build(), referenceDataQueryService).collect(Collectors.toList()); - - assertThat(events.size(), Matchers.is(2)); - - } - - @Test - public void shouldRaiseNewCCCaseForSameDefendantWhenEarlierApplicationWasRejected() { - final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, SUMMONS_INITIATION_CODE); - prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, firstMessage, emptyList())); - prosecutionCaseFile.apply(new SummonsApplicationRejected(APPLICATION_ID, CASE_ID, newArrayList(fromString(DEFENDANT_ID), fromString(SECOND_DEFENDANT_ID)), summonsRejectedOutcome().withReasons(newArrayList("Rejection Reason")).build())); - - Stream objectStream = prosecutionCaseFile.approveCaseDefendants(getSummonsApplicationApprovedDetails(APPLICATION_ID), of(), of(), isCivil); - - List eventList = objectStream.collect(toList()); - assertThat(eventList, hasSize(1)); - final Optional firstMatchingCaseReceived = getFirstMatching(eventList, CcCaseReceived.class); - assertThat(firstMatchingCaseReceived.isPresent(), is(true)); - assertThat(firstMatchingCaseReceived.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(2)); - assertThat(firstMatchingCaseReceived.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(DEFENDANT_ID)); - assertThat(firstMatchingCaseReceived.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(1).getId(), is(SECOND_DEFENDANT_ID)); - - } - - - @Test - public void shouldRejectDuplicateDefendantWithSameAsnForSpiIn() { - - - List defendantList = - asList(buildDefendantWithAsn("Jack", "Smith", LocalDate.of(1991, 01, 10), - DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn123")); - ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData(defendantList, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); - - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(firstMessage).build()); - - List defendantList2 = - asList(buildDefendantWithAsn("David", "James", LocalDate.of(1991, 02, 10), - DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn123")); - - ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData(defendantList2, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); - - final Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(1)); - Optional caseReceivedWithDuplicateDefendants = getFirstMatching(eventList, CaseReceivedWithDuplicateDefendants.class); - List defendants = caseReceivedWithDuplicateDefendants.get().getDefendants(); - assertThat(caseReceivedWithDuplicateDefendants.isPresent(), is(true)); - assertThat(defendants.get(0).getAsn(), is("asn123")); - - - } - - @Test - public void shouldRejectDuplicateDefendantWithSameDefendantDetailsForSpiIn() { - - - List defendantList = - asList(buildDefendantWithAsn("Mary", "Cal", LocalDate.of(1991, 01, 10), - DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn100")); - ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData(defendantList, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); - - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(firstMessage).build()); - - List defendantList2 = - asList(buildDefendantWithAsn("Mary", "Cal", LocalDate.of(1991, 01, 10), - DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn101")); - - ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData(defendantList2, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); - - final Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(1)); - Optional caseReceivedWithDuplicateDefendants = getFirstMatching(eventList, CaseReceivedWithDuplicateDefendants.class); - List defendants = caseReceivedWithDuplicateDefendants.get().getDefendants(); - assertThat(caseReceivedWithDuplicateDefendants.isPresent(), is(true)); - assertThat(defendants.get(0).getIndividual().getPersonalInformation().getFirstName(), is("Mary")); - assertThat(defendants.get(0).getIndividual().getPersonalInformation().getLastName(), is("Cal")); - assertThat(defendants.get(0).getIndividual().getSelfDefinedInformation().getDateOfBirth().toString(), is("1991-01-10")); - - - } - - @Test - public void shouldRejectDuplicateDefendantWithDobNotPresentForSpiIn() { - - - List defendantList = - asList(buildDefendantWithAsn("Mary", "Cal", null, - DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn100")); - ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData(defendantList, MCC, SUMMONS_INITIATION_CODE, EXTERNAL_ID); - - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(firstMessage).build()); - - List defendantList2 = - asList(buildDefendantWithAsn("Mary", "Cal", null, - DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn101")); - - ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData(defendantList2, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); - - - final Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(1)); - Optional caseReceivedWithDuplicateDefendants = getFirstMatching(eventList, CaseReceivedWithDuplicateDefendants.class); - List defendants = caseReceivedWithDuplicateDefendants.get().getDefendants(); - assertThat(caseReceivedWithDuplicateDefendants.isPresent(), is(true)); - assertThat(defendants.get(0).getIndividual().getPersonalInformation().getFirstName(), is("Mary")); - assertThat(defendants.get(0).getIndividual().getPersonalInformation().getLastName(), is("Cal")); - } - - @Test - public void shouldRejectDuplicateDefendantWithFirstNamePresentAndSameDobForSpiIn() { - List defendantList = - asList(buildDefendantWithAsn("Mary", "Cal", LocalDate.of(1991, 01, 10), - DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn100")); - ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData(defendantList, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); - - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(firstMessage).build()); - - List defendantList2 = - asList(buildDefendantWithAsn(null, "Cal", LocalDate.of(1991, 01, 10), - DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn101")); - - ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData(defendantList2, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); - - - final Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(1)); - Optional caseReceivedWithDuplicateDefendants = getFirstMatching(eventList, CaseReceivedWithDuplicateDefendants.class); - List defendants = caseReceivedWithDuplicateDefendants.get().getDefendants(); - assertThat(caseReceivedWithDuplicateDefendants.isPresent(), is(true)); - assertThat(defendants.get(0).getIndividual().getPersonalInformation().getLastName(), is("Cal")); - } - - @Test - public void shouldRejectDuplicateDefendantWithDobNotPresentForMCCAndThenSpi() { - List defendantList = - asList(buildDefendantWithAsn("Mary", "Cal", null, - DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn100")); - ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData(defendantList, MCC, SUMMONS_INITIATION_CODE, EXTERNAL_ID); - - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(firstMessage).build()); - - List defendantList2 = - asList(buildDefendantWithAsn("Mary", "Cal", null, - DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn101")); - - ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData(defendantList2, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); - - - final Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(1)); - Optional caseReceivedWithDuplicateDefendants = getFirstMatching(eventList, CaseReceivedWithDuplicateDefendants.class); - List defendants = caseReceivedWithDuplicateDefendants.get().getDefendants(); - assertThat(caseReceivedWithDuplicateDefendants.isPresent(), is(true)); - assertThat(defendants.get(0).getIndividual().getPersonalInformation().getFirstName(), is("Mary")); - assertThat(defendants.get(0).getIndividual().getPersonalInformation().getLastName(), is("Cal")); - } - - @Test - public void shouldProcessUniqueDefendantsAndIgnoreDuplicatesWithinSameRequest() { - List defendantList = - asList(buildDefendantWithAsn("Mary", "Cal", null, - DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn101")); - ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData(defendantList, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); - - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(firstMessage).build()); - List defendantList2 = - asList( - buildDefendantWithAsn("John", "Doe", LocalDate.of(1990, 05, 15), - DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO, "asn100"), - buildDefendantWithAsn("John", "Doe", LocalDate.of(1990, 05, 15), - DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO, "asn100") - ); - ProsecutionWithReferenceData messageWithDuplicateDefendants = getProsecutionWithReferenceData(defendantList2, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); - final Stream objectStream = prosecutionCaseFile.receiveCCCase(messageWithDuplicateDefendants, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - List eventList = objectStream.collect(toList()); - - Optional caseReceivedWithDuplicateDefendants = getFirstMatching(eventList, CaseReceivedWithDuplicateDefendants.class); - List defendants = caseReceivedWithDuplicateDefendants.get().getDefendants(); - assertThat(caseReceivedWithDuplicateDefendants.isPresent(), is(true)); - } - - @Test - public void shouldUpdateCaseDetailsWithFees(){ - final LocalDate offenceCommittedDate = of(2018, 3, 2); - final LocalDate offenceChargeDate = of(2018, 11, 2); - - final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( - of(buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate, PROSECUTOR_DEFENDANT_REFERENCE_ONE), - buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, SUMMONS_INITIATION_CODE); - prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(firstMessage).build()); - - final UUID externalIdForSecondMessage = randomUUID(); - final ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData( - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, randomAlphabetic(10))), SPI, SUMMONS_INITIATION_CODE, externalIdForSecondMessage); - prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); - - - final Stream objectStream = prosecutionCaseFile.updateCaseDetails("OUTSTANDING", "Reference001","OUTSTANDING", "Ref001"); - - final List eventList = objectStream.collect(toList()); - assertThat(eventList.size(), is(1)); - CaseDetailsUpdated caseDetailsUpdated = (CaseDetailsUpdated) eventList.get(0); - assertThat(caseDetailsUpdated.getContestedFeeStatus(), is("OUTSTANDING")); - assertThat(caseDetailsUpdated.getContestedPaymentReference(), is("Reference001")); - } - - - private void assertThatTheEventReturnedIsOfType(final Stream objectStream, final Class eventClass) { - final Optional event = objectStream.findFirst(); - assertThat(event.isPresent(), is(true)); - assertThat(event.get(), is(instanceOf(eventClass))); - } - - private void assertThatTheEventReturnedIsOfType(final Stream objectStream, final Class eventClass, final long eventCount) { - assertThat(objectStream.filter(eventClass::isInstance).count(), is(eventCount)); - } - - private ProsecutionWithReferenceData getProsecutionWithReferenceData(final List defendantList, final String initiationCode) { - final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); - referenceDataVO.setOffenceReferenceData(singletonList(offenceReferenceData().withCjsOffenceCode(OFFENCE_CODE).withProsecutionTimeLimit("6 ").withOffenceStartDate(OFFENCE_START_DATE).build())); - referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); - referenceDataVO.setInitiationTypes(asList("J", "C", "S")); - referenceDataVO.setProsecutorsReferenceData(prosecutorsReferenceData() - .withId(randomUUID()) - .build()); - final ProsecutionWithReferenceData prosecutionWithReferenceData = new ProsecutionWithReferenceData(prosecution() - .withCaseDetails(caseDetails() - .withCaseId(CASE_ID) - .withInitiationCode(initiationCode) - .withProsecutorCaseReference(PROSECUTOR_CASE_REFERENCE) - .withOriginatingOrganisation(ORIGINATING_ORGANISATION) - .withCpsOrganisation(CPS_ORGANISATION) - .withSummonsCode(values("A", "W", "B", "E").next()) - .build()) - .withDefendants(defendantList) - .withChannel(SPI) - .build()); - prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); - prosecutionWithReferenceData.setExternalId(EXTERNAL_ID); - return prosecutionWithReferenceData; - } - - private ProsecutionWithReferenceData getProsecutionWithReferenceData(final List defendantList) { - final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); - referenceDataVO.setOffenceReferenceData(singletonList(offenceReferenceData().withCjsOffenceCode(OFFENCE_CODE).withProsecutionTimeLimit("6").withOffenceStartDate(OFFENCE_START_DATE).build())); - referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); - referenceDataVO.setInitiationTypes(asList("J", "C")); - referenceDataVO.setProsecutorsReferenceData(prosecutorsReferenceData() - .withId(randomUUID()) - .build()); - final ProsecutionWithReferenceData prosecutionWithReferenceData = new ProsecutionWithReferenceData(prosecution() - .withCaseDetails(caseDetails() - .withCaseId(CASE_ID) - .withInitiationCode("C") - .withProsecutorCaseReference(PROSECUTOR_CASE_REFERENCE) - .withOriginatingOrganisation(ORIGINATING_ORGANISATION) - .withCpsOrganisation(CPS_ORGANISATION) - .build()) - .withDefendants(defendantList) - .withChannel(CPPI) - .build()); - prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); - prosecutionWithReferenceData.setExternalId(EXTERNAL_ID); - return prosecutionWithReferenceData; - } - - private ProsecutionWithReferenceData getProsecutionWithReferenceDataAndCivilFees(final List defendantList, final Channel channel, boolean isCivil, List civilFees) { - final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); - referenceDataVO.setOffenceReferenceData(singletonList(offenceReferenceData().withCjsOffenceCode(OFFENCE_CODE).withProsecutionTimeLimit("6").withOffenceStartDate(OFFENCE_START_DATE).build())); - referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); - referenceDataVO.setInitiationTypes(asList("J", "C")); - referenceDataVO.setProsecutorsReferenceData(prosecutorsReferenceData() - .withId(randomUUID()) - .build()); - - final ProsecutionWithReferenceData prosecutionWithReferenceData = new ProsecutionWithReferenceData(prosecution() - .withCaseDetails(caseDetails() - .withCaseId(CASE_ID) - .withInitiationCode("C") - .withProsecutorCaseReference(PROSECUTOR_CASE_REFERENCE) - .withOriginatingOrganisation(ORIGINATING_ORGANISATION) - .withCpsOrganisation(CPS_ORGANISATION) - .withFeeStatus(CollectionUtils.isNotEmpty(civilFees) ? civilFees.get(0).getFeeStatus(): null) - .withPaymentReference(CollectionUtils.isNotEmpty(civilFees) ? civilFees.get(0).getPaymentReference(): null) - .build()) - .withDefendants(defendantList) - .withChannel(channel) - .withIsCivil(isCivil) - .build()); - prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); - prosecutionWithReferenceData.setExternalId(EXTERNAL_ID); - return prosecutionWithReferenceData; - } - - private ProsecutionWithReferenceData getProsecutionWithMixedValidAndInvalidCaseMarkerRefData(final List defendantList) { - final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); - referenceDataVO.setOffenceReferenceData(singletonList(offenceReferenceData().withCjsOffenceCode(OFFENCE_CODE).withProsecutionTimeLimit("6").withOffenceStartDate(OFFENCE_START_DATE).build())); - referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); - referenceDataVO.setInitiationTypes(asList("J", "C", TestConstants.SUMMONS_INITIATION_CODE)); - referenceDataVO.setProsecutorsReferenceData(prosecutorsReferenceData() - .withId(randomUUID()) - .build()); - - final ProsecutionWithReferenceData prosecutionWithReferenceData = new ProsecutionWithReferenceData(prosecution() - .withCaseDetails(caseDetails() - .withCaseId(CASE_ID) - .withInitiationCode(SUMMONS_INITIATION_CODE) - .withSummonsCode(values("A", "W", "B", "E").next()) - .withProsecutorCaseReference(PROSECUTOR_CASE_REFERENCE) - .withOriginatingOrganisation(ORIGINATING_ORGANISATION) - .withCpsOrganisation(CPS_ORGANISATION) - .withCaseMarkers(asList( - caseMarker().withMarkerTypeCode(VALID_CASE_MARKER_CODE).build(), - caseMarker().withMarkerTypeCode(INVALID_CASE_MARKER_CODE).build())) - .build()) - .withDefendants(defendantList) - .withChannel(SPI) - .build()); - prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); - prosecutionWithReferenceData.setExternalId(EXTERNAL_ID); - return prosecutionWithReferenceData; - } - - private ProsecutionWithReferenceData getProsecutionWithReferenceData(final List defendantList, - final String offenceStartDate, final String offenceEndDate) { - final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); - referenceDataVO.setOffenceReferenceData(singletonList(offenceReferenceData().withCjsOffenceCode(OFFENCE_CODE).withProsecutionTimeLimit("6").withOffenceStartDate(offenceStartDate).withOffenceEndDate(offenceEndDate).build())); - referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); - referenceDataVO.setInitiationTypes(asList("J", "C")); - referenceDataVO.setProsecutorsReferenceData(prosecutorsReferenceData() - .withId(randomUUID()) - .build()); - final ProsecutionWithReferenceData prosecutionWithReferenceData = new ProsecutionWithReferenceData(prosecution() - .withCaseDetails(caseDetails() - .withCaseId(CASE_ID) - .withInitiationCode("C") - .withProsecutorCaseReference(PROSECUTOR_CASE_REFERENCE) - .withOriginatingOrganisation(ORIGINATING_ORGANISATION) - .withCpsOrganisation(CPS_ORGANISATION) - .build()) - .withDefendants(defendantList) - .withChannel(CPPI) - .build()); - prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); - prosecutionWithReferenceData.setExternalId(EXTERNAL_ID); - return prosecutionWithReferenceData; - } - - private ProsecutionWithReferenceData getProsecutionWithReferenceData(final List defendantList, final Channel channel, final String initiationCode) { - return getProsecutionWithReferenceData(defendantList, channel, initiationCode, EXTERNAL_ID); - } - - private ProsecutionWithReferenceData getProsecutionWithReferenceData(final List defendantList, final Channel channel, final String initiationCode, final UUID externalId) { - final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); - referenceDataVO.setOffenceReferenceData(singletonList(offenceReferenceData().withCjsOffenceCode(OFFENCE_CODE).withProsecutionTimeLimit("6 ").withOffenceStartDate(OFFENCE_START_DATE).build())); - referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); - referenceDataVO.setInitiationTypes(asList("J", "C", initiationCode)); - referenceDataVO.setProsecutorsReferenceData(prosecutorsReferenceData() - .withId(randomUUID()) - .build()); - final ProsecutionWithReferenceData prosecutionWithReferenceData = new ProsecutionWithReferenceData(prosecution() - .withCaseDetails(caseDetails() - .withCaseId(CASE_ID) - .withInitiationCode(initiationCode) - .withSummonsCode(values("A", "W", "B", "E").next()) - .withProsecutorCaseReference(PROSECUTOR_CASE_REFERENCE) - .withOriginatingOrganisation(ORIGINATING_ORGANISATION) - .withCpsOrganisation(CPS_ORGANISATION) - .build()) - .withDefendants(defendantList) - .withChannel(channel) - .build()); - prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); - prosecutionWithReferenceData.setExternalId(externalId); - return prosecutionWithReferenceData; - } - - private ProsecutionWithReferenceData getProsecutionWithValidCaseMarker(final List defendantList) { - final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); - referenceDataVO.setOffenceReferenceData(singletonList(offenceReferenceData().withCjsOffenceCode(OFFENCE_CODE).withProsecutionTimeLimit("6 ").withOffenceStartDate(OFFENCE_START_DATE).build())); - referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); - referenceDataVO.setInitiationTypes(asList("J", "C", TestConstants.SUMMONS_INITIATION_CODE)); - referenceDataVO.setProsecutorsReferenceData(prosecutorsReferenceData() - .withId(randomUUID()) - .build()); - final ProsecutionWithReferenceData prosecutionWithReferenceData = new ProsecutionWithReferenceData(prosecution() - .withCaseDetails(caseDetails() - .withCaseId(CASE_ID) - .withInitiationCode(SUMMONS_INITIATION_CODE) - .withSummonsCode(values("A", "W", "B", "E").next()) - .withProsecutorCaseReference(PROSECUTOR_CASE_REFERENCE) - .withOriginatingOrganisation(ORIGINATING_ORGANISATION) - .withCpsOrganisation(CPS_ORGANISATION) - .withCaseMarkers(of(caseMarker().withMarkerTypeCode(VALID_CASE_MARKER_CODE).build())) - .build()) - .withDefendants(defendantList) - .withChannel(SPI) - .build()); - prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); - prosecutionWithReferenceData.setExternalId(TestConstants.EXTERNAL_ID_2); - return prosecutionWithReferenceData; - } - - private uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant buildDefendant(final String firstName, final String lastName, - final LocalDate dateOfBirth, - final String defendantId, - final String prosecutorDefendantReference) { - return buildDefendant(firstName, lastName, dateOfBirth, defendantId, prosecutorDefendantReference, DATE_OF_HEARING, null); - } - - private uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant buildDefendant(final String firstName, final String lastName, - final LocalDate dateOfBirth, - final String defendantId, - final String prosecutorDefendantReference, final Language language) { - return buildDefendant(firstName, lastName, dateOfBirth, defendantId, prosecutorDefendantReference, DATE_OF_HEARING, language); - } - - private uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant buildDefendantWithAsn(final String firstName, final String lastName, - final LocalDate dateOfBirth, - final String defendantId, - final String prosecutorDefendantReference, - final String asn - - ) { - return buildDefendantWithAsn(firstName, lastName, dateOfBirth, defendantId, prosecutorDefendantReference, DATE_OF_HEARING, asn); - } - - private uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant buildDefendant(final String firstName, - final String lastName, - final LocalDate dateOfBirth, - final String defendantId, - final String prosecutorDefendantReference, - final String dateOfHearing, final Language language) { - return defendant() - .withId(defendantId) - .withInitiationCode("C") - .withProsecutorDefendantReference(prosecutorDefendantReference) - .withDocumentationLanguage(language) - .withHearingLanguage(language) - .withIndividual(individual() - .withPersonalInformation(personalInformation() - .withFirstName(firstName) - .withLastName(lastName).build()) - .withSelfDefinedInformation(selfDefinedInformation() - .withDateOfBirth(dateOfBirth) - .build()) - .withBailConditions("bailConditions") - .build()) - .withInitialHearing(initialHearing() - .withDateOfHearing(dateOfHearing) - .withCourtHearingLocation(COURT_HEARING_LOCATION) - .build()) - .withCustodyStatus(CUSTODY_STATUS) - .withOffences(singletonList(offence() - .withOffenceId(TestConstants.OFFENCE_ID) - .withOffenceSequenceNumber(1) - .withArrestDate(ARREST_DATE) - .withOffenceCode(OFFENCE_CODE) - .withOffenceCommittedDate(OFFENCE_COMMITTED_DATE) - .withChargeDate(OFFENCE_CHARGE_DATE) - .withOffenceDateCode(2) - .build())) - .build(); - } - - private uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant buildDefendantWithAsn(final String firstName, - final String lastName, - final LocalDate dateOfBirth, - final String defendantId, - final String prosecutorDefendantReference, - final String dateOfHearing, - final String asn - ) { - return defendant() - .withAsn(asn) - .withId(defendantId) - .withInitiationCode("C") - .withProsecutorDefendantReference(prosecutorDefendantReference) - .withIndividual(individual() - .withPersonalInformation(personalInformation() - .withFirstName(firstName) - .withLastName(lastName).build()) - .withSelfDefinedInformation(selfDefinedInformation() - .withDateOfBirth(dateOfBirth) - .build()) - .withBailConditions("bailConditions") - .build()) - .withInitialHearing(initialHearing() - .withDateOfHearing(dateOfHearing) - .withCourtHearingLocation(COURT_HEARING_LOCATION) - .build()) - .withCustodyStatus(CUSTODY_STATUS) - .withOffences(singletonList(offence() - .withOffenceId(randomUUID()) - .withOffenceSequenceNumber(1) - .withArrestDate(ARREST_DATE) - .withOffenceCode(OFFENCE_CODE) - .withOffenceCommittedDate(OFFENCE_COMMITTED_DATE) - .withChargeDate(OFFENCE_CHARGE_DATE) - .withOffenceDateCode(2) - .build())) - .build(); - } - private uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant buildDefendantWithInitiationCode(final String initiationCode) { - return defendant() - .withId(TestConstants.DEFENDANT_ID) - .withInitiationCode(initiationCode) - .withProsecutorDefendantReference(TestConstants.PROSECUTOR_DEFENDANT_REFERENCE_ONE) - .withIndividual(individual() - .withPersonalInformation(personalInformation() - .withFirstName(TestConstants.FORENAME) - .withLastName(TestConstants.SURNAME).build()) - .withSelfDefinedInformation(selfDefinedInformation() - .withDateOfBirth(TestConstants.BIRTH_DATE) - .build()) - .withBailConditions("bailConditions") - .build()) - .withInitialHearing(initialHearing() - .withDateOfHearing(TestConstants.DATE_OF_HEARING) - .withCourtHearingLocation(COURT_HEARING_LOCATION) - .build()) - .withCustodyStatus(CUSTODY_STATUS) - .withOffences(singletonList(offence() - .withOffenceId(randomUUID()) - .withOffenceSequenceNumber(1) - .withArrestDate(ARREST_DATE) - .withOffenceCode(OFFENCE_CODE) - .withOffenceCommittedDate(OFFENCE_COMMITTED_DATE) - .withChargeDate(OFFENCE_CHARGE_DATE) - .withOffenceDateCode(2) - .build())) - .build(); - } - - private uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant buildDefendantWithInitiationCode(final String firstName, final String lastName, final LocalDate dateOfBirth, final String defendantId, final String prosecutorDefendantReference, final String initiationCode) { - return defendant() - .withId(defendantId) - .withInitiationCode(initiationCode) - .withProsecutorDefendantReference(prosecutorDefendantReference) - .withIndividual(individual() - .withPersonalInformation(personalInformation() - .withFirstName(firstName) - .withLastName(lastName).build()) - .withSelfDefinedInformation(selfDefinedInformation() - .withDateOfBirth(dateOfBirth) - .build()) - .withBailConditions("bailConditions") - .build()) - .withInitialHearing(initialHearing() - .withDateOfHearing(TestConstants.DATE_OF_HEARING) - .withCourtHearingLocation(COURT_HEARING_LOCATION) - .build()) - .withCustodyStatus(CUSTODY_STATUS) - .withOffences(singletonList(offence() - .withOffenceId(randomUUID()) - .withOffenceSequenceNumber(1) - .withArrestDate(ARREST_DATE) - .withOffenceCode(OFFENCE_CODE) - .withOffenceCommittedDate(OFFENCE_COMMITTED_DATE) - .withChargeDate(OFFENCE_CHARGE_DATE) - .withOffenceDateCode(2) - .build())) - .build(); - } - - private uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant buildDefendantWithOffence(final LocalDate offenceCommittedDate, final LocalDate offenceChargeDate, final String prosecutorDefendantReference) { - return defendant() - .withId(DEFENDANT_ID) - .withProsecutorDefendantReference(prosecutorDefendantReference) - .withIndividual(individual() - .withPersonalInformation(personalInformation() - .withFirstName("Ben") - .withLastName("Westwood").build()) - .withSelfDefinedInformation(selfDefinedInformation() - .withDateOfBirth(SECOND_BIRTH_DATE) - .build()) - .withBailConditions("bailConditions") - .build()) - .withInitialHearing(initialHearing() - .withDateOfHearing(DATE_OF_HEARING) - .withCourtHearingLocation(COURT_HEARING_LOCATION) - .build()) - .withCustodyStatus(CUSTODY_STATUS) - .withOffences(singletonList(offence() - .withArrestDate(ARREST_DATE) - .withOffenceCode(OFFENCE_CODE) - .withOffenceSequenceNumber(1) - .withOffenceId(offenceId) - .withOffenceCommittedDate(offenceCommittedDate) - .withChargeDate(offenceChargeDate) - .withOffenceDateCode(2) - .build())) - .withInitiationCode("C") - .build(); - } - - private uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant buildDefendantWithAsnAndOffence(final LocalDate offenceCommittedDate, final LocalDate offenceChargeDate, final String asn) { - return defendant() - .withId(DEFENDANT_ID) - .withAsn(asn) - .withIndividual(individual() - .withPersonalInformation(personalInformation() - .withFirstName("Ben") - .withLastName("Westwood").build()) - .withSelfDefinedInformation(selfDefinedInformation() - .withDateOfBirth(SECOND_BIRTH_DATE) - .build()) - .withBailConditions("bailConditions") - .build()) - .withInitialHearing(initialHearing() - .withDateOfHearing(DATE_OF_HEARING) - .withCourtHearingLocation(COURT_HEARING_LOCATION) - .build()) - .withCustodyStatus(CUSTODY_STATUS) - .withOffences(singletonList(offence() - .withArrestDate(ARREST_DATE) - .withOffenceCode(OFFENCE_CODE) - .withOffenceSequenceNumber(1) - .withOffenceId(offenceId) - .withOffenceCommittedDate(offenceCommittedDate) - .withChargeDate(offenceChargeDate) - .withOffenceDateCode(2) - .build())) - .withInitiationCode("C") - .build(); - } - - private List buildOrganisationUnits() { - return singletonList(organisationUnitReferenceData() - .withOucode(COURT_HEARING_LOCATION) - .build()); - } - - private List buildCustodyStatuses() { - return singletonList(custodyStatusReferenceData() - .withStatusCode(CUSTODY_STATUS) - .build()); - } - - private List buildBailStatuses() { - return singletonList(bailStatusReferenceData() - .withStatusCode(CUSTODY_STATUS) - .build()); - } - - private ProsecutionWithReferenceData getProsecutionWithReferenceData(final Channel channel, final Boolean hasMultipleDefendants, final Language language) { - - ProsecutorsReferenceData prd = new ProsecutorsReferenceData.Builder() - .withId(UUID.fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf")) - .withShortName("ShortName").withSjpFlag(true).withAocpApproved(true).build(); - - Prosecutor prosecutor = new Prosecutor.Builder().withReferenceData(prd).withProsecutingAuthority("TFL").build(); - CaseDetails caseDetails = new CaseDetails.Builder() - .withProsecutor(prosecutor) - .withCaseId(randomUUID()) - .withProsecutorCaseReference("1234243") - .withInitiationTypeFound(true) - .withOriginatingOrganisation("TFL") - .withCpsOrganisation("CPS") - .withInitiationCode("J") - .build(); - - final ImmutableList defendants = hasMultipleDefendants ? - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)) : - of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, language)); - Prosecution prosecution = new Prosecution.Builder() - .withCaseDetails(caseDetails) - .withChannel(channel) - .withDefendants(defendants) - .build(); - - final ProsecutionWithReferenceData prosecutionWithReferenceData = - new ProsecutionWithReferenceData(prosecution); - prosecutionWithReferenceData.setExternalId(EXTERNAL_ID); - - final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); - referenceDataVO.setOffenceReferenceData( - singletonList(offenceReferenceData() - .withCjsOffenceCode(OFFENCE_CODE) - .withOffenceStartDate(OFFENCE_START_DATE) - .withModeOfTrial("SNONIMP") - .build())); - referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); - referenceDataVO.setInitiationTypes(asList("J", "C")); - prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); - referenceDataVO.setProsecutorsReferenceData(getProsecutorsReferenceData()); - - return prosecutionWithReferenceData; - } - - private ProsecutionWithReferenceData getSjpProsecutionWithReferenceData(final String initiationCode) { - - ProsecutorsReferenceData prd = new ProsecutorsReferenceData.Builder() - .withId(UUID.fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf")) - .withShortName("ShortName").withSjpFlag(true).withAocpApproved(true).build(); - - Prosecutor prosecutor = new Prosecutor.Builder().withReferenceData(prd).withProsecutingAuthority("TFL").build(); - CaseDetails caseDetails = new CaseDetails.Builder() - .withProsecutor(prosecutor) - .withCaseId(randomUUID()) - .withProsecutorCaseReference("1234243") - .withInitiationTypeFound(true) - .withOriginatingOrganisation("TFL") - .withCpsOrganisation("CPS") - .withInitiationCode(initiationCode) - .build(); - - final ImmutableList defendants = - of(buildDefendantWithInitiationCode(initiationCode)); - Prosecution prosecution = new Prosecution.Builder() - .withCaseDetails(caseDetails) - .withChannel(Channel.SPI) - .withDefendants(defendants) - .build(); - - final ProsecutionWithReferenceData prosecutionWithReferenceData = - new ProsecutionWithReferenceData(prosecution); - prosecutionWithReferenceData.setExternalId(EXTERNAL_ID); - - final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); - referenceDataVO.setOffenceReferenceData( - singletonList(offenceReferenceData() - .withCjsOffenceCode(OFFENCE_CODE) - .withOffenceStartDate(OFFENCE_START_DATE) - .withModeOfTrial("SNONIMP") - .build())); - referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); - referenceDataVO.setInitiationTypes(asList("J", "C")); - prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); - referenceDataVO.setProsecutorsReferenceData(getProsecutorsReferenceData()); - - return prosecutionWithReferenceData; - } - - private ProsecutorsReferenceData getProsecutorsReferenceData() { - return prosecutorsReferenceData() - .withId(randomUUID()) - .build(); - } - - private List buildSummonsCodeReferenceData() { - return asList( - summonsCodeReferenceData() - .withId(randomUUID()) - .withSeqNo(INTEGER.next()) - .withSummonsCode("A") - .withSummonsCodeDescription("Application / Complaint") - .build(), - summonsCodeReferenceData() - .withId(randomUUID()) - .withSeqNo(INTEGER.next()) - .withSummonsCode("W") - .withSummonsCodeDescription("Witness Summons") - .build(), - summonsCodeReferenceData() - .withId(randomUUID()) - .withSeqNo(INTEGER.next()) - .withSummonsCode("B") - .withSummonsCodeDescription("Breach offences") - .build(), - summonsCodeReferenceData() - .withId(randomUUID()) - .withSeqNo(INTEGER.next()) - .withSummonsCode("M") - .withSummonsCodeDescription("MCA Case") - .build(), - summonsCodeReferenceData() - .withId(randomUUID()) - .withSeqNo(INTEGER.next()) - .withSummonsCode("E") - .withSummonsCodeDescription("Either Way or serious offences") - .build() - ); - } - - private List buildCaseMarkers() { - return of(caseMarker() - .withMarkerTypeCode(VALID_CASE_MARKER_CODE) - .build()); - } - - private Optional getFirstMatching(final List eventList, Class clazz) { - return eventList.stream().filter(clazz::isInstance).map(clazz::cast).findFirst(); - } - - private JsonObject getCaseMarkerCorrectedField() { - return createObjectBuilder() - .add("errors", createArrayBuilder() - .add(createObjectBuilder() - .add("id", "1") - .add("fieldName", "caseMarkers") - .add("value", VALID_CASE_MARKER_CODE)) - ) - .build(); - } - - private JsonObject getDefendantDateOfHearingCorrectedField() { - return createObjectBuilder() - .add("defendants", createArrayBuilder() - .add(createObjectBuilder() - .add("id", TestConstants.FOURTH_DEFENDANT_ID) - .add("errors", createArrayBuilder() - .add(createObjectBuilder() - .add("fieldName", "initialHearing_dateOfHearing") - .add("value", DATE_OF_HEARING) - .build()) - .build()) - .build()) - .build()) - .build(); - } - - private JsonObject offenceChargeDateCorrectlySet() { - return createObjectBuilder() - .add("defendants", createArrayBuilder() - .add(createObjectBuilder() - .add("id", DEFENDANT_ID) - .add("errors", createArrayBuilder() - .add(createObjectBuilder() - .add("fieldName", "offence_chargeDate") - .add("id", TestConstants.OFFENCE_ID.toString()) - .add("value", "2100-07-02") - .build()) - .build()) - .build()) - .build()) - .build(); - } - - private SummonsApplicationApprovedDetails getSummonsApplicationApprovedDetails(final UUID applicationId) { - return summonsApplicationApprovedDetails() - .withApplicationId(applicationId) - .withCaseId(TestConstants.CASE_ID) - .withSummonsApprovedOutcome(summonsApprovedOutcome().withSummonsSuppressed(false).withPersonalService(true).withProsecutorCost(PROSECUTOR_COST).build()) - .build(); - } - - private InitialHearing getInitialHearing() { - InitialHearing initialHearing = InitialHearing.initialHearing() - .withDateOfHearing("2050-02-04") - .build(); - return initialHearing; - } -} - +package uk.gov.moj.cps.prosecutioncasefile; + +import static com.google.common.collect.ImmutableList.of; +import static com.google.common.collect.Lists.newArrayList; +import static java.lang.Boolean.FALSE; +import static java.lang.Boolean.TRUE; +import static java.lang.String.format; +import static java.time.LocalDate.now; +import static java.time.LocalDate.of; +import static java.util.Arrays.asList; +import static java.util.Collections.emptyList; +import static java.util.Collections.singletonList; +import static java.util.Optional.ofNullable; +import static java.util.UUID.fromString; +import static java.util.UUID.randomUUID; +import static java.util.stream.Collectors.toList; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.contains; +import static org.hamcrest.Matchers.empty; +import static org.hamcrest.Matchers.greaterThan; +import static org.hamcrest.Matchers.hasSize; +import static org.hamcrest.core.IsInstanceOf.instanceOf; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.when; +import static org.mockito.quality.Strictness.LENIENT; +import static uk.gov.justice.core.courts.SummonsApprovedOutcome.summonsApprovedOutcome; +import static uk.gov.justice.core.courts.SummonsRejectedOutcome.summonsRejectedOutcome; +import static uk.gov.justice.cps.prosecutioncasefile.InitialHearing.initialHearing; +import static uk.gov.justice.services.test.utils.core.random.RandomGenerator.INTEGER; +import static uk.gov.justice.services.test.utils.core.random.RandomGenerator.STRING; +import static uk.gov.justice.services.test.utils.core.random.RandomGenerator.values; +import static uk.gov.moj.cpp.prosecution.casefile.domain.SummonsApplicationApprovedDetails.summonsApplicationApprovedDetails; +import static uk.gov.moj.cpp.prosecution.casefile.domain.SummonsApplicationRejectedDetails.summonsApplicationRejectedDetails; +import static uk.gov.moj.cpp.prosecution.casefile.event.CcCaseReceived.ccCaseReceived; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.BailStatusReferenceData.bailStatusReferenceData; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.CaseDetails.caseDetails; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.CaseMarker.caseMarker; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Channel.CIVIL; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Channel.CPPI; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Channel.MCC; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Channel.SPI; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.CustodyStatusReferenceData.custodyStatusReferenceData; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant.defendant; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.DefendantProblem.defendantProblem; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Individual.individual; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Offence.offence; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.OffenceReferenceData.offenceReferenceData; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.OrganisationUnitReferenceData.organisationUnitReferenceData; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.OrganisationUnitWithCourtroomReferenceData.organisationUnitWithCourtroomReferenceData; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.PersonalInformation.personalInformation; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Problem.problem; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Prosecution.prosecution; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.ProsecutorsReferenceData.prosecutorsReferenceData; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.ReferenceDataCountryNationality.referenceDataCountryNationality; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.SelfDefinedInformation.selfDefinedInformation; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.SummonsCodeReferenceData.summonsCodeReferenceData; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.APPLICATION_ID; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.APPLICATION_ID_2; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.ARREST_DATE; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.ARREST_SUMMON_NUMBER; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.BIRTH_DATE; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.CASE_ID; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.COURT_HEARING_LOCATION; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.CPS_ORGANISATION; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.CUSTODY_STATUS; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.DATE_OF_HEARING; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.DATE_OF_HEARING_IN_PAST; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.DEFENDANT_ID; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.EXTERNAL_ID; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.EXTERNAL_ID_2; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.EXTERNAL_ID_3; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.FIFTH_DEFENDANT_ID; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.FITH_SURNAME; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.FORENAME; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.FOURTH_DEFENDANT_ID; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.FOURTH_SURNAME; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.OFFENCE_CHARGE_DATE; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.OFFENCE_CODE; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.OFFENCE_COMMITTED_DATE; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.OFFENCE_NOT_IN_EFFECT_ON_OFFENCE_COMMITTED_DATE; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.OFFENCE_START_DATE; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.ORIGINATING_ORGANISATION; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.PROSECUTOR_CASE_REFERENCE; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.PROSECUTOR_COST; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.PROSECUTOR_DEFENDANT_REFERENCE_ONE; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.PROSECUTOR_DEFENDANT_REFERENCE_THREE; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.PROSECUTOR_DEFENDANT_REFERENCE_TWO; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.SECOND_BIRTH_DATE; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.SECOND_DEFENDANT_ID; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.SECOND_FORENAME; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.SECOND_SURNAME; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.SUMMONS_INITIATION_CODE; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.SURNAME; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.THIRD_BIRTH_DATE; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.THIRD_DEFENDANT_ID; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.THIRD_FORENAME; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.THIRD_SURNAME; +import static uk.gov.moj.cps.prosecutioncasefile.TestConstants.URN; + +import com.google.common.collect.Lists; +import uk.gov.justice.core.courts.FeeStatus; +import uk.gov.justice.cps.prosecutioncasefile.InitialHearing; +import uk.gov.justice.services.common.converter.JsonObjectToObjectConverter; +import uk.gov.justice.services.common.converter.ObjectToJsonObjectConverter; +import uk.gov.justice.services.common.converter.jackson.ObjectMapperProducer; +import uk.gov.justice.services.test.utils.core.reflection.ReflectionUtil; +import uk.gov.moj.cpp.json.schemas.prosecutioncasefile.events.CaseReceivedWithDuplicateDefendants; +import uk.gov.moj.cpp.json.schemas.prosecutioncasefile.events.DefendantValidationPassed; +import uk.gov.moj.cpp.prosecution.casefile.aggregate.ProsecutionCaseFile; +import uk.gov.moj.cpp.prosecution.casefile.domain.*; +import uk.gov.moj.cpp.prosecution.casefile.event.*; +import uk.gov.moj.cpp.prosecution.casefile.event.CcCaseReceived; +import uk.gov.moj.cpp.prosecution.casefile.event.CcCaseReceivedWithWarnings; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.BailStatusReferenceData; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.CaseDetails; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.CaseMarker; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Channel; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.CivilFees; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.CpsPersonDefendantDetails; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.CustodyStatusReferenceData; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.DefendantProblem; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.DefendantSubject; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.DocumentTypeAccessReferenceData; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Material; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.MojOffences; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Offence; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.OrganisationUnitReferenceData; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Problem; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.ProblemValue; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Prosecution; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.ProsecutionCaseSubject; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Prosecutor; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.ProsecutorsReferenceData; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.SummonsCodeReferenceData; +import uk.gov.moj.cpp.prosecution.casefile.refdata.defendant.OffenceDataRefDataEnricher; +import uk.gov.moj.cpp.prosecution.casefile.refdata.proscase.InitiationTypesRefDataEnricher; +import uk.gov.moj.cpp.prosecution.casefile.service.ReferenceDataQueryService; +import uk.gov.moj.cpp.prosecution.casefile.validation.ProblemCode; +import uk.gov.moj.cps.prosecutioncasefile.common.AddMaterialCommonV2; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.*; + +import java.time.LocalDate; +import java.time.ZonedDateTime; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import javax.json.JsonObject; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.collect.ImmutableList; +import org.apache.commons.collections.CollectionUtils; +import org.hamcrest.Matchers; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; +import org.mockito.junit.jupiter.MockitoExtension; +import org.mockito.junit.jupiter.MockitoSettings; + +// TODO: remove LENIENT strictness +@MockitoSettings(strictness = LENIENT) +@ExtendWith(MockitoExtension.class) +public class ProsecutionCaseFileTest { + + private static final String VALID_CASE_MARKER_CODE = "AB"; + private static final String INVALID_CASE_MARKER_CODE = "BC"; + private final ObjectMapper objectMapper = new ObjectMapperProducer().objectMapper(); + + @Spy + private final JsonObjectToObjectConverter jsonObjectToObjectConverter = new JsonObjectToObjectConverter(objectMapper); + + @Spy + private final ObjectToJsonObjectConverter objectToJsonObjectConverter = new ObjectToJsonObjectConverter(objectMapper); + + @Mock + private ReferenceDataQueryService referenceDataQueryService; + + @Spy + @InjectMocks + private final InitiationTypesRefDataEnricher initiationTypesRefDataEnricher = new InitiationTypesRefDataEnricher(); + + @Spy + @InjectMocks + private final OffenceDataRefDataEnricher offenceDataRefDataEnricher = new OffenceDataRefDataEnricher(); + + private ProsecutionCaseFile prosecutionCaseFile; + + private UUID offenceId; + + private final boolean isCivil = true; + + public static Stream validChannels() { + return Stream.of( + Arguments.of(CPPI), + Arguments.of(MCC), + Arguments.of(SPI) + ); + } + + public static Stream nonSpiChannels() { + return Stream.of( + Arguments.of(CPPI), + Arguments.of(MCC) + ); + } + + public static Stream allowSummonsCodeWithSubsequentNonSjpInitiationCodes() { + return Stream.of( + Arguments.of("S","S"), + Arguments.of("S","Q"), + Arguments.of("S","C"), + Arguments.of("S","R"), + Arguments.of("S","O"), + Arguments.of("S","Z") + ); + } + + public static Stream allowWithSubsequentNonSjpInitiationCodes() { + return Stream.of( + Arguments.of("C","C"), + Arguments.of("C","Q"), + Arguments.of("C","R"), + Arguments.of("C","O"), + Arguments.of("Q","C"), + Arguments.of("Q","Q"), + Arguments.of("Q","R"), + Arguments.of("Q","O"), + Arguments.of("R","C"), + Arguments.of("R","Q"), + Arguments.of("R","R"), + Arguments.of("R","O") + ); + } + public static Stream rejectSubsequentSjpInitiationCodes() { + return Stream.of( + Arguments.of("C","J"), + Arguments.of("S","J"), + Arguments.of("Q","J"), + Arguments.of("R","J"), + Arguments.of("O","J"), + Arguments.of("Z","J") + ); + } + + public static Stream rejectSubsequentNonSjpInitiationCodes() { + return Stream.of( + Arguments.of("J","C"), + Arguments.of("J","Q"), + Arguments.of("J","R"), + Arguments.of("J","O"), + Arguments.of("J","Z") + ); + } + + public static Stream addDefendantAfterSummonsRejectedWithSubsequentNonSjpInitiationCodes() { + return Stream.of( + Arguments.of("C","S","Q"), + Arguments.of("Q","S","C") + ); + } + + public static Stream defendantsParkedForSummonsApprovalFollowingNonSjpInitiationCodes() { + return Stream.of( + Arguments.of("C","S"), + Arguments.of("Q","S"), + Arguments.of("R","S") + ); + } + + @BeforeEach + public void setup() { + when(referenceDataQueryService.isInitiationCodeValid(any())).thenReturn(true); + when(referenceDataQueryService.retrieveOrganisationUnits(COURT_HEARING_LOCATION)).thenReturn(buildOrganisationUnits()); + when(referenceDataQueryService.retrieveCustodyStatuses()).thenReturn(buildCustodyStatuses()); + when(referenceDataQueryService.retrieveBailStatuses()).thenReturn(buildBailStatuses()); + when(referenceDataQueryService.retrieveProsecutors(any(String.class))).thenReturn(getProsecutorsReferenceData()); + when(referenceDataQueryService.getProsecutorById(any(UUID.class))).thenReturn(getProsecutorsReferenceData()); + when(referenceDataQueryService.retrieveOrganisationUnitWithCourtroom(anyString())).thenReturn(ofNullable(organisationUnitWithCourtroomReferenceData().build())); + when(referenceDataQueryService.retrieveSummonsCodes()).thenReturn(buildSummonsCodeReferenceData()); + when(referenceDataQueryService.getCaseMarkerDetails()).thenReturn(buildCaseMarkers()); + when(referenceDataQueryService.getInitiationCodes()).thenReturn(of("J", "C", SUMMONS_INITIATION_CODE)); + when(referenceDataQueryService.retrieveOffenceData(any(Offence.class), any(String.class))).thenReturn(of(offenceReferenceData().withCjsOffenceCode(OFFENCE_CODE).build())); + when(referenceDataQueryService.retrieveOffencesByType("VP")).thenReturn(Collections.singletonList(MojOffences.mojOffences().withOffenceId(offenceId).withCjsOffenceCode(OFFENCE_CODE).build())); + + prosecutionCaseFile = new ProsecutionCaseFile(); + + offenceId = randomUUID(); + } + + @Test + public void shouldCreateCCCaseWithWarningsForCPPI() { + final LocalDate offenceCommittedDate = of(2018, 3, 2); + final LocalDate offenceChargeDate = of(2018, 11, 2); + + final Stream objectStream = prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate.minusMonths(4), PROSECUTOR_DEFENDANT_REFERENCE_TWO))), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + + final List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(1)); + + final Optional firstMatchingEvent = getFirstMatching(eventList, CcCaseReceivedWithWarnings.class); + + assertThat(firstMatchingEvent.get().getDefendantWarnings().size(), is(1)); + assertThat(firstMatchingEvent.get().getDefendantWarnings().get(0).getProsecutorDefendantReference(), is(PROSECUTOR_DEFENDANT_REFERENCE_ONE)); + } + + @Test + public void shouldRaiseCaseValidationWarningsWithProsecutorDefendantReference() { + final LocalDate offenceCommittedDate = of(2018, 3, 2); + final LocalDate offenceChargeDate = of(2018, 11, 2); + + final Stream objectStream = prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendantWithAsnAndOffence(offenceCommittedDate, offenceChargeDate, + ARREST_SUMMON_NUMBER))), + new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + final List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(1)); + + final Optional firstMatchingEvent = getFirstMatching(eventList, CcCaseReceivedWithWarnings.class); + + assertThat(firstMatchingEvent.get().getDefendantWarnings().size(), is(1)); + assertThat(firstMatchingEvent.get().getDefendantWarnings().get(0).getProsecutorDefendantReference(), is(ARREST_SUMMON_NUMBER)); + } + + @Test + public void shouldRaiseCaseRejectedWWithProsecutorDefendantReference() { + final LocalDate offenceCommittedDate = of(2018, 3, 2); + final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( + of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), CPPI, "C"); + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(referenceData).build()); + final ProsecutionWithReferenceData subsequentReferenceData = getProsecutionWithReferenceData( + of(buildDefendantWithOffence(offenceCommittedDate, now().plusYears(1), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), CPPI, "C"); + + final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List eventList = objectStream.collect(toList()); + + final Optional ccProsecutionRejected = getFirstMatching(eventList, CcProsecutionRejected.class); + + assertThat(ccProsecutionRejected.isPresent(), is(true)); + assertThat(ccProsecutionRejected.get().getCaseErrors(), hasSize(1)); + assertThat(ccProsecutionRejected.get().getDefendantErrors().size(), is(1)); + assertThat(ccProsecutionRejected.get().getDefendantErrors().get(0).getProsecutorDefendantReference(), is(PROSECUTOR_DEFENDANT_REFERENCE_TWO)); + } + + @Test + public void shouldCreateCCCaseWithCivilFeesAndWarningsForCPPI() { + final LocalDate offenceCommittedDate = of(2018, 3, 2); + final LocalDate offenceChargeDate = of(2018, 11, 2); + + final Stream objectStream = prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceDataAndCivilFees(of(buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate.minusMonths(4), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), CPPI, false, Collections.emptyList()), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + + final List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(1)); + + final Optional firstMatchingEvent = getFirstMatching(eventList, CcCaseReceivedWithWarnings.class); + + assertThat(firstMatchingEvent.get().getDefendantWarnings().size(), is(1)); + assertThat(firstMatchingEvent.get().getDefendantWarnings().get(0).getProsecutorDefendantReference(), is(PROSECUTOR_DEFENDANT_REFERENCE_ONE)); + } + + @ParameterizedTest + @MethodSource("provideParametersForCCCaseTest") + void shouldCreateCCCaseWithCivilFeesAndWarningsForCivil(String paymentRef, String actualFeeStatus, String expectedFeeStatus) { + final LocalDate offenceCommittedDate = of(2018, 3, 2); + final LocalDate offenceChargeDate = of(2018, 11, 2); + + List civilFees = new ArrayList<>(); + //if (!paymentRef.isEmpty()) { + civilFees.add(CivilFees.civilFees().withPaymentReference(paymentRef).withFeeStatus(actualFeeStatus).build()); + // } + + final ProsecutionWithReferenceData prosecutionWithReferenceDataAndCivilFees = getProsecutionWithReferenceDataAndCivilFees(of(buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate.minusMonths(4), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), CIVIL, true, civilFees); + + final Stream objectStream = prosecutionCaseFile.receiveCCCase(prosecutionWithReferenceDataAndCivilFees, new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + + final List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(1)); + + final Optional firstMatchingEvent = getFirstMatching(eventList, CcCaseReceivedWithWarnings.class); + + assertThat(firstMatchingEvent.get().getDefendantWarnings().size(), is(1)); + assertThat(firstMatchingEvent.get().getDefendantWarnings().get(0).getProsecutorDefendantReference(), is(PROSECUTOR_DEFENDANT_REFERENCE_ONE)); + + assertCivilFees(firstMatchingEvent, expectedFeeStatus); + } + + private void assertCivilFees(Optional firstMatchingEvent, String expectedStatus) { + String initialFeeStatus = firstMatchingEvent.get().getProsecutionWithReferenceData().getProsecution().getCaseDetails().getFeeStatus(); + assertThat(initialFeeStatus, is(expectedStatus)); + } + + private static Stream provideParametersForCCCaseTest() { + return Stream.of( + Arguments.of(null, null, FeeStatus.OUTSTANDING.name()), + Arguments.of("paymentRef01", null, FeeStatus.SATISFIED.name()), + Arguments.of("paymentRef02", FeeStatus.NOT_APPLICABLE.name(), FeeStatus.NOT_APPLICABLE.name()) + ); + } + + @Test + public void shouldCreateCCCaseWithWarningsForCPPIWithMultipleDefendants() { + final LocalDate offenceCommittedDate = of(2018, 3, 2); + final LocalDate offenceChargeDate = of(2018, 11, 2); + + final Stream objectStream = prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate.plusMonths(8), PROSECUTOR_DEFENDANT_REFERENCE_TWO))), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + + final List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(1)); + assertThat(eventList.get(0), is(instanceOf(CcCaseReceivedWithWarnings.class))); + + final CcCaseReceivedWithWarnings ccCaseReceivedWithWarnings = (CcCaseReceivedWithWarnings) eventList.get(0); + assertThat(ccCaseReceivedWithWarnings.getDefendantWarnings().size(), is(2)); + assertThat(ccCaseReceivedWithWarnings.getDefendantWarnings().get(0).getProsecutorDefendantReference(), is(PROSECUTOR_DEFENDANT_REFERENCE_ONE)); + assertThat(ccCaseReceivedWithWarnings.getDefendantWarnings().get(1).getProsecutorDefendantReference(), is(PROSECUTOR_DEFENDANT_REFERENCE_TWO)); + } + + @Test + public void shouldCreateCCCaseWithOffenceNotInEffectWarningForCPPI() { + + final String offenceStartDateRefData = of(2018, 5, 2).toString(); + final String offenceEndDateRefData = of(2018, 12, 2).toString(); + + final LocalDate offenceCommittedDate = of(2018, 3, 2); + final LocalDate offenceChargeDate = of(2018, 6, 2); + final ProsecutionWithReferenceData prosecutionWithReferenceData = getProsecutionWithReferenceData(of(buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendantWithOffence(offenceCommittedDate.plusMonths(4), offenceChargeDate.plusMonths(2), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), offenceStartDateRefData, offenceEndDateRefData); + + final Stream objectStream = prosecutionCaseFile.receiveCCCase(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + + final List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(1)); + assertThat(eventList.get(0), is(instanceOf(CcCaseReceivedWithWarnings.class))); + + final CcCaseReceivedWithWarnings ccCaseReceivedWithWarnings = (CcCaseReceivedWithWarnings) eventList.get(0); + assertThat(ccCaseReceivedWithWarnings.getDefendantWarnings().size(), is(1)); + + final DefendantProblem defendantProblem = ccCaseReceivedWithWarnings.getDefendantWarnings().get(0); + assertThat(defendantProblem.getProsecutorDefendantReference(), is(PROSECUTOR_DEFENDANT_REFERENCE_ONE)); + assertThat(defendantProblem.getProblems().get(0).getCode(), is(OFFENCE_NOT_IN_EFFECT_ON_OFFENCE_COMMITTED_DATE)); + } + + @Test + public void shouldNotCreateCCCaseWithWarningsForSPI() { + final LocalDate offenceCommittedDate = of(2018, 3, 2); + final LocalDate offenceChargeDate = of(2018, 11, 2); + final Stream objectStream = prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + final List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(3)); + assertThat(eventList.get(0), is(instanceOf(DefendantValidationPassed.class))); + assertThat(eventList.get(1), is(instanceOf(DefendantValidationPassed.class))); + assertThat(eventList.get(2), is(instanceOf(CcCaseReceived.class))); + } + + @Test + public void shouldRaiseDefendantsParkedForSummonsApplicationApprovalEventForSubsequentMessages() { + final LocalDate offenceCommittedDate = of(2018, 3, 2); + final LocalDate offenceChargeDate = of(2018, 11, 2); + + final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( + of(buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, SUMMONS_INITIATION_CODE); + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(firstMessage).build()); + + final UUID externalIdForSecondMessage = randomUUID(); + final ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, randomAlphabetic(10))), SPI, SUMMONS_INITIATION_CODE, externalIdForSecondMessage); + final Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + final List eventList = objectStream.collect(toList()); + final Optional firstMatchingEvent = getFirstMatching(eventList, DefendantsParkedForSummonsApplicationApproval.class); + assertThat(eventList.size(), is(2)); + assertThat(firstMatchingEvent.isPresent(), is(true)); + assertThat(firstMatchingEvent.get().getProsecutionWithReferenceData().getExternalId(), is(externalIdForSecondMessage)); + } + + @Test + public void shouldUpdateCaseWhenNoAssociatedDefendant() { + prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), buildDefendant(" ", SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), "C"), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + + final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(" ").withOucode(ouCode).withSurname(SURNAME).build(); + + prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); + + final Stream objectStream = prosecutionCaseFile.caseUpdated(); + final List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(0)); + } + + @Test + public void shouldExpirePendingIDPCMaterial() { + prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(" ", SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + + final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(" ").withOucode(ouCode).withSurname(SURNAME).build(); + + prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); + final Stream objectStream = prosecutionCaseFile.expirePendingIdpcMaterial(materialId, ZonedDateTime.now()); + final List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(1)); + assertThat(eventList.get(0), is(instanceOf(IdpcMaterialRejected.class))); + + } + + + @Test + public void shouldRaiseIdpcDefendantMatchPendingEventMultipleSurnameMatchAndEmptyFirstNameAndValidDOB() { + + prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(" ", SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + + final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(" ").withOucode(ouCode).withSurname(SURNAME).build(); + + final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); + assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); + } + + @Test + public void shouldRaiseIdpcDefendantMatchPendingEventSurnameEmptyAndValidFirstnameAndDOB() { + prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, " ", BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), "C"), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + + final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(null).withOucode(ouCode).withSurname(" ").build(); + + final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); + assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); + } + + @Test + public void shouldRaiseIdpcDefendantMatchPendingEventMultipleSurnameMatchButMissingFirstNameAndDOB() { + prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(null).withOucode(ouCode).withSurname(SURNAME).build(); + final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); + assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); + } + + @Test + public void shouldRaiseIdpcDefendantMatchPendingEventMultipleSurnameMatchButMissingFirstName() { + prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(null).withOucode(ouCode).withSurname(SURNAME).build(); + final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); + assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); + } + + @Test + public void shouldRaiseIdpcDefendantMatchPendingEventWhenNoMatch() { + prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), "C"), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(null).withForenames(FORENAME + 2).withOucode(ouCode).withSurname(SURNAME + 2).build(); + final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); + assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); + } + + @Test + public void shouldRaiseIdpcDefendantMatchPendingEventWhenMultipleSurnameFirstDOBNameMatch() { + + prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + + final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(FORENAME).withOucode(ouCode).withSurname(SURNAME).build(); + + final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); + assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); + } + + @Test + public void shouldRaiseIdpcDefendantMatchPendingEventWhenMultipleSurnameFirstNameMatchButNoOtherMatch() { + prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(null).withForenames(FORENAME).withOucode(ouCode).withSurname(SURNAME).build(); + final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); + assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); + } + + @Test + public void shouldRaiseIdpcDefendantMatchPendingEventWhenMultipleSurnameMatchButNoOtherMatch() { + prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(SECOND_FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(null).withForenames(FORENAME + 1).withOucode(ouCode).withSurname(SURNAME).build(); + final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); + assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); + } + + @Test + public void shouldRaiseIdpcDefendantMatchPendingEventWhenOnlyDateOfBirthMatched() { + final ProsecutionWithReferenceData prosecutionWithReferenceData = getProsecutionWithReferenceData(MCC, false); + prosecutionCaseFile.receiveSjpProsecution(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(null).withForenames(FORENAME).withOucode(ouCode).withSurname(SURNAME + 1).build(); + final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); + assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatchPending.class); + } + + @Test + public void shouldRaiseIdpcDefendantMatchedEventWhenSurnameMatched() { + final ProsecutionWithReferenceData prosecutionWithReferenceData = getProsecutionWithReferenceData(MCC, false); + prosecutionCaseFile.receiveSjpProsecution(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(FORENAME).withOucode(ouCode).withSurname(SURNAME).build(); + final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(prosecutionWithReferenceData.getProsecution().getCaseDetails().getCaseId(), URN, materialId, materialType, defendant); + assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatched.class); + } + + @Test + public void shouldRaiseIdpcDefendantMatchedEventWhenSurnameMatchWithWhiteSpaceCharacterAtStartAndEnd() { + final ProsecutionWithReferenceData prosecutionWithReferenceData = getProsecutionWithReferenceData(MCC, false); + prosecutionCaseFile.receiveSjpProsecution(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(FORENAME).withOucode(ouCode).withSurname(" " + SURNAME + " ").build(); + final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(prosecutionWithReferenceData.getProsecution().getCaseDetails().getCaseId(), URN, materialId, materialType, defendant); + assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatched.class); + } + + @Test + public void shouldRaiseIdpcDefendantMatchedEventWhenFornamesMatch() { + prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(SECOND_FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), "C"), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(SECOND_BIRTH_DATE.toString()).withForenames(FORENAME).withOucode(ouCode).withSurname(SURNAME).build(); + final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); + assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatched.class); + } + + @Test + public void shouldRaiseIdpcDefendantMatchedEventWhenFornamesMatchedWithWhiteSpaceCharacherAtStart() { + prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(SECOND_FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), "C"), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(SECOND_BIRTH_DATE.toString()).withForenames(" " + FORENAME).withOucode(ouCode).withSurname(SURNAME).build(); + final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); + assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatched.class); + } + + @Test + public void shouldRaiseIdpcDefendantMatchEventWhenDOBMatched() { + prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), buildDefendant(FORENAME, SURNAME, SECOND_BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), "C"), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(SECOND_BIRTH_DATE.toString()).withForenames(FORENAME).withOucode(ouCode).withSurname(SURNAME).build(); + final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, materialId, materialType, defendant); + assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatched.class); + } + + @Test + public void shouldRaiseIdpcMaterialReceivedEvent() { + final UUID materialId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(SECOND_BIRTH_DATE.toString()).withForenames(FORENAME).withOucode(ouCode).withSurname(SURNAME).build(); + final Stream objectStream = prosecutionCaseFile.populateIdpcMaterialReceived(CASE_ID, URN, materialId, materialType, defendant); + assertThatTheEventReturnedIsOfType(objectStream, IdpcMaterialReceived.class); + } + + @Test + public void shouldRaiseDefendantIdpcAlreadyExitsEventWhenDefendantIdpcIsPresent() { + prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData(of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(FORENAME, SURNAME, SECOND_BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "C"), new ArrayList<>(), new ArrayList<>(), + referenceDataQueryService); + final UUID fileServiceId = fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf"); + final String materialType = "IDPC"; + final String ouCode = "B01AF00"; + final Defendant defendant = new Defendant.Builder().withDefendantId(DEFENDANT_ID).withDob(BIRTH_DATE.toString()).withForenames(FORENAME).withOucode(ouCode).withSurname(SURNAME).build(); + final Stream objectStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, fileServiceId, materialType, defendant); + assertThatTheEventReturnedIsOfType(objectStream, IdpcDefendantMatched.class); + final Stream defendantIdpcAlreadyExistsStream = prosecutionCaseFile.addIdpcCaseMaterial(CASE_ID, URN, fileServiceId, materialType, defendant); + assertThatTheEventReturnedIsOfType(defendantIdpcAlreadyExistsStream, DefendantIdpcAlreadyExists.class); + } + + @Test + public void shouldRaiseBulkScanMaterialRejectedEvent() { + final ZonedDateTime now = ZonedDateTime.now(); + final UUID fileStoreId = randomUUID(); + prosecutionCaseFile.addMaterial(randomUUID(), "B01AF00", randomUUID().toString(), + new Material("SJPN", fileStoreId, "pdf", false), + referenceDataQueryService, false, null); + final Stream objectStream = prosecutionCaseFile.expireBulkScanPendingMaterial(fileStoreId, now); + assertThatTheEventReturnedIsOfType(objectStream, BulkscanMaterialRejected.class); + } + + @Test + public void shouldRaiseMaterialAddedEventsWhenCaseIsAccepted() { + ReflectionUtil.setField(prosecutionCaseFile, "prosecutionAccepted", TRUE); + final UUID fileStoreId = randomUUID(); + final Stream objectStream = prosecutionCaseFile.addMaterials(randomUUID(), "B01AF00", randomUUID().toString(), + singletonList(new Material("SJPN", fileStoreId, "pdf", false)), + referenceDataQueryService, false, null); + assertThatTheEventReturnedIsOfType(objectStream, MaterialAdded.class); + } + + @Test + public void shouldRaiseMaterialPendingEventsWhenCaseIsNotAccepted() { + ReflectionUtil.setField(prosecutionCaseFile, "prosecutionAccepted", FALSE); + final UUID fileStoreId = randomUUID(); + final Stream objectStream = prosecutionCaseFile.addMaterials(randomUUID(), "B01AF00", randomUUID().toString(), + asList(new Material("SJPN", fileStoreId, "pdf", false), new Material("PLEA", fileStoreId, "pdf", false)), + referenceDataQueryService, false, null); + assertThatTheEventReturnedIsOfType(objectStream, MaterialPending.class, 2); + } + + @Test + public void shouldRaiseBulkScanMaterialRejectedEventV2() { + final ZonedDateTime now = ZonedDateTime.now(); + final UUID fileStoreId = randomUUID(); + prosecutionCaseFile.addMaterialV2(AddMaterialCommonV2.addMaterialCommonV2() + .withMaterial(fileStoreId) + .build(), + referenceDataQueryService); + final Stream objectStream = prosecutionCaseFile.expireBulkScanPendingMaterial(fileStoreId, now); + assertThatTheEventReturnedIsOfType(objectStream, BulkscanMaterialRejected.class); + } + + @ParameterizedTest + @MethodSource("validChannels") + public void shouldRaiseDefendantsParkedForSummonsApplicationApprovalEventWhenInitiationCodeIsS(final Channel validChannel) { + final LocalDate offenceCommittedDate = of(2018, 3, 2); + final LocalDate offenceChargeDate = of(2018, 11, 2); + + final Stream objectStream = prosecutionCaseFile.receiveCCCase(getProsecutionWithReferenceData( + of(buildDefendantWithOffence(offenceCommittedDate, offenceChargeDate, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(FORENAME, SURNAME, BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), validChannel, SUMMONS_INITIATION_CODE), newArrayList(), newArrayList(), referenceDataQueryService); + + final List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(SPI == validChannel ? 3 : 1)); + final Optional firstMatching = getFirstMatching(eventList, DefendantsParkedForSummonsApplicationApproval.class); + assertThat(firstMatching.get(), notNullValue()); + assertThat(firstMatching.get().getProsecutionWithReferenceData().getExternalId(), is(EXTERNAL_ID)); + } + + @Test + public void shouldRaiseProsecutionCaseUnSupportedEventWhenMultipleDefendantsProsecutionReceivedForSjpCaseViaSpiChannel() { + final ProsecutionWithReferenceData prosecutionWithReferenceData = getProsecutionWithReferenceData(SPI, true); + final Stream objectStream = prosecutionCaseFile.receiveSjpProsecution(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(1)); + assertThat(eventList.get(0), is(instanceOf(ProsecutionCaseUnsupported.class))); + final ProsecutionCaseUnsupported eventObject = (ProsecutionCaseUnsupported) eventList.get(0); + assertThat(eventObject.getErrorMessage(), containsString("Multiple Defendants Found")); + } + + @ParameterizedTest + @MethodSource("rejectSubsequentNonSjpInitiationCodes") + public void shouldRaiseProsecutionCaseUnsupportedEventWhenMultipleMessagesReceivedForSjpCaseViaSpiChannel(final String initialInitiationCode, final String newInitiationCode) { + + final ProsecutionWithReferenceData prosecutionWithReferenceData = getSjpProsecutionWithReferenceData(initialInitiationCode); + + final Stream objectStream = prosecutionCaseFile.receiveSjpProsecution(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List events = objectStream.collect(toList()); + assertThat(events.size(), is(1)); + + final ProsecutionWithReferenceData subsequentProsecutionWithReferenceData = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), newInitiationCode); + final Stream newObjectStream = prosecutionCaseFile.receiveCCCase(subsequentProsecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List eventList = newObjectStream.collect(toList()); + final ProsecutionCaseUnsupported eventObject = (ProsecutionCaseUnsupported) eventList.get(0); + + assertThat(eventList.size(), is(1)); + assertThat(eventObject.getErrorMessage(), containsString(format("Original Case with initiation code %s has received a case update with different case initiation code %s", initialInitiationCode, newInitiationCode))); + assertThat(eventObject.getUrn(), is(subsequentProsecutionWithReferenceData.getProsecution().getCaseDetails().getProsecutorCaseReference())); + assertThat(eventObject.getPoliceSystemId(), is(subsequentProsecutionWithReferenceData.getProsecution().getCaseDetails().getPoliceSystemId())); + assertThat(eventObject.getChannel(), is(SPI)); + assertThat(eventObject.getExternalId(), is(subsequentProsecutionWithReferenceData.getExternalId())); + + assertThat(eventList.size(), is(1)); + + } + @Test + public void shouldRaiseProsecutionCaseUnsupportedEventWhenDuplicateMessageReceivedForSjpWithNewDefendant() { + + final ProsecutionWithReferenceData prosecutionWithReferenceData = getSjpProsecutionWithReferenceData("J"); + + final Stream objectStream = prosecutionCaseFile.receiveSjpProsecution(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List events = objectStream.collect(toList()); + assertThat(events.size(), is(1)); + + final ProsecutionWithReferenceData subsequentProsecutionWithReferenceData = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), "J"); + final Stream newObjectStream = prosecutionCaseFile.receiveSjpProsecution(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List eventList = newObjectStream.collect(toList()); + final ProsecutionCaseUnsupported eventObject = (ProsecutionCaseUnsupported) eventList.get(0); + + assertThat(eventList.size(), is(1)); + assertThat(eventObject.getErrorMessage(), containsString("Multiple Defendants Found")); + assertThat(eventObject.getPoliceSystemId(), is(subsequentProsecutionWithReferenceData.getProsecution().getCaseDetails().getPoliceSystemId())); + assertThat(eventObject.getChannel(), is(SPI)); + assertThat(eventObject.getExternalId(), is(subsequentProsecutionWithReferenceData.getExternalId())); + assertThat(eventList.size(), is(1)); + } + + public void shouldNotRaiseProsecutionCaseUnsupportedEventWhenMultipleMessagesReceivedForSjpCaseViaSpiChannel(final String initialInitiationCode, final String newInitiationCode) { + + final ProsecutionWithReferenceData prosecutionWithReferenceData = getSjpProsecutionWithReferenceData(initialInitiationCode); + + final Stream objectStream = prosecutionCaseFile.receiveSjpProsecution(prosecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List events = objectStream.collect(toList()); + assertThat(events.size(), is(1)); + + final ProsecutionWithReferenceData subsequentProsecutionWithReferenceData = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), newInitiationCode); + final Stream newObjectStream = prosecutionCaseFile.receiveCCCase(subsequentProsecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List eventList = newObjectStream.collect(toList()); + final ProsecutionCaseUnsupported eventObject = (ProsecutionCaseUnsupported) eventList.get(0); + + assertThat(eventList.size(), is(1)); + assertThat(eventObject.getErrorMessage(), containsString(format("Original Case with initiation code %s has received a case update with different case initiation code %s", initialInitiationCode, newInitiationCode))); + assertThat(eventObject.getUrn(), is(subsequentProsecutionWithReferenceData.getProsecution().getCaseDetails().getProsecutorCaseReference())); + assertThat(eventObject.getPoliceSystemId(), is(subsequentProsecutionWithReferenceData.getProsecution().getCaseDetails().getPoliceSystemId())); + assertThat(eventObject.getChannel(), is(SPI)); + assertThat(eventObject.getExternalId(), is(subsequentProsecutionWithReferenceData.getExternalId())); + + assertThat(eventList.size(), is(1)); + + } + + @ParameterizedTest + @MethodSource("rejectSubsequentSjpInitiationCodes") + public void shouldRaiseProsecutionCaseUnsupportedWhenSubsequentSJPMessageWithDifferentInitiationCodeReceived(final String initialInitiationCode, final String newInitiationCode) { + final ProsecutionWithReferenceData initialProsecutionReferenceData = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, initialInitiationCode); + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(initialProsecutionReferenceData).build()); + + final ProsecutionWithReferenceData subsequentProsecutionWithReferenceData = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), newInitiationCode); + final Stream objectStream = prosecutionCaseFile.receiveSjpProsecution(subsequentProsecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List eventList = objectStream.collect(toList()); + final ProsecutionCaseUnsupported eventObject = (ProsecutionCaseUnsupported) eventList.get(0); + + assertThat(eventList.size(), is(1)); + assertThat(eventObject.getErrorMessage(), containsString("Multiple Defendants Found")); + assertThat(eventObject.getUrn(), is(subsequentProsecutionWithReferenceData.getProsecution().getCaseDetails().getProsecutorCaseReference())); + assertThat(eventObject.getPoliceSystemId(), is(subsequentProsecutionWithReferenceData.getProsecution().getCaseDetails().getPoliceSystemId())); + assertThat(eventObject.getChannel(), is(SPI)); + assertThat(eventObject.getExternalId(), is(subsequentProsecutionWithReferenceData.getExternalId())); + + assertThat(eventList.size(), is(1)); + } + + @ParameterizedTest + @MethodSource("allowSummonsCodeWithSubsequentNonSjpInitiationCodes") + public void shouldNotRaiseProsecutionCaseUnsupportedWhenSubsequentSPiMessageISDifferentToSummonsInitiationCode(final String initialInitiationCode + , String newInitiationCode) { + final ProsecutionWithReferenceData initialProsecutionReferenceData = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, initialInitiationCode); + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(initialProsecutionReferenceData).build()); + + final ProsecutionWithReferenceData subsequentProsecutionWithReferenceData = getProsecutionWithReferenceData( + of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), newInitiationCode); + final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentProsecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(2)); + } + + @ParameterizedTest + @MethodSource("allowWithSubsequentNonSjpInitiationCodes") + public void shouldAddDefendantWhenSubsequentSPiMessageIsDifferentToInitialInitiationCode(final String initialInitiationCode + , String newInitiationCode) { + + final ProsecutionWithReferenceData initialProsecutionReferenceData = getProsecutionWithReferenceData( + of(buildDefendantWithInitiationCode(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, initialInitiationCode)), SPI, initialInitiationCode); + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(initialProsecutionReferenceData).build()); + + final ProsecutionWithReferenceData subsequentProsecutionWithReferenceData = getProsecutionWithReferenceData( + of(buildDefendantWithInitiationCode(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO, newInitiationCode)), newInitiationCode); + final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentProsecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + final List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(2)); + ProsecutionDefendantsAdded prosecutionDefendantsAdded = (ProsecutionDefendantsAdded) eventList.get(1); + assertThat(prosecutionDefendantsAdded.getDefendants().size(), is(1)); + assertThat(prosecutionDefendantsAdded.getDefendants().get(0).getInitiationCode(), is(newInitiationCode)); + } + @ParameterizedTest + @MethodSource("defendantsParkedForSummonsApprovalFollowingNonSjpInitiationCodes") + public void shouldParkDefendantsForSummonsApprovalWhenSubsequentSPiMessageIsSummonsInitiationCode(final String initialInitiationCode + , String newInitiationCode) { + // given + final ProsecutionWithReferenceData initialProsecutionReferenceData = getProsecutionWithReferenceData( + of(buildDefendantWithInitiationCode(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, initialInitiationCode)), SPI, initialInitiationCode); + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(initialProsecutionReferenceData).build()); + + final ProsecutionWithReferenceData subsequentProsecutionWithReferenceData = getProsecutionWithReferenceData( + of(buildDefendantWithInitiationCode(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO, newInitiationCode)), newInitiationCode); + + //when + final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentProsecutionWithReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List eventList = objectStream.collect(toList()); + + //then + assertThat(eventList.size(), is(2)); + DefendantsParkedForSummonsApplicationApproval defendantsParkedForSummonsApplicationApproval = (DefendantsParkedForSummonsApplicationApproval) eventList.get(1); + assertThat(defendantsParkedForSummonsApplicationApproval.getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getInitiationCode(), is("S")); + } + + @ParameterizedTest + @MethodSource("addDefendantAfterSummonsRejectedWithSubsequentNonSjpInitiationCodes") + public void shouldAddDefendantWhenSummonsApplicationWithEarlierApplicationWasRejectedForSameCaseReceivedWithDifferentInitiationCodeViaSpiChannel( + final String initialInitiationCode, final String summonsInitiationCode, final String newInitiationCode) { + + // c -s- sr- q // q - s sr - c + final ProsecutionWithReferenceData initialProsecutionReferenceData = getProsecutionWithReferenceData( + of(buildDefendantWithInitiationCode(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, initialInitiationCode)), SPI, initialInitiationCode); + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(initialProsecutionReferenceData).build()); + + final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( + of(buildDefendantWithInitiationCode(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO, summonsInitiationCode)), SPI, summonsInitiationCode); + + final Stream objectStreamNew = prosecutionCaseFile.receiveCCCase(referenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List eventList1 = objectStreamNew.collect(toList()); + assertThat(eventList1.size(), is(2)); + DefendantsParkedForSummonsApplicationApproval defendantsParkedForSummonsApplicationApproval = (DefendantsParkedForSummonsApplicationApproval) eventList1.get(1); + assertThat(defendantsParkedForSummonsApplicationApproval.getProsecutionWithReferenceData().getProsecution().getDefendants().size(), is(1)); + + prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, referenceData, emptyList())); + prosecutionCaseFile.apply(new SummonsApplicationRejected(APPLICATION_ID, CASE_ID, newArrayList(fromString(SECOND_DEFENDANT_ID)), summonsRejectedOutcome().withReasons(ImmutableList.of("Rejection Reason")).build())); + + final String updatedSurname = STRING.next(); + final ProsecutionWithReferenceData subsequentReferenceDataForSameDefendant = getProsecutionWithReferenceData( + of(buildDefendantWithInitiationCode(FORENAME, updatedSurname, BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO, newInitiationCode)), SPI, newInitiationCode, EXTERNAL_ID_2); + final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceDataForSameDefendant, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + final List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(2)); + ProsecutionDefendantsAdded prosecutionDefendantsAdded = (ProsecutionDefendantsAdded) eventList.get(1); + assertThat(prosecutionDefendantsAdded.getDefendants().size(), is(1)); + assertThat(prosecutionDefendantsAdded.getDefendants().get(0).getInitiationCode(), is(newInitiationCode)); + } + @Test + public void shouldAddNewDefendantWhenSummonsApplicationIsApprovedToExistingCaseWithDifferentInitiationCodeViaSpiChannel() { + // Given first SummonsMessage with 2 defendants + final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, SUMMONS_INITIATION_CODE); + + final Stream objectStream1 = prosecutionCaseFile.receiveCCCase(firstMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List eventList1 = objectStream1.collect(toList()); + assertThat(eventList1, hasSize(3)); + DefendantsParkedForSummonsApplicationApproval defendantsParkedForSummonsApplicationApproval = (DefendantsParkedForSummonsApplicationApproval) eventList1.get(2); + assertThat(defendantsParkedForSummonsApplicationApproval.getProsecutionWithReferenceData().getProsecution().getDefendants().size(), is(2)); + // approve the application + final SummonsApplicationApprovedDetails secondSummonsApplicationApprovedDetails = getSummonsApplicationApprovedDetails(defendantsParkedForSummonsApplicationApproval.getApplicationId()); + final Stream objectStream = prosecutionCaseFile.approveCaseDefendants(secondSummonsApplicationApprovedDetails, of(), of(), isCivil); + + final List eventList = objectStream.collect(toList()); + assertThat(eventList, hasSize(1)); + + + // add a defendant + final ProsecutionWithReferenceData sameMessageWithDifferentInitiationCode = getProsecutionWithReferenceData( + of(buildDefendantWithInitiationCode(THIRD_FORENAME, THIRD_SURNAME, THIRD_BIRTH_DATE, THIRD_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_THREE, "C")), SPI, "C"); + + final Stream objectStream2 = prosecutionCaseFile.receiveCCCase(sameMessageWithDifferentInitiationCode, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List eventList2 = objectStream2.collect(toList()); + assertThat(eventList2, hasSize(2)); + assertThat(eventList2.get(0), is(instanceOf(DefendantValidationPassed.class))); + assertThat(eventList2.get(1), is(instanceOf(ProsecutionDefendantsAdded.class))); + } + + @Test + public void shouldRaiseNewCCCaseForSameDefendantWhenEarlierApplicationWasRejectedForSameCaseReceivedViaSpiChannel() { + final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( + of(buildDefendantWithInitiationCode(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "S")), SPI, "S"); + prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, referenceData, emptyList())); + prosecutionCaseFile.apply(new SummonsApplicationRejected(APPLICATION_ID, CASE_ID, newArrayList(fromString(DEFENDANT_ID)), summonsRejectedOutcome().withReasons(ImmutableList.of("Rejection Reason")).build())); + + final String updatedSurname = STRING.next(); + final ProsecutionWithReferenceData subsequentReferenceDataForSameDefendant = getProsecutionWithReferenceData( + of(buildDefendantWithInitiationCode(FORENAME, updatedSurname, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "Q")), SPI, "Q", EXTERNAL_ID_2); + final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceDataForSameDefendant, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + final List eventList = objectStream.collect(toList()); + assertThat(eventList, hasSize(2)); + final Optional firstMatching = getFirstMatching(eventList, CcCaseReceived.class); + assertThat(firstMatching.isPresent(), is(true)); + assertThat(firstMatching.get().getProsecutionWithReferenceData().getExternalId(), is(EXTERNAL_ID_2)); + assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getInitiationCode(), is("Q")); + assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(1)); + assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(DEFENDANT_ID)); + assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getIndividual().getPersonalInformation().getFirstName(), is(FORENAME)); + assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getIndividual().getPersonalInformation().getLastName(), is(updatedSurname)); + } + + + @Test + public void shouldAddSpiChannelDefendantsWhenSubsequentMessagesReceivedWithKnownAndUniqueDifferentDefendants() { + final ProsecutionWithReferenceData initialCaseMessage = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, "C"); + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(initialCaseMessage).build()); + final String thirdDefendantId = randomUUID().toString(); + final ProsecutionWithReferenceData subsequentCaseMessage = getProsecutionWithReferenceData( + of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO), + buildDefendant(FORENAME, SURNAME, BIRTH_DATE, thirdDefendantId, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, "C"); + final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentCaseMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List eventList = objectStream.collect(toList()); + + final Optional newDefendantMatchingEvent = getFirstMatching(eventList, ProsecutionDefendantsAdded.class); + assertThat(newDefendantMatchingEvent.isPresent(), is(true)); + assertThat(newDefendantMatchingEvent.get(), notNullValue()); + assertThat(newDefendantMatchingEvent.get().getDefendants().get(0).getId(), is(SECOND_DEFENDANT_ID)); + + final Optional duplicateDefendantMatchingEvent = getFirstMatching(eventList, CaseReceivedWithDuplicateDefendants.class); + assertThat(duplicateDefendantMatchingEvent.isPresent(), is(true)); + assertThat(duplicateDefendantMatchingEvent.get(), notNullValue()); + assertThat(duplicateDefendantMatchingEvent.get().getDefendants().get(0).getId(), is(thirdDefendantId)); + } + + @Test + public void shouldRaiseCaseReceivedWithDuplicateDefendantsWhenSubsequentSPIMessagesReceivedWithKnownDefendants() { + final ProsecutionWithReferenceData initialReferenceData = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, "C"); + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(initialReferenceData).build()); + final ProsecutionWithReferenceData subsequentReferenceData = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, "C"); + final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List eventList = objectStream.collect(toList()); + assertThat(eventList.get(0), is(instanceOf(CaseReceivedWithDuplicateDefendants.class))); + } + + @Test + public void shouldNotDeduplicateDefendantsWhenCPPIMessageReceivedWithDuplicateDefendants() { + final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE) + ), CPPI, "C"); + final Stream objectStream = prosecutionCaseFile.receiveCCCase(referenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List eventList = objectStream.collect(toList()); + assertThat(eventList.get(0), is(instanceOf(CcCaseReceived.class))); + + final CcCaseReceived ccCaseReceived = (CcCaseReceived) eventList.get(0); + final List defendants = ccCaseReceived.getProsecutionWithReferenceData().getProsecution().getDefendants(); + assertThat(defendants.size(), is(2)); + assertThat(defendants.get(0).getId(), is(DEFENDANT_ID)); + assertThat(defendants.get(1).getId(), is(SECOND_DEFENDANT_ID)); + } + + @Test + public void shouldRaiseDefendantValidationFailedWhenSubsequentSPIMessagesReceivedWithInvalidDefendants() { + final LocalDate offenceCommittedDate = of(2018, 3, 2); + final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( + of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, "C"); + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(referenceData).build()); + final ProsecutionWithReferenceData subsequentReferenceData = getProsecutionWithReferenceData( + of(buildDefendantWithOffence(offenceCommittedDate, now().plusYears(1), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, "C"); + final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List eventList = objectStream.collect(toList()); + assertThat(eventList.get(0), is(instanceOf(DefendantValidationFailed.class))); + } + + @MethodSource("nonSpiChannels") + @ParameterizedTest + public void shouldRaiseCaseRejectedWhenFirstCPPIMessagesReceivedWithInvalidDefendants(final Channel channel) { + final LocalDate offenceCommittedDate = of(2018, 3, 2); + final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( + of(buildDefendantWithOffence(offenceCommittedDate, now().plusYears(1), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), channel, "C"); + final Stream objectStream = prosecutionCaseFile.receiveCCCase(firstMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + final List eventList = objectStream.collect(toList()); + final Optional eventObject = getFirstMatching(eventList, CcProsecutionRejected.class); + + assertThat(eventObject.isPresent(), is(true)); + assertThat(eventObject.get().getCaseErrors(), hasSize(0)); + assertThat(eventObject.get().getDefendantErrors(), hasSize(greaterThan(0))); + } + + @Test + public void shouldRaiseCaseRejectedWhenSubsequentCPPIMessagesReceived() { + final LocalDate offenceCommittedDate = of(2018, 3, 2); + final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( + of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), CPPI, "C"); + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(referenceData).build()); + final ProsecutionWithReferenceData subsequentReferenceData = getProsecutionWithReferenceData( + of(buildDefendantWithOffence(offenceCommittedDate, now().plusYears(1), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), CPPI, "C"); + final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + final List eventList = objectStream.collect(toList()); + + final Optional event = getFirstMatching(eventList, CcProsecutionRejected.class); + + assertThat(event.isPresent(), is(true)); + assertThat(event.get().getCaseErrors(), hasSize(1)); + assertThat(event.get().getDefendantErrors(), hasSize(greaterThan(0))); + } + + @Test + public void shouldRaiseCaseValidationFailedForFirstSPIMessageFoundWithErrors() { + final LocalDate offenceCommittedDate = of(2018, 3, 2); + final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( + of(buildDefendantWithOffence(offenceCommittedDate, now().plusYears(1), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, "C"); + final Stream objectStream = prosecutionCaseFile.receiveCCCase(firstMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + final List eventList = objectStream.collect(toList()); + final Optional caseValidationFailedEvent = getFirstMatching(eventList, CaseValidationFailed.class); + final Optional defendantValidationFailedEvent = getFirstMatching(eventList, DefendantValidationFailed.class); + assertThat(caseValidationFailedEvent.isPresent(), is(true)); + assertThat(defendantValidationFailedEvent.isPresent(), is(true)); + } + + @Test + public void shouldRaiseDefendantsReceivedNotAddedForSubsequentMessageWhenInitialSPIMessageFoundWithErrors() { + final LocalDate offenceCommittedDate = of(2018, 3, 2); + final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( + of(buildDefendantWithOffence(offenceCommittedDate, now().plusYears(1), PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, "C"); + prosecutionCaseFile.apply(new CaseValidationFailed(referenceData.getProsecution(), ImmutableList.of(new Problem("CODE", new ArrayList<>())), randomUUID(), getInitialHearing())); + final ProsecutionWithReferenceData subsequentReferenceData = getProsecutionWithReferenceData( + of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, "C"); + + final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + final List eventList = objectStream.collect(toList()); + assertThat(eventList.get(0), is(instanceOf(DefendantValidationPassed.class))); + assertThat(eventList.get(1), is(instanceOf(DefendantsReceivedNotAdded.class))); + } + + @Test + public void shouldCreateSingleSummonsApplicationWithAllParkedDefendantsOnceInitialCaseErrorsAreClearedForSPIChannel() { + final ProsecutionWithReferenceData firstMessage = getProsecutionWithMixedValidAndInvalidCaseMarkerRefData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE))); + + prosecutionCaseFile.apply(new CaseValidationFailed(firstMessage.getProsecution(), of(new Problem("CASE_MARKER_IS_INVALID", of( + new ProblemValue("0", "caseMarkers", VALID_CASE_MARKER_CODE), new ProblemValue("1", "caseMarkers", INVALID_CASE_MARKER_CODE)))), EXTERNAL_ID, getInitialHearing())); + + final ProsecutionWithReferenceData secondMessage = getProsecutionWithValidCaseMarker( + of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO))); + + final Stream receiveCCCaseObjectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + List eventList = receiveCCCaseObjectStream.collect(toList()); + assertThat(eventList, hasSize(2)); + assertThat(eventList.get(0), is(instanceOf(DefendantValidationPassed.class))); + assertThat(eventList.get(1), is(instanceOf(DefendantsReceivedNotAdded.class))); + + // correct error for first message + final Stream receiveErrorCorrectionsObjectStream = prosecutionCaseFile.receiveErrorCorrections(getCaseMarkerCorrectedField(), objectToJsonObjectConverter, + jsonObjectToObjectConverter, of(initiationTypesRefDataEnricher), new ArrayList<>(), referenceDataQueryService); + + eventList = receiveErrorCorrectionsObjectStream.collect(toList()); + assertThat(eventList, hasSize(5)); + assertThat(eventList.get(0), is(instanceOf(DefendantValidationPassed.class))); + assertThat(((DefendantValidationPassed) eventList.get(0)).getDefendantId().toString(), is(DEFENDANT_ID)); + assertThat(eventList.get(1), is(instanceOf(DefendantValidationPassed.class))); + assertThat(((DefendantValidationPassed) eventList.get(1)).getDefendantId().toString(), is(SECOND_DEFENDANT_ID)); + assertThat(eventList.get(2), is(instanceOf(DefendantsParkedForSummonsApplicationApproval.class))); + assertThat(((DefendantsParkedForSummonsApplicationApproval) eventList.get(2)).getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(2)); + assertThat(((DefendantsParkedForSummonsApplicationApproval) eventList.get(2)).getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(DEFENDANT_ID)); + assertThat(((DefendantsParkedForSummonsApplicationApproval) eventList.get(2)).getProsecutionWithReferenceData().getProsecution().getDefendants().get(1).getId(), is(SECOND_DEFENDANT_ID)); + } + + @Test + public void shouldCreateSummonsApplicationForValidDefendantsOnlyWhenCaseHasAlreadyBeenCreated() { + final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); + prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, firstMessage, emptyList())); + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(firstMessage).build()); + + final ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SECOND_SURNAME, BIRTH_DATE, SECOND_DEFENDANT_ID, randomAlphabetic(10)), + buildDefendant(FORENAME, THIRD_SURNAME, BIRTH_DATE, THIRD_DEFENDANT_ID, randomAlphabetic(10)), + buildDefendant(FORENAME, FOURTH_SURNAME, BIRTH_DATE, FOURTH_DEFENDANT_ID, randomAlphabetic(10), DATE_OF_HEARING_IN_PAST) + ), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID_2); + final Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(4)); + Optional firstMatchingEvent = getFirstMatching(eventList, DefendantsParkedForSummonsApplicationApproval.class); + assertThat(firstMatchingEvent.isPresent(), is(true)); + assertThat(firstMatchingEvent.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(2)); + assertThat(firstMatchingEvent.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(SECOND_DEFENDANT_ID)); + assertThat(firstMatchingEvent.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(1).getId(), is(THIRD_DEFENDANT_ID)); + + final Stream receiveErrorCorrectionsObjectStream = prosecutionCaseFile.receiveErrorCorrections(getDefendantDateOfHearingCorrectedField(), objectToJsonObjectConverter, + jsonObjectToObjectConverter, of(initiationTypesRefDataEnricher), of(offenceDataRefDataEnricher), referenceDataQueryService); + + eventList = receiveErrorCorrectionsObjectStream.collect(toList()); + assertThat(eventList.size(), is(4)); + firstMatchingEvent = getFirstMatching(eventList, DefendantsParkedForSummonsApplicationApproval.class); + assertThat(firstMatchingEvent.isPresent(), is(true)); + assertThat(firstMatchingEvent.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(1)); + assertThat(firstMatchingEvent.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(FOURTH_DEFENDANT_ID)); + } + + @Test + public void shouldCreateSjpCaseOnceChargeDateValidationErrorIsResolved(){ + uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant defendant = + buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE); + final ProsecutionWithReferenceData firstMessage = getProsecutionWithValidCaseMarker(Lists.newArrayList(defendant)); + final Problem problem = new Problem(ProblemCode.CHARGE_DATE_IN_FUTURE.name(), + of(new ProblemValue("0", "offence_chargeDate", "Charge date not provided"))); + final DefendantProblemsVO defendantProblemsVO = new DefendantProblemsVO(defendant,asList(problem)); + prosecutionCaseFile.apply(new SjpProsecutionRejected(asList(problem), firstMessage.getExternalId(), firstMessage.getProsecution())); + prosecutionCaseFile.apply(new SjpValidationFailed(firstMessage.getProsecution(), of(problem), asList(defendantProblemsVO), + firstMessage.getReferenceDataVO(), + getInitialHearing())); + + final Stream receiveErrorCorrectionsObjectStream = prosecutionCaseFile.receiveErrorCorrections(offenceChargeDateCorrectlySet(), objectToJsonObjectConverter, + jsonObjectToObjectConverter, of(initiationTypesRefDataEnricher), of(offenceDataRefDataEnricher), referenceDataQueryService); + List eventList = receiveErrorCorrectionsObjectStream.collect(toList()); + assertThat(eventList.size(), is(3)); + Optional sjpProsecutionReceived = getFirstMatching(eventList, SjpProsecutionReceived.class); + assertThat(sjpProsecutionReceived.isPresent(), is(true)); + assertThat(sjpProsecutionReceived.get().getProsecution().getDefendants().get(0).getPostingDate().toString(), is("2100-07-02")); + } + + @Test + public void shouldCreateSummonsApplicationForSubsequentMessagesWithValidDefendantsWhenEarlierDefendantsHaveBeenParked() { + final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, + PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, SUMMONS_INITIATION_CODE); + + prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, firstMessage, emptyList())); + + final ProsecutionWithReferenceData secondMessageWithValidAndInvalidDefendants = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, THIRD_SURNAME, BIRTH_DATE, THIRD_DEFENDANT_ID, randomAlphabetic(10)), + buildDefendant(FORENAME, FOURTH_SURNAME, BIRTH_DATE, FOURTH_DEFENDANT_ID, randomAlphabetic(10), DATE_OF_HEARING_IN_PAST) + ), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID_2); + Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessageWithValidAndInvalidDefendants, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(3)); + Optional firstMatchingForParkedDefendant = getFirstMatching(eventList, DefendantsParkedForSummonsApplicationApproval.class); + assertThat(firstMatchingForParkedDefendant.isPresent(), is(true)); + assertThat(firstMatchingForParkedDefendant.get().getApplicationId(), is(not(APPLICATION_ID))); + assertThat(firstMatchingForParkedDefendant.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(1)); + assertThat(firstMatchingForParkedDefendant.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(THIRD_DEFENDANT_ID)); + + final Optional firstMatchingForValidationFailed = getFirstMatching(eventList, DefendantValidationFailed.class); + assertThat(firstMatchingForValidationFailed.isPresent(), is(true)); + assertThat(firstMatchingForValidationFailed.get().getDefendant().getId(), is(FOURTH_DEFENDANT_ID)); + + final ProsecutionWithReferenceData thirdMessageWithValidDefendant = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, FITH_SURNAME, BIRTH_DATE, FIFTH_DEFENDANT_ID, randomAlphabetic(10))), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID_3); + objectStream = prosecutionCaseFile.receiveCCCase(thirdMessageWithValidDefendant, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(2)); + firstMatchingForParkedDefendant = getFirstMatching(eventList, DefendantsParkedForSummonsApplicationApproval.class); + assertThat(firstMatchingForParkedDefendant.isPresent(), is(true)); + assertThat(firstMatchingForParkedDefendant.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(1)); + assertThat(firstMatchingForParkedDefendant.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(FIFTH_DEFENDANT_ID)); + } + + @Test + public void shouldRaiseSummonsApplicationRejectedEventAndRemoveOnlyRejectedDefendants() { + final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, "S"); + prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, referenceData, emptyList())); + final ProsecutionWithReferenceData subsequentReferenceData = getProsecutionWithReferenceData( + of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, "S"); + + prosecutionCaseFile.receiveCCCase(subsequentReferenceData, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + final SummonsApplicationRejectedDetails summonsApplicationRejectedDetails = summonsApplicationRejectedDetails() + .withApplicationId(APPLICATION_ID) + .withCaseId(CASE_ID) + .withSummonsRejectedOutcome(summonsRejectedOutcome() + .withReasons(ImmutableList.of("Rejection Reason")) + .build()) + .build(); + final Stream objectStream = prosecutionCaseFile.rejectCaseDefendants(summonsApplicationRejectedDetails); + + final List eventList = objectStream.collect(toList()); + final uk.gov.moj.cps.prosecutioncasefile.domain.event.SummonsApplicationRejected applicationRejected = (uk.gov.moj.cps.prosecutioncasefile.domain.event.SummonsApplicationRejected) eventList.get(0); + assertThat(applicationRejected, is(instanceOf(uk.gov.moj.cps.prosecutioncasefile.domain.event.SummonsApplicationRejected.class))); + assertThat(applicationRejected.getDefendantIds(), contains(fromString(DEFENDANT_ID))); + assertThat(applicationRejected.getDefendantIds(), not(contains(fromString(SECOND_DEFENDANT_ID)))); + assertThat(applicationRejected.getSummonsRejectedOutcome().getReasons(), contains("Rejection Reason")); + assertThat(prosecutionCaseFile.isProsecutionReceived(), is(false)); + assertThat(prosecutionCaseFile.getDefendants(), hasSize(1)); + assertThat(prosecutionCaseFile.getDefendants().get(0).getId(), is(SECOND_DEFENDANT_ID)); + } + + @Test + public void shouldRaiseNewSummonsApplicationForSameDefendantWhenEarlierApplicationWasRejectedForSameCaseReceivedViaSpiChannel() { + final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, "S"); + prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, referenceData, emptyList())); + prosecutionCaseFile.apply(new SummonsApplicationRejected(APPLICATION_ID, CASE_ID, newArrayList(fromString(DEFENDANT_ID), fromString(SECOND_DEFENDANT_ID)), summonsRejectedOutcome().withReasons(ImmutableList.of("Rejection Reason")).build())); + + final String updatedSurname = STRING.next(); + final ProsecutionWithReferenceData subsequentReferenceDataForSameDefendant = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, updatedSurname, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, "S", EXTERNAL_ID_2); + final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceDataForSameDefendant, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + final List eventList = objectStream.collect(toList()); + assertThat(eventList, hasSize(2)); + final Optional firstMatching = getFirstMatching(eventList, DefendantsParkedForSummonsApplicationApproval.class); + assertThat(firstMatching.isPresent(), is(true)); + assertThat(firstMatching.get().getProsecutionWithReferenceData().getExternalId(), is(EXTERNAL_ID_2)); + assertThat(firstMatching.get().getApplicationId(), is(not(APPLICATION_ID))); + assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(1)); + assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(DEFENDANT_ID)); + assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getIndividual().getPersonalInformation().getFirstName(), is(FORENAME)); + assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getIndividual().getPersonalInformation().getLastName(), is(updatedSurname)); + } + + @Test + public void shouldInitiateCaseCreationWhenSummonsApplicationIsApprovedAndAllEarlierApplicationsWereRejectedViaSpiChannel() { + final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, SUMMONS_INITIATION_CODE); + prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, firstMessage, emptyList())); + prosecutionCaseFile.apply(new SummonsApplicationRejected(APPLICATION_ID, CASE_ID, newArrayList(fromString(DEFENDANT_ID), fromString(SECOND_DEFENDANT_ID)), summonsRejectedOutcome().withReasons(newArrayList("Rejection Reason")).build())); + + final String updatedSurname = STRING.next(); + final ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, updatedSurname, BIRTH_DATE, THIRD_DEFENDANT_ID, randomAlphabetic(10))), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID_2); + Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + List eventList = objectStream.collect(toList()); + assertThat(eventList, hasSize(2)); + final Optional firstMatching = getFirstMatching(eventList, DefendantsParkedForSummonsApplicationApproval.class); + assertThat(firstMatching.isPresent(), is(true)); + final UUID applicationId2 = firstMatching.get().getApplicationId(); + assertThat(applicationId2, is(not(APPLICATION_ID))); + assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(1)); + assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(THIRD_DEFENDANT_ID)); + + objectStream = prosecutionCaseFile.approveCaseDefendants(getSummonsApplicationApprovedDetails(applicationId2), of(), of(), isCivil); + + eventList = objectStream.collect(toList()); + assertThat(eventList, hasSize(1)); + final Optional firstMatchingCaseReceived = getFirstMatching(eventList, CcCaseReceived.class); + assertThat(firstMatchingCaseReceived.isPresent(), is(true)); + assertThat(firstMatchingCaseReceived.get().getProsecutionWithReferenceData().getExternalId(), is(EXTERNAL_ID_2)); + assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(1)); + assertThat(firstMatching.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(THIRD_DEFENDANT_ID)); + } + + @Test + public void shouldAddDefendantWhenSummonsApplicationIsApprovedForNewlyAddedDefendantToExistingCaseViaSpiChannel() { + final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, SUMMONS_INITIATION_CODE); + final String updatedSurname = STRING.next(); + final ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, updatedSurname, BIRTH_DATE, THIRD_DEFENDANT_ID, randomAlphabetic(10))), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID_2); + prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, firstMessage, emptyList())); + prosecutionCaseFile.apply(new CcCaseReceived(firstMessage, summonsApprovedOutcome().withPersonalService(true).withProsecutorCost("£300.00").withSummonsSuppressed(false).build(), randomUUID())); + prosecutionCaseFile.apply(new CaseCreatedSuccessfully(CASE_ID, SPI, EXTERNAL_ID)); + prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID_2, secondMessage, emptyList())); + + final SummonsApplicationApprovedDetails secondSummonsApplicationApprovedDetails = getSummonsApplicationApprovedDetails(APPLICATION_ID_2); + final Stream objectStream = prosecutionCaseFile.approveCaseDefendants(secondSummonsApplicationApprovedDetails, of(), of(), isCivil); + + final List eventList = objectStream.collect(toList()); + assertThat(eventList, hasSize(1)); + final Optional defendantAdded = getFirstMatching(eventList, ProsecutionDefendantsAdded.class); + assertThat(defendantAdded.isPresent(), is(true)); + assertThat(defendantAdded.get().getExternalId(), is(EXTERNAL_ID_2)); + assertThat(defendantAdded.get().getDefendants(), hasSize(1)); + assertThat(defendantAdded.get().getDefendants().get(0).getId(), is(THIRD_DEFENDANT_ID)); + assertThat(defendantAdded.get().getSummonsApprovedOutcome(), notNullValue()); + assertThat(defendantAdded.get().getSummonsApprovedOutcome().getSummonsSuppressed(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getSummonsSuppressed())); + assertThat(defendantAdded.get().getSummonsApprovedOutcome().getProsecutorCost(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getProsecutorCost())); + assertThat(defendantAdded.get().getSummonsApprovedOutcome().getPersonalService(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getPersonalService())); + assertThat(defendantAdded.get().getSummonsApprovedOutcome().getProsecutorEmailAddress(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getProsecutorEmailAddress())); + } + + @Test + public void shouldAddSubsequentDefendantsToTheCaseWhenCaseHasBeenCreatedAndSummonsIsApprovedForDefendantsThatWereNotPartOfTheCaseCreationViaSpiChannel() { + final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); + final ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData( + of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID_2); + prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, firstMessage, emptyList())); + prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID_2, secondMessage, emptyList())); + prosecutionCaseFile.apply(new CcCaseReceived(firstMessage, summonsApprovedOutcome().withPersonalService(true).withProsecutorCost("£300.00").withSummonsSuppressed(false).build(), randomUUID())); + prosecutionCaseFile.apply(new CaseCreatedSuccessfully(CASE_ID, SPI, EXTERNAL_ID)); + + final SummonsApplicationApprovedDetails secondSummonsApplicationApprovedDetails = getSummonsApplicationApprovedDetails(APPLICATION_ID_2); + final Stream objectStream = prosecutionCaseFile.approveCaseDefendants(secondSummonsApplicationApprovedDetails, of(), of(), isCivil); + + final List eventList = objectStream.collect(toList()); + assertThat(eventList, hasSize(1)); + final Optional defendantAdded = getFirstMatching(eventList, ProsecutionDefendantsAdded.class); + assertThat(defendantAdded.isPresent(), is(true)); + assertThat(defendantAdded.get().getExternalId(), is(EXTERNAL_ID_2)); + assertThat(defendantAdded.get().getDefendants(), hasSize(1)); + assertThat(defendantAdded.get().getDefendants().get(0).getId(), is(SECOND_DEFENDANT_ID)); + assertThat(defendantAdded.get().getSummonsApprovedOutcome(), notNullValue()); + assertThat(defendantAdded.get().getSummonsApprovedOutcome().getSummonsSuppressed(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getSummonsSuppressed())); + assertThat(defendantAdded.get().getSummonsApprovedOutcome().getProsecutorCost(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getProsecutorCost())); + assertThat(defendantAdded.get().getSummonsApprovedOutcome().getPersonalService(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getPersonalService())); + assertThat(defendantAdded.get().getSummonsApprovedOutcome().getProsecutorEmailAddress(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getProsecutorEmailAddress())); + } + + @Test + public void shouldAddSubsequentDefendantsToTheCaseWhenCaseHasBeenCreatedWithWarningsAndSummonsIsApprovedForDefendantsThatWereNotPartOfTheCaseCreationViaSpiChannel() { + final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); + final DefendantProblem firstDefendantWarning = defendantProblem().withProsecutorDefendantReference(PROSECUTOR_DEFENDANT_REFERENCE_ONE).withProblems(of(problem().withCode(OFFENCE_NOT_IN_EFFECT_ON_OFFENCE_COMMITTED_DATE).build())).build(); + final ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData( + of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID_2); + prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, firstMessage, of(firstDefendantWarning))); + final DefendantProblem secondDefendantWarning = defendantProblem().withProsecutorDefendantReference(PROSECUTOR_DEFENDANT_REFERENCE_TWO).withProblems(of(problem().withCode(OFFENCE_NOT_IN_EFFECT_ON_OFFENCE_COMMITTED_DATE).build())).build(); + prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID_2, secondMessage, of(secondDefendantWarning))); + prosecutionCaseFile.apply(new CcCaseReceivedWithWarnings(firstMessage, emptyList(), of(firstDefendantWarning), summonsApprovedOutcome().withPersonalService(true).withProsecutorCost("£300.00").withSummonsSuppressed(false).build(), randomUUID())); + prosecutionCaseFile.apply(new CaseCreatedSuccessfullyWithWarnings(CASE_ID, emptyList(), SPI, of(firstDefendantWarning), EXTERNAL_ID, firstDefendantWarning.getProblems())); + + final SummonsApplicationApprovedDetails secondSummonsApplicationApprovedDetails = getSummonsApplicationApprovedDetails(APPLICATION_ID_2); + final Stream objectStream = prosecutionCaseFile.approveCaseDefendants(secondSummonsApplicationApprovedDetails, of(), of(), isCivil); + + final List eventList = objectStream.collect(toList()); + assertThat(eventList, hasSize(1)); + final Optional defendantAdded = getFirstMatching(eventList, ProsecutionDefendantsAdded.class); + assertThat(defendantAdded.isPresent(), is(true)); + assertThat(defendantAdded.get().getExternalId(), is(EXTERNAL_ID_2)); + assertThat(defendantAdded.get().getDefendants(), hasSize(1)); + assertThat(defendantAdded.get().getDefendants().get(0).getId(), is(SECOND_DEFENDANT_ID)); + assertThat(defendantAdded.get().getDefendantWarnings(), hasSize(1)); + assertThat(defendantAdded.get().getDefendantWarnings().get(0).getProsecutorDefendantReference(), is(PROSECUTOR_DEFENDANT_REFERENCE_TWO)); + assertThat(defendantAdded.get().getSummonsApprovedOutcome(), notNullValue()); + assertThat(defendantAdded.get().getSummonsApprovedOutcome().getSummonsSuppressed(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getSummonsSuppressed())); + assertThat(defendantAdded.get().getSummonsApprovedOutcome().getProsecutorCost(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getProsecutorCost())); + assertThat(defendantAdded.get().getSummonsApprovedOutcome().getPersonalService(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getPersonalService())); + assertThat(defendantAdded.get().getSummonsApprovedOutcome().getProsecutorEmailAddress(), is(secondSummonsApplicationApprovedDetails.getSummonsApprovedOutcome().getProsecutorEmailAddress())); + } + + @Test + public void shouldIndicateAsDuplicateDefendantWhenSameDefendantIsReceivedAndSummonsApplicationForTheDefendantHasAlreadyBeenApprovedViaSpiChannel() { + final ProsecutionWithReferenceData referenceData = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, "S"); + prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, referenceData, emptyList())); + prosecutionCaseFile.apply(new CcCaseReceived(referenceData, summonsApprovedOutcome().withPersonalService(true).withProsecutorCost("£300.00").withSummonsSuppressed(false).build(), randomUUID())); + + final ProsecutionWithReferenceData subsequentReferenceDataForSameDefendant = getProsecutionWithReferenceData( + of(buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, "S", EXTERNAL_ID_2); + final Stream objectStream = prosecutionCaseFile.receiveCCCase(subsequentReferenceDataForSameDefendant, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + final List eventList = objectStream.collect(toList()); + assertThat(eventList, hasSize(1)); + final CaseReceivedWithDuplicateDefendants caseReceivedWithDuplicateDefendants = (CaseReceivedWithDuplicateDefendants) eventList.get(0); + assertThat(caseReceivedWithDuplicateDefendants.getCaseId(), is(CASE_ID)); + assertThat(caseReceivedWithDuplicateDefendants.getDefendants(), hasSize(1)); + assertThat(caseReceivedWithDuplicateDefendants.getDefendants().get(0).getId(), is(SECOND_DEFENDANT_ID)); + } + + @MethodSource("nonSpiChannels") + @ParameterizedTest + public void shouldRaiseProsecutionCaseRejectedForMCCAndCPPIChannels(final Channel nonSpiChannel) { + final SummonsApplicationRejectedDetails applicationRejectedCommandPayload = summonsApplicationRejectedDetails() + .withApplicationId(APPLICATION_ID) + .withCaseId(CASE_ID) + .withSummonsRejectedOutcome(summonsRejectedOutcome() + .withReasons(ImmutableList.of("First Reason")) + .build()) + .build(); + final ProsecutionWithReferenceData prosecutionWithReferenceData = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)), nonSpiChannel, "S"); + prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, prosecutionWithReferenceData, emptyList())); + + // application rejected and all defendants cleaned + final Stream objectStreamPostApplicationRejection = prosecutionCaseFile.rejectCaseDefendants(applicationRejectedCommandPayload); + + final List rejectionEventList = objectStreamPostApplicationRejection.collect(toList()); + assertThat(rejectionEventList.get(0), is(instanceOf(uk.gov.moj.cps.prosecutioncasefile.domain.event.SummonsApplicationRejected.class))); + assertThat(rejectionEventList.get(1), is(instanceOf(CcProsecutionRejected.class))); + final uk.gov.moj.cps.prosecutioncasefile.domain.event.SummonsApplicationRejected applicationRejected = (uk.gov.moj.cps.prosecutioncasefile.domain.event.SummonsApplicationRejected) rejectionEventList.get(0); + assertThat(applicationRejected.getDefendantIds(), contains(fromString(DEFENDANT_ID))); + assertThat(applicationRejected.getSummonsRejectedOutcome().getReasons(), contains("First Reason")); + assertThat(prosecutionCaseFile.isProsecutionReceived(), is(false)); + assertThat(prosecutionCaseFile.getDefendants(), empty()); + + // subsequent message rec'd after application rejection + final Stream objectStreamPostSubsequentMessageReceived = prosecutionCaseFile.receiveCCCase(prosecutionWithReferenceData, emptyList(), emptyList(), referenceDataQueryService); + final List subsequentCaseMessageEventList = objectStreamPostSubsequentMessageReceived.collect(toList()); + assertThat(subsequentCaseMessageEventList.get(0), is(instanceOf(DefendantsParkedForSummonsApplicationApproval.class))); + assertThat(prosecutionCaseFile.getDefendants(), hasSize(1)); + } + + @Test + public void shouldNotRaiseAnyEventWhenAcceptCaseIsCalledAndCaseNotReceivedForSJP() { + final Stream resultObjectStream = prosecutionCaseFile.acceptCase(CASE_ID, null, referenceDataQueryService); + + final List resultEventList = resultObjectStream.collect(toList()); + assertThat(resultEventList, hasSize(0)); + } + + + @Test + public void shouldRaiseMaterialAddedEventsWhenNextDefendantValidated() { + final UUID caseId = randomUUID(); + final UUID cpsDefendantId = randomUUID(); + + when(referenceDataQueryService.retrieveDocumentsTypeAccess()).thenReturn(singletonList(DocumentTypeAccessReferenceData.documentTypeAccessReferenceData().withSection("SECTION").withId(randomUUID()).withDocumentCategory("Defendant level").build())); + when(referenceDataQueryService.getProsecutorsByOuCode(any())).thenReturn(ProsecutorsReferenceData.prosecutorsReferenceData().withCpsFlag(true).build()); + prosecutionCaseFile.apply(ccCaseReceived() + .withProsecutionWithReferenceData(new ProsecutionWithReferenceData(prosecution() + .withCaseDetails(caseDetails().withCaseId(caseId).build()) + .withDefendants(singletonList(defendant() + .withId(randomUUID().toString()) + .withIndividual(individual() + .withPersonalInformation(personalInformation() + .withFirstName("John") + .withLastName("Doe") + .build()) + .build()) + .build())) + .build())) + .build()); + + prosecutionCaseFile.apply(CaseCreatedSuccessfully.caseCreatedSuccessfully() + .withCaseId(caseId) + .build()); + + List events = prosecutionCaseFile.addMaterialV2(AddMaterialCommonV2.addMaterialCommonV2() + .withMaterial(randomUUID()) + .withCaseId(caseId) + .withMaterialType("SECTION") + .withMaterialContentType("image/jpeg") + .withProsecutionCaseSubject(ProsecutionCaseSubject.prosecutionCaseSubject() + .withDefendantSubject(DefendantSubject.defendantSubject() + .withCpsDefendantId(cpsDefendantId.toString()) + .build()) + .withProsecutingAuthority("PA") + .build()) + .build(), referenceDataQueryService).collect(Collectors.toList()); + + assertThat(events.size(), Matchers.is(1)); + MaterialPendingV2 pendingEvent = (MaterialPendingV2) events.get(0); + assertThat(pendingEvent.getWarnings().size(), is(1)); + + events = prosecutionCaseFile.addMaterialV2(AddMaterialCommonV2.addMaterialCommonV2() + .withMaterial(randomUUID()) + .withCaseId(caseId) + .withMaterialType("SECTION") + .withMaterialContentType("image/jpeg") + .withProsecutionCaseSubject(ProsecutionCaseSubject.prosecutionCaseSubject() + .withDefendantSubject(DefendantSubject.defendantSubject() + .withCpsDefendantId(cpsDefendantId.toString()) + .withCpsPersonDefendantDetails(CpsPersonDefendantDetails.cpsPersonDefendantDetails() + .withForename("John") + .withSurname("Doe") + .build()) + .build()) + .withProsecutingAuthority("PA") + .build()) + .build(), referenceDataQueryService).collect(Collectors.toList()); + + assertThat(events.size(), Matchers.is(2)); + + } + + @Test + public void shouldRaiseNewCCCaseForSameDefendantWhenEarlierApplicationWasRejected() { + final ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData( + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), + buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)), SPI, SUMMONS_INITIATION_CODE); + prosecutionCaseFile.apply(new DefendantsParkedForSummonsApplicationApproval(APPLICATION_ID, firstMessage, emptyList())); + prosecutionCaseFile.apply(new SummonsApplicationRejected(APPLICATION_ID, CASE_ID, newArrayList(fromString(DEFENDANT_ID), fromString(SECOND_DEFENDANT_ID)), summonsRejectedOutcome().withReasons(newArrayList("Rejection Reason")).build())); + + Stream objectStream = prosecutionCaseFile.approveCaseDefendants(getSummonsApplicationApprovedDetails(APPLICATION_ID), of(), of(), isCivil); + + List eventList = objectStream.collect(toList()); + assertThat(eventList, hasSize(1)); + final Optional firstMatchingCaseReceived = getFirstMatching(eventList, CcCaseReceived.class); + assertThat(firstMatchingCaseReceived.isPresent(), is(true)); + assertThat(firstMatchingCaseReceived.get().getProsecutionWithReferenceData().getProsecution().getDefendants(), hasSize(2)); + assertThat(firstMatchingCaseReceived.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(0).getId(), is(DEFENDANT_ID)); + assertThat(firstMatchingCaseReceived.get().getProsecutionWithReferenceData().getProsecution().getDefendants().get(1).getId(), is(SECOND_DEFENDANT_ID)); + + } + + + @Test + public void shouldRejectDuplicateDefendantWithSameAsnForSpiIn() { + + + List defendantList = + asList(buildDefendantWithAsn("Jack", "Smith", LocalDate.of(1991, 01, 10), + DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn123")); + ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData(defendantList, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); + + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(firstMessage).build()); + + List defendantList2 = + asList(buildDefendantWithAsn("David", "James", LocalDate.of(1991, 02, 10), + DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn123")); + + ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData(defendantList2, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); + + final Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(1)); + Optional caseReceivedWithDuplicateDefendants = getFirstMatching(eventList, CaseReceivedWithDuplicateDefendants.class); + List defendants = caseReceivedWithDuplicateDefendants.get().getDefendants(); + assertThat(caseReceivedWithDuplicateDefendants.isPresent(), is(true)); + assertThat(defendants.get(0).getAsn(), is("asn123")); + + + } + + @Test + public void shouldRejectDuplicateDefendantWithSameDefendantDetailsForSpiIn() { + + + List defendantList = + asList(buildDefendantWithAsn("Mary", "Cal", LocalDate.of(1991, 01, 10), + DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn100")); + ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData(defendantList, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); + + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(firstMessage).build()); + + List defendantList2 = + asList(buildDefendantWithAsn("Mary", "Cal", LocalDate.of(1991, 01, 10), + DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn101")); + + ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData(defendantList2, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); + + final Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(1)); + Optional caseReceivedWithDuplicateDefendants = getFirstMatching(eventList, CaseReceivedWithDuplicateDefendants.class); + List defendants = caseReceivedWithDuplicateDefendants.get().getDefendants(); + assertThat(caseReceivedWithDuplicateDefendants.isPresent(), is(true)); + assertThat(defendants.get(0).getIndividual().getPersonalInformation().getFirstName(), is("Mary")); + assertThat(defendants.get(0).getIndividual().getPersonalInformation().getLastName(), is("Cal")); + assertThat(defendants.get(0).getIndividual().getSelfDefinedInformation().getDateOfBirth().toString(), is("1991-01-10")); + + + } + + @Test + public void shouldRejectDuplicateDefendantWithDobNotPresentForSpiIn() { + + + List defendantList = + asList(buildDefendantWithAsn("Mary", "Cal", null, + DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn100")); + ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData(defendantList, MCC, SUMMONS_INITIATION_CODE, EXTERNAL_ID); + + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(firstMessage).build()); + + List defendantList2 = + asList(buildDefendantWithAsn("Mary", "Cal", null, + DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn101")); + + ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData(defendantList2, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); + + + final Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(1)); + Optional caseReceivedWithDuplicateDefendants = getFirstMatching(eventList, CaseReceivedWithDuplicateDefendants.class); + List defendants = caseReceivedWithDuplicateDefendants.get().getDefendants(); + assertThat(caseReceivedWithDuplicateDefendants.isPresent(), is(true)); + assertThat(defendants.get(0).getIndividual().getPersonalInformation().getFirstName(), is("Mary")); + assertThat(defendants.get(0).getIndividual().getPersonalInformation().getLastName(), is("Cal")); + } + + @Test + public void shouldRejectDuplicateDefendantWithFirstNamePresentAndSameDobForSpiIn() { + List defendantList = + asList(buildDefendantWithAsn("Mary", "Cal", LocalDate.of(1991, 01, 10), + DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn100")); + ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData(defendantList, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); + + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(firstMessage).build()); + + List defendantList2 = + asList(buildDefendantWithAsn(null, "Cal", LocalDate.of(1991, 01, 10), + DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn101")); + + ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData(defendantList2, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); + + + final Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(1)); + Optional caseReceivedWithDuplicateDefendants = getFirstMatching(eventList, CaseReceivedWithDuplicateDefendants.class); + List defendants = caseReceivedWithDuplicateDefendants.get().getDefendants(); + assertThat(caseReceivedWithDuplicateDefendants.isPresent(), is(true)); + assertThat(defendants.get(0).getIndividual().getPersonalInformation().getLastName(), is("Cal")); + } + + @Test + public void shouldRejectDuplicateDefendantWithDobNotPresentForMCCAndThenSpi() { + List defendantList = + asList(buildDefendantWithAsn("Mary", "Cal", null, + DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn100")); + ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData(defendantList, MCC, SUMMONS_INITIATION_CODE, EXTERNAL_ID); + + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(firstMessage).build()); + + List defendantList2 = + asList(buildDefendantWithAsn("Mary", "Cal", null, + DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn101")); + + ProsecutionWithReferenceData secondMessage = getProsecutionWithReferenceData(defendantList2, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); + + + final Stream objectStream = prosecutionCaseFile.receiveCCCase(secondMessage, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + + List eventList = objectStream.collect(toList()); + assertThat(eventList.size(), is(1)); + Optional caseReceivedWithDuplicateDefendants = getFirstMatching(eventList, CaseReceivedWithDuplicateDefendants.class); + List defendants = caseReceivedWithDuplicateDefendants.get().getDefendants(); + assertThat(caseReceivedWithDuplicateDefendants.isPresent(), is(true)); + assertThat(defendants.get(0).getIndividual().getPersonalInformation().getFirstName(), is("Mary")); + assertThat(defendants.get(0).getIndividual().getPersonalInformation().getLastName(), is("Cal")); + } + + @Test + public void shouldProcessUniqueDefendantsAndIgnoreDuplicatesWithinSameRequest() { + List defendantList = + asList(buildDefendantWithAsn("Mary", "Cal", null, + DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE, "asn101")); + ProsecutionWithReferenceData firstMessage = getProsecutionWithReferenceData(defendantList, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); + + prosecutionCaseFile.apply(ccCaseReceived().withProsecutionWithReferenceData(firstMessage).build()); + List defendantList2 = + asList( + buildDefendantWithAsn("John", "Doe", LocalDate.of(1990, 05, 15), + DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO, "asn100"), + buildDefendantWithAsn("John", "Doe", LocalDate.of(1990, 05, 15), + DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO, "asn100") + ); + ProsecutionWithReferenceData messageWithDuplicateDefendants = getProsecutionWithReferenceData(defendantList2, SPI, SUMMONS_INITIATION_CODE, EXTERNAL_ID); + final Stream objectStream = prosecutionCaseFile.receiveCCCase(messageWithDuplicateDefendants, new ArrayList<>(), new ArrayList<>(), referenceDataQueryService); + List eventList = objectStream.collect(toList()); + + Optional caseReceivedWithDuplicateDefendants = getFirstMatching(eventList, CaseReceivedWithDuplicateDefendants.class); + List defendants = caseReceivedWithDuplicateDefendants.get().getDefendants(); + assertThat(caseReceivedWithDuplicateDefendants.isPresent(), is(true)); + } + + + + + private void assertThatTheEventReturnedIsOfType(final Stream objectStream, final Class eventClass) { + final Optional event = objectStream.findFirst(); + assertThat(event.isPresent(), is(true)); + assertThat(event.get(), is(instanceOf(eventClass))); + } + + private void assertThatTheEventReturnedIsOfType(final Stream objectStream, final Class eventClass, final long eventCount) { + assertThat(objectStream.filter(eventClass::isInstance).count(), is(eventCount)); + } + + private ProsecutionWithReferenceData getProsecutionWithReferenceData(final List defendantList, final String initiationCode) { + final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); + referenceDataVO.setOffenceReferenceData(singletonList(offenceReferenceData().withCjsOffenceCode(OFFENCE_CODE).withProsecutionTimeLimit("6 ").withOffenceStartDate(OFFENCE_START_DATE).build())); + referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); + referenceDataVO.setInitiationTypes(asList("J", "C", "S")); + referenceDataVO.setProsecutorsReferenceData(prosecutorsReferenceData() + .withId(randomUUID()) + .build()); + final ProsecutionWithReferenceData prosecutionWithReferenceData = new ProsecutionWithReferenceData(prosecution() + .withCaseDetails(caseDetails() + .withCaseId(CASE_ID) + .withInitiationCode(initiationCode) + .withProsecutorCaseReference(PROSECUTOR_CASE_REFERENCE) + .withOriginatingOrganisation(ORIGINATING_ORGANISATION) + .withCpsOrganisation(CPS_ORGANISATION) + .withSummonsCode(values("A", "W", "B", "E").next()) + .build()) + .withDefendants(defendantList) + .withChannel(SPI) + .build()); + prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); + prosecutionWithReferenceData.setExternalId(EXTERNAL_ID); + return prosecutionWithReferenceData; + } + + private ProsecutionWithReferenceData getProsecutionWithReferenceData(final List defendantList) { + final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); + referenceDataVO.setOffenceReferenceData(singletonList(offenceReferenceData().withCjsOffenceCode(OFFENCE_CODE).withProsecutionTimeLimit("6").withOffenceStartDate(OFFENCE_START_DATE).build())); + referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); + referenceDataVO.setInitiationTypes(asList("J", "C")); + referenceDataVO.setProsecutorsReferenceData(prosecutorsReferenceData() + .withId(randomUUID()) + .build()); + final ProsecutionWithReferenceData prosecutionWithReferenceData = new ProsecutionWithReferenceData(prosecution() + .withCaseDetails(caseDetails() + .withCaseId(CASE_ID) + .withInitiationCode("C") + .withProsecutorCaseReference(PROSECUTOR_CASE_REFERENCE) + .withOriginatingOrganisation(ORIGINATING_ORGANISATION) + .withCpsOrganisation(CPS_ORGANISATION) + .build()) + .withDefendants(defendantList) + .withChannel(CPPI) + .build()); + prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); + prosecutionWithReferenceData.setExternalId(EXTERNAL_ID); + return prosecutionWithReferenceData; + } + + private ProsecutionWithReferenceData getProsecutionWithReferenceDataAndCivilFees(final List defendantList, final Channel channel, boolean isCivil, List civilFees) { + final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); + referenceDataVO.setOffenceReferenceData(singletonList(offenceReferenceData().withCjsOffenceCode(OFFENCE_CODE).withProsecutionTimeLimit("6").withOffenceStartDate(OFFENCE_START_DATE).build())); + referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); + referenceDataVO.setInitiationTypes(asList("J", "C")); + referenceDataVO.setProsecutorsReferenceData(prosecutorsReferenceData() + .withId(randomUUID()) + .build()); + + final ProsecutionWithReferenceData prosecutionWithReferenceData = new ProsecutionWithReferenceData(prosecution() + .withCaseDetails(caseDetails() + .withCaseId(CASE_ID) + .withInitiationCode("C") + .withProsecutorCaseReference(PROSECUTOR_CASE_REFERENCE) + .withOriginatingOrganisation(ORIGINATING_ORGANISATION) + .withCpsOrganisation(CPS_ORGANISATION) + .withFeeStatus(CollectionUtils.isNotEmpty(civilFees) ? civilFees.get(0).getFeeStatus(): null) + .withPaymentReference(CollectionUtils.isNotEmpty(civilFees) ? civilFees.get(0).getPaymentReference(): null) + .build()) + .withDefendants(defendantList) + .withChannel(channel) + .withIsCivil(isCivil) + .build()); + prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); + prosecutionWithReferenceData.setExternalId(EXTERNAL_ID); + return prosecutionWithReferenceData; + } + + private ProsecutionWithReferenceData getProsecutionWithMixedValidAndInvalidCaseMarkerRefData(final List defendantList) { + final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); + referenceDataVO.setOffenceReferenceData(singletonList(offenceReferenceData().withCjsOffenceCode(OFFENCE_CODE).withProsecutionTimeLimit("6").withOffenceStartDate(OFFENCE_START_DATE).build())); + referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); + referenceDataVO.setInitiationTypes(asList("J", "C", TestConstants.SUMMONS_INITIATION_CODE)); + referenceDataVO.setProsecutorsReferenceData(prosecutorsReferenceData() + .withId(randomUUID()) + .build()); + + final ProsecutionWithReferenceData prosecutionWithReferenceData = new ProsecutionWithReferenceData(prosecution() + .withCaseDetails(caseDetails() + .withCaseId(CASE_ID) + .withInitiationCode(SUMMONS_INITIATION_CODE) + .withSummonsCode(values("A", "W", "B", "E").next()) + .withProsecutorCaseReference(PROSECUTOR_CASE_REFERENCE) + .withOriginatingOrganisation(ORIGINATING_ORGANISATION) + .withCpsOrganisation(CPS_ORGANISATION) + .withCaseMarkers(asList( + caseMarker().withMarkerTypeCode(VALID_CASE_MARKER_CODE).build(), + caseMarker().withMarkerTypeCode(INVALID_CASE_MARKER_CODE).build())) + .build()) + .withDefendants(defendantList) + .withChannel(SPI) + .build()); + prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); + prosecutionWithReferenceData.setExternalId(EXTERNAL_ID); + return prosecutionWithReferenceData; + } + + private ProsecutionWithReferenceData getProsecutionWithReferenceData(final List defendantList, + final String offenceStartDate, final String offenceEndDate) { + final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); + referenceDataVO.setOffenceReferenceData(singletonList(offenceReferenceData().withCjsOffenceCode(OFFENCE_CODE).withProsecutionTimeLimit("6").withOffenceStartDate(offenceStartDate).withOffenceEndDate(offenceEndDate).build())); + referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); + referenceDataVO.setInitiationTypes(asList("J", "C")); + referenceDataVO.setProsecutorsReferenceData(prosecutorsReferenceData() + .withId(randomUUID()) + .build()); + final ProsecutionWithReferenceData prosecutionWithReferenceData = new ProsecutionWithReferenceData(prosecution() + .withCaseDetails(caseDetails() + .withCaseId(CASE_ID) + .withInitiationCode("C") + .withProsecutorCaseReference(PROSECUTOR_CASE_REFERENCE) + .withOriginatingOrganisation(ORIGINATING_ORGANISATION) + .withCpsOrganisation(CPS_ORGANISATION) + .build()) + .withDefendants(defendantList) + .withChannel(CPPI) + .build()); + prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); + prosecutionWithReferenceData.setExternalId(EXTERNAL_ID); + return prosecutionWithReferenceData; + } + + private ProsecutionWithReferenceData getProsecutionWithReferenceData(final List defendantList, final Channel channel, final String initiationCode) { + return getProsecutionWithReferenceData(defendantList, channel, initiationCode, EXTERNAL_ID); + } + + private ProsecutionWithReferenceData getProsecutionWithReferenceData(final List defendantList, final Channel channel, final String initiationCode, final UUID externalId) { + final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); + referenceDataVO.setOffenceReferenceData(singletonList(offenceReferenceData().withCjsOffenceCode(OFFENCE_CODE).withProsecutionTimeLimit("6 ").withOffenceStartDate(OFFENCE_START_DATE).build())); + referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); + referenceDataVO.setInitiationTypes(asList("J", "C", initiationCode)); + referenceDataVO.setProsecutorsReferenceData(prosecutorsReferenceData() + .withId(randomUUID()) + .build()); + final ProsecutionWithReferenceData prosecutionWithReferenceData = new ProsecutionWithReferenceData(prosecution() + .withCaseDetails(caseDetails() + .withCaseId(CASE_ID) + .withInitiationCode(initiationCode) + .withSummonsCode(values("A", "W", "B", "E").next()) + .withProsecutorCaseReference(PROSECUTOR_CASE_REFERENCE) + .withOriginatingOrganisation(ORIGINATING_ORGANISATION) + .withCpsOrganisation(CPS_ORGANISATION) + .build()) + .withDefendants(defendantList) + .withChannel(channel) + .build()); + prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); + prosecutionWithReferenceData.setExternalId(externalId); + return prosecutionWithReferenceData; + } + + private ProsecutionWithReferenceData getProsecutionWithValidCaseMarker(final List defendantList) { + final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); + referenceDataVO.setOffenceReferenceData(singletonList(offenceReferenceData().withCjsOffenceCode(OFFENCE_CODE).withProsecutionTimeLimit("6 ").withOffenceStartDate(OFFENCE_START_DATE).build())); + referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); + referenceDataVO.setInitiationTypes(asList("J", "C", TestConstants.SUMMONS_INITIATION_CODE)); + referenceDataVO.setProsecutorsReferenceData(prosecutorsReferenceData() + .withId(randomUUID()) + .build()); + final ProsecutionWithReferenceData prosecutionWithReferenceData = new ProsecutionWithReferenceData(prosecution() + .withCaseDetails(caseDetails() + .withCaseId(CASE_ID) + .withInitiationCode(SUMMONS_INITIATION_CODE) + .withSummonsCode(values("A", "W", "B", "E").next()) + .withProsecutorCaseReference(PROSECUTOR_CASE_REFERENCE) + .withOriginatingOrganisation(ORIGINATING_ORGANISATION) + .withCpsOrganisation(CPS_ORGANISATION) + .withCaseMarkers(of(caseMarker().withMarkerTypeCode(VALID_CASE_MARKER_CODE).build())) + .build()) + .withDefendants(defendantList) + .withChannel(SPI) + .build()); + prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); + prosecutionWithReferenceData.setExternalId(TestConstants.EXTERNAL_ID_2); + return prosecutionWithReferenceData; + } + + private uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant buildDefendant(final String firstName, final String lastName, + final LocalDate dateOfBirth, + final String defendantId, + final String prosecutorDefendantReference) { + return buildDefendant(firstName, lastName, dateOfBirth, defendantId, prosecutorDefendantReference, DATE_OF_HEARING); + } + + private uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant buildDefendantWithAsn(final String firstName, final String lastName, + final LocalDate dateOfBirth, + final String defendantId, + final String prosecutorDefendantReference, + final String asn + + ) { + return buildDefendantWithAsn(firstName, lastName, dateOfBirth, defendantId, prosecutorDefendantReference, DATE_OF_HEARING, asn); + } + + private uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant buildDefendant(final String firstName, + final String lastName, + final LocalDate dateOfBirth, + final String defendantId, + final String prosecutorDefendantReference, + final String dateOfHearing) { + return defendant() + .withId(defendantId) + .withInitiationCode("C") + .withProsecutorDefendantReference(prosecutorDefendantReference) + .withIndividual(individual() + .withPersonalInformation(personalInformation() + .withFirstName(firstName) + .withLastName(lastName).build()) + .withSelfDefinedInformation(selfDefinedInformation() + .withDateOfBirth(dateOfBirth) + .build()) + .withBailConditions("bailConditions") + .build()) + .withInitialHearing(initialHearing() + .withDateOfHearing(dateOfHearing) + .withCourtHearingLocation(COURT_HEARING_LOCATION) + .build()) + .withCustodyStatus(CUSTODY_STATUS) + .withOffences(singletonList(offence() + .withOffenceId(TestConstants.OFFENCE_ID) + .withOffenceSequenceNumber(1) + .withArrestDate(ARREST_DATE) + .withOffenceCode(OFFENCE_CODE) + .withOffenceCommittedDate(OFFENCE_COMMITTED_DATE) + .withChargeDate(OFFENCE_CHARGE_DATE) + .withOffenceDateCode(2) + .build())) + .build(); + } + + private uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant buildDefendantWithAsn(final String firstName, + final String lastName, + final LocalDate dateOfBirth, + final String defendantId, + final String prosecutorDefendantReference, + final String dateOfHearing, + final String asn + ) { + return defendant() + .withAsn(asn) + .withId(defendantId) + .withInitiationCode("C") + .withProsecutorDefendantReference(prosecutorDefendantReference) + .withIndividual(individual() + .withPersonalInformation(personalInformation() + .withFirstName(firstName) + .withLastName(lastName).build()) + .withSelfDefinedInformation(selfDefinedInformation() + .withDateOfBirth(dateOfBirth) + .build()) + .withBailConditions("bailConditions") + .build()) + .withInitialHearing(initialHearing() + .withDateOfHearing(dateOfHearing) + .withCourtHearingLocation(COURT_HEARING_LOCATION) + .build()) + .withCustodyStatus(CUSTODY_STATUS) + .withOffences(singletonList(offence() + .withOffenceId(randomUUID()) + .withOffenceSequenceNumber(1) + .withArrestDate(ARREST_DATE) + .withOffenceCode(OFFENCE_CODE) + .withOffenceCommittedDate(OFFENCE_COMMITTED_DATE) + .withChargeDate(OFFENCE_CHARGE_DATE) + .withOffenceDateCode(2) + .build())) + .build(); + } + private uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant buildDefendantWithInitiationCode(final String initiationCode) { + return defendant() + .withId(TestConstants.DEFENDANT_ID) + .withInitiationCode(initiationCode) + .withProsecutorDefendantReference(TestConstants.PROSECUTOR_DEFENDANT_REFERENCE_ONE) + .withIndividual(individual() + .withPersonalInformation(personalInformation() + .withFirstName(TestConstants.FORENAME) + .withLastName(TestConstants.SURNAME).build()) + .withSelfDefinedInformation(selfDefinedInformation() + .withDateOfBirth(TestConstants.BIRTH_DATE) + .build()) + .withBailConditions("bailConditions") + .build()) + .withInitialHearing(initialHearing() + .withDateOfHearing(TestConstants.DATE_OF_HEARING) + .withCourtHearingLocation(COURT_HEARING_LOCATION) + .build()) + .withCustodyStatus(CUSTODY_STATUS) + .withOffences(singletonList(offence() + .withOffenceId(randomUUID()) + .withOffenceSequenceNumber(1) + .withArrestDate(ARREST_DATE) + .withOffenceCode(OFFENCE_CODE) + .withOffenceCommittedDate(OFFENCE_COMMITTED_DATE) + .withChargeDate(OFFENCE_CHARGE_DATE) + .withOffenceDateCode(2) + .build())) + .build(); + } + + private uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant buildDefendantWithInitiationCode(final String firstName, final String lastName, final LocalDate dateOfBirth, final String defendantId, final String prosecutorDefendantReference, final String initiationCode) { + return defendant() + .withId(defendantId) + .withInitiationCode(initiationCode) + .withProsecutorDefendantReference(prosecutorDefendantReference) + .withIndividual(individual() + .withPersonalInformation(personalInformation() + .withFirstName(firstName) + .withLastName(lastName).build()) + .withSelfDefinedInformation(selfDefinedInformation() + .withDateOfBirth(dateOfBirth) + .build()) + .withBailConditions("bailConditions") + .build()) + .withInitialHearing(initialHearing() + .withDateOfHearing(TestConstants.DATE_OF_HEARING) + .withCourtHearingLocation(COURT_HEARING_LOCATION) + .build()) + .withCustodyStatus(CUSTODY_STATUS) + .withOffences(singletonList(offence() + .withOffenceId(randomUUID()) + .withOffenceSequenceNumber(1) + .withArrestDate(ARREST_DATE) + .withOffenceCode(OFFENCE_CODE) + .withOffenceCommittedDate(OFFENCE_COMMITTED_DATE) + .withChargeDate(OFFENCE_CHARGE_DATE) + .withOffenceDateCode(2) + .build())) + .build(); + } + + private uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant buildDefendantWithOffence(final LocalDate offenceCommittedDate, final LocalDate offenceChargeDate, final String prosecutorDefendantReference) { + return defendant() + .withId(DEFENDANT_ID) + .withProsecutorDefendantReference(prosecutorDefendantReference) + .withIndividual(individual() + .withPersonalInformation(personalInformation() + .withFirstName("Ben") + .withLastName("Westwood").build()) + .withSelfDefinedInformation(selfDefinedInformation() + .withDateOfBirth(SECOND_BIRTH_DATE) + .build()) + .withBailConditions("bailConditions") + .build()) + .withInitialHearing(initialHearing() + .withDateOfHearing(DATE_OF_HEARING) + .withCourtHearingLocation(COURT_HEARING_LOCATION) + .build()) + .withCustodyStatus(CUSTODY_STATUS) + .withOffences(singletonList(offence() + .withArrestDate(ARREST_DATE) + .withOffenceCode(OFFENCE_CODE) + .withOffenceSequenceNumber(1) + .withOffenceId(offenceId) + .withOffenceCommittedDate(offenceCommittedDate) + .withChargeDate(offenceChargeDate) + .withOffenceDateCode(2) + .build())) + .withInitiationCode("C") + .build(); + } + + private uk.gov.moj.cpp.prosecution.casefile.json.schemas.Defendant buildDefendantWithAsnAndOffence(final LocalDate offenceCommittedDate, final LocalDate offenceChargeDate, final String asn) { + return defendant() + .withId(DEFENDANT_ID) + .withAsn(asn) + .withIndividual(individual() + .withPersonalInformation(personalInformation() + .withFirstName("Ben") + .withLastName("Westwood").build()) + .withSelfDefinedInformation(selfDefinedInformation() + .withDateOfBirth(SECOND_BIRTH_DATE) + .build()) + .withBailConditions("bailConditions") + .build()) + .withInitialHearing(initialHearing() + .withDateOfHearing(DATE_OF_HEARING) + .withCourtHearingLocation(COURT_HEARING_LOCATION) + .build()) + .withCustodyStatus(CUSTODY_STATUS) + .withOffences(singletonList(offence() + .withArrestDate(ARREST_DATE) + .withOffenceCode(OFFENCE_CODE) + .withOffenceSequenceNumber(1) + .withOffenceId(offenceId) + .withOffenceCommittedDate(offenceCommittedDate) + .withChargeDate(offenceChargeDate) + .withOffenceDateCode(2) + .build())) + .withInitiationCode("C") + .build(); + } + + private List buildOrganisationUnits() { + return singletonList(organisationUnitReferenceData() + .withOucode(COURT_HEARING_LOCATION) + .build()); + } + + private List buildCustodyStatuses() { + return singletonList(custodyStatusReferenceData() + .withStatusCode(CUSTODY_STATUS) + .build()); + } + + private List buildBailStatuses() { + return singletonList(bailStatusReferenceData() + .withStatusCode(CUSTODY_STATUS) + .build()); + } + + private ProsecutionWithReferenceData getProsecutionWithReferenceData(final Channel channel, final Boolean hasMultipleDefendants) { + + ProsecutorsReferenceData prd = new ProsecutorsReferenceData.Builder() + .withId(UUID.fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf")) + .withShortName("ShortName").withSjpFlag(true).withAocpApproved(true).build(); + + Prosecutor prosecutor = new Prosecutor.Builder().withReferenceData(prd).withProsecutingAuthority("TFL").build(); + CaseDetails caseDetails = new CaseDetails.Builder() + .withProsecutor(prosecutor) + .withCaseId(randomUUID()) + .withProsecutorCaseReference("1234243") + .withInitiationTypeFound(true) + .withOriginatingOrganisation("TFL") + .withCpsOrganisation("CPS") + .withInitiationCode("J") + .build(); + + final ImmutableList defendants = hasMultipleDefendants ? + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE), buildDefendant(SECOND_FORENAME, SECOND_SURNAME, SECOND_BIRTH_DATE, SECOND_DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_TWO)) : + of(buildDefendant(FORENAME, SURNAME, BIRTH_DATE, DEFENDANT_ID, PROSECUTOR_DEFENDANT_REFERENCE_ONE)); + Prosecution prosecution = new Prosecution.Builder() + .withCaseDetails(caseDetails) + .withChannel(channel) + .withDefendants(defendants) + .build(); + + final ProsecutionWithReferenceData prosecutionWithReferenceData = + new ProsecutionWithReferenceData(prosecution); + prosecutionWithReferenceData.setExternalId(EXTERNAL_ID); + + final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); + referenceDataVO.setOffenceReferenceData( + singletonList(offenceReferenceData() + .withCjsOffenceCode(OFFENCE_CODE) + .withOffenceStartDate(OFFENCE_START_DATE) + .withModeOfTrial("SNONIMP") + .build())); + referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); + referenceDataVO.setInitiationTypes(asList("J", "C")); + prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); + referenceDataVO.setProsecutorsReferenceData(getProsecutorsReferenceData()); + + return prosecutionWithReferenceData; + } + + private ProsecutionWithReferenceData getSjpProsecutionWithReferenceData(final String initiationCode) { + + ProsecutorsReferenceData prd = new ProsecutorsReferenceData.Builder() + .withId(UUID.fromString("c9ad5fef-7d97-4df5-b796-0eed3eed1acf")) + .withShortName("ShortName").withSjpFlag(true).withAocpApproved(true).build(); + + Prosecutor prosecutor = new Prosecutor.Builder().withReferenceData(prd).withProsecutingAuthority("TFL").build(); + CaseDetails caseDetails = new CaseDetails.Builder() + .withProsecutor(prosecutor) + .withCaseId(randomUUID()) + .withProsecutorCaseReference("1234243") + .withInitiationTypeFound(true) + .withOriginatingOrganisation("TFL") + .withCpsOrganisation("CPS") + .withInitiationCode(initiationCode) + .build(); + + final ImmutableList defendants = + of(buildDefendantWithInitiationCode(initiationCode)); + Prosecution prosecution = new Prosecution.Builder() + .withCaseDetails(caseDetails) + .withChannel(Channel.SPI) + .withDefendants(defendants) + .build(); + + final ProsecutionWithReferenceData prosecutionWithReferenceData = + new ProsecutionWithReferenceData(prosecution); + prosecutionWithReferenceData.setExternalId(EXTERNAL_ID); + + final ReferenceDataVO referenceDataVO = new ReferenceDataVO(); + referenceDataVO.setOffenceReferenceData( + singletonList(offenceReferenceData() + .withCjsOffenceCode(OFFENCE_CODE) + .withOffenceStartDate(OFFENCE_START_DATE) + .withModeOfTrial("SNONIMP") + .build())); + referenceDataVO.addCountryNationalityReferenceData(referenceDataCountryNationality().build()); + referenceDataVO.setInitiationTypes(asList("J", "C")); + prosecutionWithReferenceData.setReferenceDataVO(referenceDataVO); + referenceDataVO.setProsecutorsReferenceData(getProsecutorsReferenceData()); + + return prosecutionWithReferenceData; + } + + private ProsecutorsReferenceData getProsecutorsReferenceData() { + return prosecutorsReferenceData() + .withId(randomUUID()) + .build(); + } + + private List buildSummonsCodeReferenceData() { + return asList( + summonsCodeReferenceData() + .withId(randomUUID()) + .withSeqNo(INTEGER.next()) + .withSummonsCode("A") + .withSummonsCodeDescription("Application / Complaint") + .build(), + summonsCodeReferenceData() + .withId(randomUUID()) + .withSeqNo(INTEGER.next()) + .withSummonsCode("W") + .withSummonsCodeDescription("Witness Summons") + .build(), + summonsCodeReferenceData() + .withId(randomUUID()) + .withSeqNo(INTEGER.next()) + .withSummonsCode("B") + .withSummonsCodeDescription("Breach offences") + .build(), + summonsCodeReferenceData() + .withId(randomUUID()) + .withSeqNo(INTEGER.next()) + .withSummonsCode("M") + .withSummonsCodeDescription("MCA Case") + .build(), + summonsCodeReferenceData() + .withId(randomUUID()) + .withSeqNo(INTEGER.next()) + .withSummonsCode("E") + .withSummonsCodeDescription("Either Way or serious offences") + .build() + ); + } + + private List buildCaseMarkers() { + return of(caseMarker() + .withMarkerTypeCode(VALID_CASE_MARKER_CODE) + .build()); + } + + private Optional getFirstMatching(final List eventList, Class clazz) { + return eventList.stream().filter(clazz::isInstance).map(clazz::cast).findFirst(); + } + + private JsonObject getCaseMarkerCorrectedField() { + return createObjectBuilder() + .add("errors", createArrayBuilder() + .add(createObjectBuilder() + .add("id", "1") + .add("fieldName", "caseMarkers") + .add("value", VALID_CASE_MARKER_CODE)) + ) + .build(); + } + + private JsonObject getDefendantDateOfHearingCorrectedField() { + return createObjectBuilder() + .add("defendants", createArrayBuilder() + .add(createObjectBuilder() + .add("id", TestConstants.FOURTH_DEFENDANT_ID) + .add("errors", createArrayBuilder() + .add(createObjectBuilder() + .add("fieldName", "initialHearing_dateOfHearing") + .add("value", DATE_OF_HEARING) + .build()) + .build()) + .build()) + .build()) + .build(); + } + + private JsonObject offenceChargeDateCorrectlySet() { + return createObjectBuilder() + .add("defendants", createArrayBuilder() + .add(createObjectBuilder() + .add("id", DEFENDANT_ID) + .add("errors", createArrayBuilder() + .add(createObjectBuilder() + .add("fieldName", "offence_chargeDate") + .add("id", TestConstants.OFFENCE_ID.toString()) + .add("value", "2100-07-02") + .build()) + .build()) + .build()) + .build()) + .build(); + } + + private SummonsApplicationApprovedDetails getSummonsApplicationApprovedDetails(final UUID applicationId) { + return summonsApplicationApprovedDetails() + .withApplicationId(applicationId) + .withCaseId(TestConstants.CASE_ID) + .withSummonsApprovedOutcome(summonsApprovedOutcome().withSummonsSuppressed(false).withPersonalService(true).withProsecutorCost(PROSECUTOR_COST).build()) + .build(); + } + + private InitialHearing getInitialHearing() { + InitialHearing initialHearing = InitialHearing.initialHearing() + .withDateOfHearing("2050-02-04") + .build(); + return initialHearing; + } +} + diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-listener/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/listener/ProsecutionReceivedListenerTest.java b/prosecutioncasefile-event/prosecutioncasefile-event-listener/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/listener/ProsecutionReceivedListenerTest.java index 4b062acf..0490d8c3 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-listener/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/listener/ProsecutionReceivedListenerTest.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-listener/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/listener/ProsecutionReceivedListenerTest.java @@ -5,8 +5,8 @@ import static java.util.Collections.singletonList; import static java.util.UUID.fromString; import static java.util.UUID.randomUUID; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.codehaus.groovy.runtime.InvokerHelper.asList; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.hasSize; @@ -89,7 +89,7 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; @ExtendWith(MockitoExtension.class) @@ -467,7 +467,7 @@ public void shouldUpdateSjpCaseValidationFailed() { .add("firstName", "FirstName") .add("lastName", "LastName") .add("offences", createArrayBuilder() - .add(Json.createObjectBuilder() + .add(JsonObjects.createObjectBuilder() .add("id", offenceId.toString()) .add("description", "Duty not paid") .build())) diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ApplicationEventProcessor.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ApplicationEventProcessor.java index 4c907b0c..04be6f46 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ApplicationEventProcessor.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ApplicationEventProcessor.java @@ -1,7 +1,7 @@ package uk.gov.moj.cpp.prosecution.casefile.event.processor; import static java.util.Objects.nonNull; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; import static uk.gov.justice.services.messaging.Envelope.envelopeFrom; import static uk.gov.justice.services.messaging.Envelope.metadataFrom; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CaseFilteredEventProcessor.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CaseFilteredEventProcessor.java index b8da7e69..5c8b9fa9 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CaseFilteredEventProcessor.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CaseFilteredEventProcessor.java @@ -1,6 +1,6 @@ package uk.gov.moj.cpp.prosecution.casefile.event.processor; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; import static uk.gov.justice.services.messaging.Envelope.envelopeFrom; import static uk.gov.justice.services.messaging.JsonEnvelope.metadataFrom; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CpsServeMaterialEventProcessor.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CpsServeMaterialEventProcessor.java index 7354afe3..eef07894 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CpsServeMaterialEventProcessor.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CpsServeMaterialEventProcessor.java @@ -6,8 +6,8 @@ import static java.util.UUID.fromString; import static java.util.UUID.nameUUIDFromBytes; import static java.util.stream.Collectors.toList; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static javax.json.JsonValue.NULL; import static org.apache.commons.collections.CollectionUtils.isNotEmpty; import static org.apache.commons.lang3.StringUtils.isNotEmpty; @@ -73,7 +73,7 @@ import java.util.UUID; import javax.inject.Inject; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonArray; import javax.json.JsonArrayBuilder; import javax.json.JsonObject; @@ -502,7 +502,7 @@ private String createStringFromFormDataForPtph(PtphFormData ptphFormData) { ptphHeaderJson.add(CASE_URN, ptphHeader.getUrn()); //defendants - final JsonArrayBuilder defendantArrayBuilder = Json.createArrayBuilder(); + final JsonArrayBuilder defendantArrayBuilder = JsonObjects.createArrayBuilder(); ptphFormData.getPtphFormdefendants().forEach(ptphFormdefendants -> { final JsonObjectBuilder defendant = createObjectBuilder(); defendant.add(ID, ptphFormdefendants.getId()); @@ -531,7 +531,7 @@ private String createStringFromFormDataForPtph(PtphFormData ptphFormData) { //Contacts final JsonObjectBuilder contacts = constructContacts(ptphFormData.getContacts()); - final JsonArrayBuilder defenceInformationArrayBuilder = Json.createArrayBuilder(); + final JsonArrayBuilder defenceInformationArrayBuilder = JsonObjects.createArrayBuilder(); if (isNotEmpty(ptphFormData.getDefenceInformation())) { ptphFormData.getDefenceInformation().forEach(defenceInformation -> defenceInformationArrayBuilder.add(objectToJsonObjectConverter.convert(defenceInformation))); } @@ -649,7 +649,7 @@ private void sendCpsServePetSubmittedPublicEvent(final Envelope defendantArrayBuilder.add(createJsonObjectFromBcmDefendants(bcmDefendants))); return createObjectBuilder() .add(DEFENDANTS, defendantArrayBuilder.build()) @@ -734,7 +734,7 @@ private JsonObject createJsonObjectFromBcmDefendants(BcmDefendants bcmDefendants } private JsonArray createProsecutorOffences(List prosecutorOffencesList) { - final JsonArrayBuilder offencesArrayBuilder = Json.createArrayBuilder(); + final JsonArrayBuilder offencesArrayBuilder = JsonObjects.createArrayBuilder(); prosecutorOffencesList.forEach(prosecutorOffences -> offencesArrayBuilder.add(createObjectBuilder() .add(DATE, DateUtil.convertToStringFromLocalDate(prosecutorOffences.getDate())) .add(OFFENCE_CODE, prosecutorOffences.getOffenceCode()) diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/DefendantIdpcEventProcessor.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/DefendantIdpcEventProcessor.java index 14d59cf7..c34e45b3 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/DefendantIdpcEventProcessor.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/DefendantIdpcEventProcessor.java @@ -1,6 +1,6 @@ package uk.gov.moj.cpp.prosecution.casefile.event.processor; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; import static uk.gov.justice.services.messaging.Envelope.metadataFrom; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/GroupCasesParkedForApprovalEventProcessor.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/GroupCasesParkedForApprovalEventProcessor.java index 6db36fbc..1c89408e 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/GroupCasesParkedForApprovalEventProcessor.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/GroupCasesParkedForApprovalEventProcessor.java @@ -2,7 +2,7 @@ import static java.util.UUID.fromString; import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.slf4j.LoggerFactory.getLogger; import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; import static uk.gov.justice.services.messaging.Envelope.envelopeFrom; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/MaterialEventProcessor.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/MaterialEventProcessor.java index 0ce121bc..1ad80551 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/MaterialEventProcessor.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/MaterialEventProcessor.java @@ -1,595 +1,595 @@ -package uk.gov.moj.cpp.prosecution.casefile.event.processor; - -import static java.util.Objects.isNull; -import static java.util.Objects.nonNull; -import static java.util.Optional.ofNullable; -import static java.util.UUID.fromString; -import static java.util.UUID.randomUUID; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; -import static javax.json.JsonValue.NULL; -import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; -import static uk.gov.justice.services.core.enveloper.Enveloper.envelop; -import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; -import static uk.gov.justice.services.messaging.JsonEnvelope.metadataFrom; -import static uk.gov.moj.cps.prosecutioncasefile.domain.event.DocumentBundleArrivedForUnbundling.documentBundleArrivedForUnbundling; - - -import org.apache.commons.collections.CollectionUtils; - -import uk.gov.justice.services.common.converter.ObjectToJsonObjectConverter; -import uk.gov.justice.services.core.annotation.Handles; -import uk.gov.justice.services.core.annotation.ServiceComponent; -import uk.gov.justice.services.core.sender.Sender; -import uk.gov.justice.services.fileservice.api.FileServiceException; -import uk.gov.justice.services.fileservice.api.FileStorer; -import uk.gov.justice.services.messaging.Envelope; -import uk.gov.justice.services.messaging.JsonEnvelope; -import uk.gov.justice.services.messaging.Metadata; -import uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.BulkScanMaterialExpiration; -import uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.IdpcUploadMaterialProcessService; -import uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.PendingIdpcMaterialExpiration; -import uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.PendingMaterialExpiration; -import uk.gov.moj.cpp.prosecution.casefile.event.processor.service.ReferenceDataService; -import uk.gov.moj.cpp.prosecution.casefile.event.processor.utils.EnvelopeHelper; -import uk.gov.moj.cpp.prosecution.casefile.event.processor.utils.MetadataHelper; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.CaseType; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.CmsDocumentIdentifier; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.DocumentCategory; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.BulkscanMaterialRejected; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.CaseDocumentReviewRequired; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.DocumentBundleArrivedForUnbundling; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.DocumentReviewRequired; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcDefendantMatchPending; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcDefendantMatched; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcMaterialRejected; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAdded; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAddedV2; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAddedWithWarnings; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialPending; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialPendingV2; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejected; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejectedV2; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejectedWithWarnings; - -import java.util.Optional; -import java.util.UUID; - -import javax.inject.Inject; -import javax.json.JsonArray; -import javax.json.JsonObject; -import javax.json.JsonObjectBuilder; - -@ServiceComponent(EVENT_PROCESSOR) -public class MaterialEventProcessor { - - private static final String PUBLIC_PROSECUTIONCASEFILE_MATERIAL_ADDED = "public.prosecutioncasefile.material-added"; - private static final String PUBLIC_PROSECUTIONCASEFILE_MATERIAL_ADDED_V2 = "public.prosecutioncasefile.material-added-v2"; - private static final String PUBLIC_PROSECUTIONCASEFILE_MATERIAL_ADDED_WITH_WARNINGS = "public.prosecutioncasefile.material-added-with-warnings"; - private static final String MATERIAL_COMMAND_UPLOAD_FILE = "material.command.upload-file"; - private static final String CASE_ID_FIELD = "caseId"; - private static final String APPLICATION_ID_FIELD = "applicationId"; - private static final String DEFENDANT_ID_FIELD = "defendantId"; - private static final String DOCUMENT_TYPE_ID_FIELD = "documentTypeId"; - private static final String DOCUMENT_TYPE_DESCRIPTION_FIELD = "documentTypeDescription"; - private static final String DOCUMENT_CATEGORY_FIELD = "documentCategory"; - private static final String MATERIAL_ID_FIELD = "materialId"; - private static final String IS_UNBUNDLED_DOCUMENT = "isUnbundledDocument"; - private static final String FILE_SERVICE_ID_FIELD = "fileServiceId"; - public static final String RECEIVED_DATE_TIME = "receivedDateTime"; - public static final String IDPC_SECTION_CODE = "IDPC"; - public static final String SECTION_CODE = "sectionCode"; - public static final String IS_CPS_CASE = "isCpsCase"; - static final String PUBLIC_MATERIAL_DOCUMENT_BUNDLE_ARRIVED_FOR_UNBUNDLE = "public.prosecutioncasefile.document-bundle-arrived-for-unbundling"; - private static final String FILE_CLOUD_LOCATION = "fileCloudLocation"; - - @Inject - private Sender sender; - @Inject - private FileStorer fileStorer; - @Inject - private EnvelopeHelper envelopeHelper; - @Inject - private PendingMaterialExpiration pendingMaterialExpiration; - @Inject - private MetadataHelper metadataHelper; - @Inject - private IdpcUploadMaterialProcessService idpcUploadMaterialProcessService; - @Inject - private PendingIdpcMaterialExpiration idpcPendingMaterialExpiration; - @Inject - private BulkScanMaterialExpiration bulkScanMaterialExpiration; - @Inject - private ReferenceDataService referenceDataService; - @Inject - private ObjectToJsonObjectConverter objectToJsonObjectConverter; - - @Handles("prosecutioncasefile.events.material-added") - public void handleMaterialAdded(final Envelope materialAddedEvent) { - final MaterialAdded materialAdded = materialAddedEvent.payload(); - - final UUID fileStoreId = materialAdded.getMaterial().getFileStoreId(); - - if (CaseType.SJP.toString().equals(materialAddedEvent.payload().getCaseType())) { - final JsonEnvelope envelope = getSJPUploadDocumentPayload(materialAddedEvent, fileStoreId); - sender.sendAsAdmin(envelopeHelper.withMetadataInPayloadForEnvelope(envelope)); - } else { - uploadToMaterialContext(materialAddedEvent, fileStoreId.toString(), 1); - } - - pendingMaterialExpiration.cancelMaterialTimer(fileStoreId); - bulkScanMaterialExpiration.cancelMaterialTimer(fileStoreId); - initiateMaterialForUnbundling(materialAddedEvent); - sender.send(envelop(materialAdded) - .withName(PUBLIC_PROSECUTIONCASEFILE_MATERIAL_ADDED) - .withMetadataFrom(materialAddedEvent)); - - } - - @Handles("prosecutioncasefile.events.material-added-v2") - public void handleMaterialAddedV2(final Envelope materialAddedEvent) { - final MaterialAddedV2 materialAdded = materialAddedEvent.payload(); - - final UUID fileStoreId = materialAdded.getMaterial(); - - uploadToMaterialContextV2(materialAddedEvent, fileStoreId.toString(), 2); - - pendingMaterialExpiration.cancelMaterialTimer(fileStoreId); - bulkScanMaterialExpiration.cancelMaterialTimer(fileStoreId); - - sender.send(envelop(materialAdded) - .withName(PUBLIC_PROSECUTIONCASEFILE_MATERIAL_ADDED_V2) - .withMetadataFrom(materialAddedEvent)); - } - - @Handles("prosecutioncasefile.events.material-added-with-warnings") - public void handleMaterialAddedWithWarnings(final Envelope materialAddedEvent) { - final MaterialAddedWithWarnings materialAdded = materialAddedEvent.payload(); - - final UUID fileStoreId = materialAdded.getMaterial(); - - uploadToMaterialContextWithWarnings(materialAddedEvent, fileStoreId.toString(), 2); - - pendingMaterialExpiration.cancelMaterialTimer(fileStoreId); - bulkScanMaterialExpiration.cancelMaterialTimer(fileStoreId); - - sender.send(envelop(materialAdded) - .withName(PUBLIC_PROSECUTIONCASEFILE_MATERIAL_ADDED_WITH_WARNINGS) - .withMetadataFrom(materialAddedEvent)); - } - - private void initiateMaterialForUnbundling(final Envelope materialAddedEvent) { - final MaterialAdded materialAdded = materialAddedEvent.payload(); - - final CmsDocumentIdentifier documentIdentifier = materialAdded.getCmsDocumentIdentifier(); - if (nonNull(documentIdentifier) && - referenceDataService.isDocumentNeedsUnBundling(documentIdentifier.getMaterialType())) { - - final DocumentBundleArrivedForUnbundling documentBundleArrivedForUnbundling = documentBundleArrivedForUnbundling() - .withCaseId(materialAdded.getCaseId()) - .withProsecutingAuthority(materialAdded.getProsecutingAuthority()) - .withProsecutorDefendantId(materialAdded.getProsecutorDefendantId()) - .withMaterial(materialAdded.getMaterial()) - .withCmsDocumentIdentifier(materialAdded.getCmsDocumentIdentifier()) - .withReceivedDateTime(materialAdded.getReceivedDateTime()) - .withDefendantName(materialAdded.getDefendantName()) - .build(); - sender.send(envelopeFrom(metadataFrom(materialAddedEvent.metadata()) - .withName(PUBLIC_MATERIAL_DOCUMENT_BUNDLE_ARRIVED_FOR_UNBUNDLE).build(), - objectToJsonObjectConverter.convert(documentBundleArrivedForUnbundling))); - } - } - - private void uploadToMaterialContext(final Envelope materialAddedEvent, final String fileStoreId, final int version) { - final MaterialAdded materialAdded = materialAddedEvent.payload(); - - final JsonObjectBuilder ccMetadataBuilder = createObjectBuilder() - .add(CASE_ID_FIELD, materialAdded.getCaseId().toString()) - .add(DOCUMENT_TYPE_ID_FIELD, materialAdded.getDocumentTypeId()) - .add(DOCUMENT_CATEGORY_FIELD, materialAdded.getDocumentCategory()) - .add(DOCUMENT_TYPE_DESCRIPTION_FIELD, materialAdded.getDocumentType()); - if (nonNull(materialAdded.getIsCpsCase())) { - ccMetadataBuilder.add(IS_CPS_CASE, materialAdded.getIsCpsCase()); - } - - if (nonNull(materialAdded.getReceivedDateTime())) { - ccMetadataBuilder.add(RECEIVED_DATE_TIME, materialAdded.getReceivedDateTime().toOffsetDateTime().toString()); - } - - if (DocumentCategory.DEFENDANT_LEVEL.toString().equalsIgnoreCase(materialAdded.getDocumentCategory())) { - ccMetadataBuilder.add(DEFENDANT_ID_FIELD, materialAdded.getDefendantId().toString()); - } - - if (nonNull(materialAdded.getSectionCode())) { - ccMetadataBuilder.add(SECTION_CODE, materialAdded.getSectionCode()); - } - - final JsonObject ccMetadata = ccMetadataBuilder.build(); - - final JsonObjectBuilder uploadFilePayloadBuilder = createObjectBuilder() - .add(MATERIAL_ID_FIELD, randomUUID().toString()) - .add(FILE_SERVICE_ID_FIELD, fileStoreId); - - if (nonNull(materialAdded.getMaterial().getIsUnbundledDocument()) && materialAdded.getMaterial().getIsUnbundledDocument()) { - uploadFilePayloadBuilder.add(IS_UNBUNDLED_DOCUMENT, true); - } - - sender.send(metadataHelper.envelopeWithCustomMetadata( - metadataFrom(materialAddedEvent.metadata()).withName(MATERIAL_COMMAND_UPLOAD_FILE).build(), - ccMetadata, - uploadFilePayloadBuilder.build(), version == 1 ? null : fileStoreId)); - } - - private void uploadToMaterialContextV2(final Envelope materialAddedEvent, final String fileStoreId, final int version) { - final MaterialAddedV2 materialAdded = materialAddedEvent.payload(); - - final JsonObjectBuilder ccMetadataBuilder = createObjectBuilder() - .add(DOCUMENT_TYPE_ID_FIELD, materialAdded.getDocumentTypeId()) - .add(DOCUMENT_CATEGORY_FIELD, materialAdded.getDocumentCategory()) - .add(DOCUMENT_TYPE_DESCRIPTION_FIELD, materialAdded.getMaterialType()); - - ofNullable(materialAdded.getCaseId()).ifPresent(caseId -> ccMetadataBuilder.add(CASE_ID_FIELD, caseId.toString())); - ofNullable(materialAdded.getCourtApplicationSubject()).ifPresent(courtApplicationSubject -> ccMetadataBuilder.add(APPLICATION_ID_FIELD, courtApplicationSubject.getCourtApplicationId().toString())); - - if (nonNull(materialAdded.getIsCpsCase())) { - ccMetadataBuilder.add(IS_CPS_CASE, materialAdded.getIsCpsCase()); - } - - if (nonNull(materialAdded.getReceivedDateTime())) { - ccMetadataBuilder.add(RECEIVED_DATE_TIME, materialAdded.getReceivedDateTime().toOffsetDateTime().toString()); - } - - if (DocumentCategory.DEFENDANT_LEVEL.toString().equalsIgnoreCase(materialAdded.getDocumentCategory())) { - ccMetadataBuilder.add(DEFENDANT_ID_FIELD, materialAdded.getDefendantId().toString()); - } - - final JsonObject ccMetadata = ccMetadataBuilder.build(); - - final JsonObjectBuilder uploadFilePayloadBuilder = createObjectBuilder() - .add(MATERIAL_ID_FIELD, randomUUID().toString()) - .add(FILE_SERVICE_ID_FIELD, fileStoreId); - - sender.send(metadataHelper.envelopeWithCustomMetadata( - metadataFrom(materialAddedEvent.metadata()).withName(MATERIAL_COMMAND_UPLOAD_FILE).build(), - ccMetadata, - uploadFilePayloadBuilder.build(), version == 1 ? null : fileStoreId)); - } - - private void uploadToMaterialContextWithWarnings(final Envelope materialAddedEvent, final String fileStoreId, final int version) { - final MaterialAddedWithWarnings materialAdded = materialAddedEvent.payload(); - - final JsonObjectBuilder ccMetadataBuilder = createObjectBuilder() - .add(DOCUMENT_TYPE_ID_FIELD, materialAdded.getDocumentTypeId()) - .add(DOCUMENT_CATEGORY_FIELD, materialAdded.getDocumentCategory()) - .add(DOCUMENT_TYPE_DESCRIPTION_FIELD, materialAdded.getMaterialType()); - ofNullable(materialAdded.getCaseId()).ifPresent(caseId -> ccMetadataBuilder.add(CASE_ID_FIELD, caseId.toString())); - ofNullable(materialAdded.getCourtApplicationSubject()).ifPresent(courtApplicationSubject -> ccMetadataBuilder.add(APPLICATION_ID_FIELD, courtApplicationSubject.getCourtApplicationId().toString())); - - if (nonNull(materialAdded.getIsCpsCase())) { - ccMetadataBuilder.add(IS_CPS_CASE, materialAdded.getIsCpsCase()); - } - - if (nonNull(materialAdded.getReceivedDateTime())) { - ccMetadataBuilder.add(RECEIVED_DATE_TIME, materialAdded.getReceivedDateTime().toOffsetDateTime().toString()); - } - - if (DocumentCategory.DEFENDANT_LEVEL.toString().equalsIgnoreCase(materialAdded.getDocumentCategory())) { - ccMetadataBuilder.add(DEFENDANT_ID_FIELD, materialAdded.getDefendantId().toString()); - } - - final JsonObject ccMetadata = ccMetadataBuilder.build(); - - final JsonObjectBuilder uploadFilePayloadBuilder = createObjectBuilder() - .add(MATERIAL_ID_FIELD, randomUUID().toString()) - .add(FILE_SERVICE_ID_FIELD, fileStoreId); - - sender.send(metadataHelper.envelopeWithCustomMetadata( - metadataFrom(materialAddedEvent.metadata()).withName(MATERIAL_COMMAND_UPLOAD_FILE).build(), - ccMetadata, - uploadFilePayloadBuilder.build(), version == 1 ? null : fileStoreId)); - } - - private JsonEnvelope getSJPUploadDocumentPayload(final Envelope materialAddedEvent, final UUID fileStoreId) { - final Metadata metadata = Envelope.metadataFrom(materialAddedEvent.metadata()).withName("sjp.upload-case-document").build(); - - final JsonObject payload = createObjectBuilder().add(CASE_ID_FIELD, materialAddedEvent.payload().getCaseId().toString()) - .add("caseDocument", fileStoreId.toString()) - .add("caseDocumentType", materialAddedEvent.payload().getMaterial().getDocumentType()) - .build(); - - return envelopeFrom(metadata, payload); - } - - @Handles("prosecutioncasefile.events.material-rejected") - public void handleMaterialRejected(final Envelope materialRejectedEnvelope) { - final MaterialRejected materialRejected = materialRejectedEnvelope.payload(); - final UUID fileStoreId = materialRejected.getMaterial().getFileStoreId(); - final JsonEnvelope materialRejectedJsonEnvelope = envelopeFrom(materialRejectedEnvelope.metadata(), NULL); - - sender.send(envelop(materialRejected) - .withName("public.prosecutioncasefile.material-rejected") - .withMetadataFrom(materialRejectedJsonEnvelope)); - - pendingMaterialExpiration.cancelMaterialTimer(fileStoreId); - bulkScanMaterialExpiration.cancelMaterialTimer(fileStoreId); - } - - @Handles("prosecutioncasefile.events.material-rejected-v2") - public void handleMaterialRejectedV2(final Envelope materialRejectedEnvelope) { - final MaterialRejectedV2 materialRejected = materialRejectedEnvelope.payload(); - final UUID fileStoreId = materialRejected.getMaterial(); - final JsonEnvelope materialRejectedJsonEnvelope = envelopeFrom(materialRejectedEnvelope.metadata(), NULL); - - sender.send(envelop(materialRejected) - .withName("public.prosecutioncasefile.material-rejected-v2") - .withMetadataFrom(materialRejectedJsonEnvelope)); - - pendingMaterialExpiration.cancelMaterialTimer(fileStoreId); - bulkScanMaterialExpiration.cancelMaterialTimer(fileStoreId); - } - - @Handles("prosecutioncasefile.events.material-rejected-with-warnings") - public void handleMaterialRejectedWithWarnings(final Envelope materialRejectedEnvelope) { - final MaterialRejectedWithWarnings materialRejectedWithWarnings = materialRejectedEnvelope.payload(); - final UUID fileStoreId = materialRejectedWithWarnings.getMaterial(); - final JsonEnvelope materialRejectedJsonEnvelope = envelopeFrom(materialRejectedEnvelope.metadata(), NULL); - - sender.send(envelop(materialRejectedWithWarnings) - .withName("public.prosecutioncasefile.material-rejected-with-warnings") - .withMetadataFrom(materialRejectedJsonEnvelope)); - - pendingMaterialExpiration.cancelMaterialTimer(fileStoreId); - bulkScanMaterialExpiration.cancelMaterialTimer(fileStoreId); - } - - @Handles("prosecutioncasefile.events.case-document-review-required") - public void handleDocumentReviewRequired(final Envelope materialPendingEnvelope) { - - final CaseDocumentReviewRequired caseDocumentReviewRequired = materialPendingEnvelope.payload(); - - final JsonEnvelope materialPendingJsonEnvelope = envelopeFrom(materialPendingEnvelope.metadata(), NULL); - - final DocumentReviewRequired documentReviewRequired = DocumentReviewRequired.documentReviewRequired() - .withCaseId(caseDocumentReviewRequired.getCaseId()) - .withCmsDocumentId(caseDocumentReviewRequired.getCmsDocumentId()) - .withDocumentType(caseDocumentReviewRequired.getDocumentType()) - .withErrorCodes(caseDocumentReviewRequired.getErrorCodes()) - .withFileStoreId(caseDocumentReviewRequired.getFileStoreId()) - .withReceivedDateTime(caseDocumentReviewRequired.getReceivedDateTime()) - .withSource(caseDocumentReviewRequired.getSource()) - .withProsecutingAuthority(caseDocumentReviewRequired.getProsecutingAuthority()) - .build(); - - sender.send(envelop(documentReviewRequired) - .withName("public.prosecutioncasefile.document-review-required") - .withMetadataFrom(materialPendingJsonEnvelope)); - } - - @Handles("prosecutioncasefile.events.case-document-review-required-v2") - public void handleDocumentReviewRequiredV2(final Envelope materialPendingEnvelope) { - - final CaseDocumentReviewRequired caseDocumentReviewRequired = materialPendingEnvelope.payload(); - - final JsonEnvelope materialPendingJsonEnvelope = envelopeFrom(materialPendingEnvelope.metadata(), NULL); - - final DocumentReviewRequired documentReviewRequired = DocumentReviewRequired.documentReviewRequired() - .withCaseId(caseDocumentReviewRequired.getCaseId()) - .withCmsDocumentId(caseDocumentReviewRequired.getCmsDocumentId()) - .withDocumentType(caseDocumentReviewRequired.getDocumentType()) - .withErrorCodes(caseDocumentReviewRequired.getErrorCodes()) - .withFileStoreId(caseDocumentReviewRequired.getFileStoreId()) - .withReceivedDateTime(caseDocumentReviewRequired.getReceivedDateTime()) - .withSource(caseDocumentReviewRequired.getSource()) - .withProsecutingAuthority(caseDocumentReviewRequired.getProsecutingAuthority()) - .build(); - - sender.send(envelop(documentReviewRequired) - .withName("public.prosecutioncasefile.document-review-required-v2") - .withMetadataFrom(materialPendingJsonEnvelope)); - } - - @Handles("prosecutioncasefile.events.bulkscan-material-rejected") - public void handleBulkScanMaterialRejected(final Envelope materialRejectedEnvelope) { - final BulkscanMaterialRejected materialRejected = materialRejectedEnvelope.payload(); - final UUID fileStoreId = materialRejected.getMaterial().getFileStoreId(); - final JsonEnvelope materialRejectedJsonEnvelope = envelopeFrom(materialRejectedEnvelope.metadata(), NULL); - sender.send(envelop(materialRejected).withName("public.prosecutioncasefile.bulkscan-material-followup").withMetadataFrom(materialRejectedJsonEnvelope)); - bulkScanMaterialExpiration.cancelMaterialTimer(fileStoreId); - } - - @Handles("prosecutioncasefile.events.idpc-material-rejected") - public void handleIdpcMaterialRejected(final Envelope idpcMaterialRejectedEnvelope) throws FileServiceException { - final IdpcMaterialRejected idpcMaterialRejected = idpcMaterialRejectedEnvelope.payload(); - final UUID fileServiceId = idpcMaterialRejected.getFileServiceId(); - - idpcPendingMaterialExpiration.cancelIdpcMaterialTimer(fileServiceId); - fileStorer.delete(fileServiceId); - } - - @Handles("prosecutioncasefile.events.material-pending") - public void handleMaterialPending(final Envelope materialPendingEnvelope) { - final MaterialPending materialPending = materialPendingEnvelope.payload(); - final UUID fileStoreId = materialPending.getMaterial().getFileStoreId(); - final UUID caseId = materialPending.getCaseId(); - final Metadata metadata = materialPendingEnvelope.metadata(); - - pendingMaterialExpiration.startMaterialTimer(fileStoreId, caseId, metadata); - bulkScanMaterialExpiration.startMaterialTimer(fileStoreId, caseId, metadata); - } - - @Handles("prosecutioncasefile.events.material-pending-v2") - public void handleMaterialPendingV2(final Envelope materialPendingEnvelope) { - final MaterialPendingV2 materialPendingV2 = materialPendingEnvelope.payload(); - final UUID fileStoreId = materialPendingV2.getMaterial(); - final UUID caseId = materialPendingV2.getCaseId(); - final Metadata metadata = materialPendingEnvelope.metadata(); - - pendingMaterialExpiration.startMaterialTimer(fileStoreId, caseId, metadata); - bulkScanMaterialExpiration.startMaterialTimer(fileStoreId, caseId, metadata); - - if (CollectionUtils.isNotEmpty(materialPendingV2.getWarnings())) { - sender.send(envelop(materialPendingV2) - .withName("public.prosecutioncasefile.material-pending-with-warnings") - .withMetadataFrom(materialPendingEnvelope)); - } - } - - @Handles("prosecutioncasefile.events.idpc-defendant-matched") - public void idpcDefendantMatch(final Envelope idpcDefendantMatch) { - - idpcUploadMaterialProcessService.startUploadFileProcess(idpcDefendantMatch); - idpcPendingMaterialExpiration.cancelIdpcMaterialTimer(idpcDefendantMatch.payload().getFileServiceId()); - } - - @Handles("prosecutioncasefile.events.idpc-defendant-match-pending") - public void handleIdpcDefendantMatchPending(final Envelope idpcNoCaseMatch) { - final IdpcDefendantMatchPending idpcDefendantMatchPending = idpcNoCaseMatch.payload(); - final UUID fileStoreId = idpcDefendantMatchPending.getFileServiceId(); - final UUID caseId = idpcDefendantMatchPending.getCaseId(); - final Metadata metadata = idpcNoCaseMatch.metadata(); - - idpcPendingMaterialExpiration.startMaterialTimer(fileStoreId, caseId, metadata); - } - - - @Handles("material.material-added") - public void handleMaterialAddedFromMaterialContext(final JsonEnvelope materialAddedEvent) throws FileServiceException { - final Optional ccMetadata = metadataHelper.getCCMetadata(materialAddedEvent); - final String fileStoreId = metadataHelper.getFileStoreId(materialAddedEvent); - - final UUID materialId = fromString(materialAddedEvent.payloadAsJsonObject().getString(MATERIAL_ID_FIELD)); - final String fileCloudLocationId = ccMetadata.map(c -> c.getString(FILE_CLOUD_LOCATION, null)).orElse(null); - - if (ccMetadata.isPresent() && isNull(fileCloudLocationId)) { - handleDocumentUploadedEvent(materialAddedEvent, ccMetadata.get(), materialId.toString(), fileStoreId); - } else { - final Optional idpcProcessId = MetadataHelper.getIdpcProcessId(materialAddedEvent); - if (idpcProcessId.isPresent()) { - final String fileServiceId = idpcUploadMaterialProcessService.signalUploadFileProcess(materialAddedEvent, idpcProcessId.get(), materialId); - fileStorer.delete(UUID.fromString(fileServiceId)); - } - } - } - - @Handles("prosecutioncasefile.events.court-document-added") - public void handleCourtDocumentAdded(final JsonEnvelope courtDocumentAddedEvent) { - final JsonObjectBuilder progressionPayloadBuilder = createObjectBuilder(); - - courtDocumentAddedEvent.asJsonObject() - .forEach((key, value) -> { - if (!"fileStoreId".equals(key)) { - progressionPayloadBuilder.add(key, value); - } - }); - - final JsonObject progressionPayload = progressionPayloadBuilder.build(); - - final Metadata metadata = Envelope.metadataFrom(courtDocumentAddedEvent.metadata()).withName("progression.add-court-document-v2").build(); - sender.sendAsAdmin(envelopeHelper.withMetadataInPayloadForEnvelope(envelopeFrom(metadata, progressionPayload))); - } - - private void handleDocumentUploadedEvent(final JsonEnvelope materialAddedEvent, final JsonObject ccMetadata, final String materialId, final String fileStoreId) { - final String caseId = ccMetadata.getString(CASE_ID_FIELD, null); - final String applicationId = ccMetadata.getString(APPLICATION_ID_FIELD, null); - final String documentTypeId = ccMetadata.getString(DOCUMENT_TYPE_ID_FIELD); - final String documentTypeDescription = ccMetadata.getString(DOCUMENT_TYPE_DESCRIPTION_FIELD); - final String documentCategory = ccMetadata.getString(DOCUMENT_CATEGORY_FIELD); - final String receivedDateTime = ccMetadata.containsKey(RECEIVED_DATE_TIME) ? ccMetadata.getString(RECEIVED_DATE_TIME) : null; - final String sectionCode = ccMetadata.containsKey(SECTION_CODE) ? ccMetadata.getString(SECTION_CODE) : null; - final Boolean isCpsCase = ccMetadata.containsKey(IS_CPS_CASE) ? ccMetadata.getBoolean(IS_CPS_CASE) : null; - - final JsonObjectBuilder payloadBuilder = createObjectBuilder() - .add("courtDocumentId", randomUUID().toString()) - .add("name", materialAddedEvent.payloadAsJsonObject().getJsonObject("fileDetails").getString("fileName")) - .add("mimeType", materialAddedEvent.payloadAsJsonObject().getJsonObject("fileDetails").getString("mimeType")) - .add(DOCUMENT_TYPE_ID_FIELD, documentTypeId) - .add(DOCUMENT_TYPE_DESCRIPTION_FIELD, documentTypeDescription) - .add("materials", buildMaterials(materialId, receivedDateTime)) - .add("containsFinancialMeans", false); - if (fileStoreId == null) { - payloadBuilder.add(IS_UNBUNDLED_DOCUMENT, materialAddedEvent.payloadAsJsonObject().getBoolean(IS_UNBUNDLED_DOCUMENT, false)); - ofNullable(isCpsCase).ifPresent(aBoolean -> payloadBuilder.add(IS_CPS_CASE, aBoolean)); - } - - createDocumentCategoryField(ccMetadata, caseId, applicationId, documentCategory, payloadBuilder); - - final JsonObjectBuilder progressionPayloadBuilder = createObjectBuilder(). - add("courtDocument", payloadBuilder.build()) - .add(MATERIAL_ID_FIELD, materialId); - - callAddCourtDocument(materialAddedEvent, fileStoreId, progressionPayloadBuilder, applicationId); - - if (null != sectionCode && sectionCode.equalsIgnoreCase(IDPC_SECTION_CODE)) { - final Metadata metadataForIdcpReceived = Envelope.metadataFrom(materialAddedEvent.metadata()).withName("public.prosecutioncasefile.defendant-idpc-added").build(); - - final JsonObjectBuilder jsonObjectBuilderForIdcpReceived = createObjectBuilder() - .add(CASE_ID_FIELD, caseId) - .add(MATERIAL_ID_FIELD, materialId) - .add(DEFENDANT_ID_FIELD, ccMetadata.getString(DEFENDANT_ID_FIELD)); - - if (receivedDateTime != null) { - jsonObjectBuilderForIdcpReceived.add("publishedDate", receivedDateTime); - } - - sender.send(envelopeFrom(metadataForIdcpReceived, jsonObjectBuilderForIdcpReceived.build())); - } - } - - private void createDocumentCategoryField(final JsonObject ccMetadata, final String caseId, final String applicationId, final String documentCategory, final JsonObjectBuilder payloadBuilder) { - if (DocumentCategory.DEFENDANT_LEVEL.toString().equalsIgnoreCase(documentCategory)) { - final String defendantId = ccMetadata.getString(DEFENDANT_ID_FIELD); - payloadBuilder.add(DOCUMENT_CATEGORY_FIELD, createObjectBuilder() - .add("defendantDocument", createObjectBuilder() - .add("prosecutionCaseId", caseId) - .add("defendants", createArrayBuilder() - .add(defendantId) - .build()) - .build()) - .build()); - } else if (DocumentCategory.CASE_LEVEL.toString().equalsIgnoreCase(documentCategory)) { - payloadBuilder.add(DOCUMENT_CATEGORY_FIELD, createObjectBuilder() - .add("caseDocument", createObjectBuilder() - .add("prosecutionCaseId", caseId) - .build()) - .build()); - } else if (DocumentCategory.APPLICATIONS.toString().equalsIgnoreCase(documentCategory)) { - payloadBuilder.add(DOCUMENT_CATEGORY_FIELD, createObjectBuilder() - .add("applicationDocument", createObjectBuilder() - .add(APPLICATION_ID_FIELD, applicationId) - .build()) - .build()); - } - } - - private JsonArray buildMaterials(final String materialId, final String receivedDateTime) { - JsonObjectBuilder materialBuilder = createObjectBuilder().add("id", materialId); - if (receivedDateTime != null) { - materialBuilder = materialBuilder.add(RECEIVED_DATE_TIME, receivedDateTime); - } - return createArrayBuilder().add(materialBuilder.build()) - .build(); - } - - @Handles("prosecutioncasefile.events.defendant-idpc-already-exists") - public void handleDefendantIdpcAlreadyExists(final JsonEnvelope envelope) throws FileServiceException { - fileStorer.delete(UUID.fromString(envelope.payloadAsJsonObject().getString(FILE_SERVICE_ID_FIELD))); - } - - private void callAddCourtDocument(final JsonEnvelope materialAddedEvent, final String fileStoreId, final JsonObjectBuilder progressionPayloadBuilder, final String applicationId) { - final Metadata metadata; - if (nonNull(fileStoreId)) { - progressionPayloadBuilder.add("fileStoreId", fileStoreId); - if (isNull(applicationId)) { - metadata = Envelope.metadataFrom(materialAddedEvent.metadata()).withName("prosecutioncasefile.command.add-case-court-document").build(); - } else { - metadata = Envelope.metadataFrom(materialAddedEvent.metadata()).withName("prosecutioncasefile.command.add-application-court-document").build(); - progressionPayloadBuilder.add(APPLICATION_ID_FIELD, applicationId); - } - } else { - metadata = Envelope.metadataFrom(materialAddedEvent.metadata()).withName("progression.add-court-document").build(); - } - final JsonObject progressionPayload = progressionPayloadBuilder.build(); - sender.sendAsAdmin(envelopeHelper.withMetadataInPayloadForEnvelope(envelopeFrom(metadata, progressionPayload))); - } - -} +package uk.gov.moj.cpp.prosecution.casefile.event.processor; + +import static java.util.Objects.isNull; +import static java.util.Objects.nonNull; +import static java.util.Optional.ofNullable; +import static java.util.UUID.fromString; +import static java.util.UUID.randomUUID; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; +import static javax.json.JsonValue.NULL; +import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; +import static uk.gov.justice.services.core.enveloper.Enveloper.envelop; +import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; +import static uk.gov.justice.services.messaging.JsonEnvelope.metadataFrom; +import static uk.gov.moj.cps.prosecutioncasefile.domain.event.DocumentBundleArrivedForUnbundling.documentBundleArrivedForUnbundling; + + +import org.apache.commons.collections.CollectionUtils; + +import uk.gov.justice.services.common.converter.ObjectToJsonObjectConverter; +import uk.gov.justice.services.core.annotation.Handles; +import uk.gov.justice.services.core.annotation.ServiceComponent; +import uk.gov.justice.services.core.sender.Sender; +import uk.gov.justice.services.fileservice.api.FileServiceException; +import uk.gov.justice.services.fileservice.api.FileStorer; +import uk.gov.justice.services.messaging.Envelope; +import uk.gov.justice.services.messaging.JsonEnvelope; +import uk.gov.justice.services.messaging.Metadata; +import uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.BulkScanMaterialExpiration; +import uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.IdpcUploadMaterialProcessService; +import uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.PendingIdpcMaterialExpiration; +import uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.PendingMaterialExpiration; +import uk.gov.moj.cpp.prosecution.casefile.event.processor.service.ReferenceDataService; +import uk.gov.moj.cpp.prosecution.casefile.event.processor.utils.EnvelopeHelper; +import uk.gov.moj.cpp.prosecution.casefile.event.processor.utils.MetadataHelper; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.CaseType; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.CmsDocumentIdentifier; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.DocumentCategory; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.BulkscanMaterialRejected; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.CaseDocumentReviewRequired; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.DocumentBundleArrivedForUnbundling; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.DocumentReviewRequired; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcDefendantMatchPending; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcDefendantMatched; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcMaterialRejected; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAdded; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAddedV2; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAddedWithWarnings; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialPending; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialPendingV2; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejected; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejectedV2; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejectedWithWarnings; + +import java.util.Optional; +import java.util.UUID; + +import javax.inject.Inject; +import javax.json.JsonArray; +import javax.json.JsonObject; +import javax.json.JsonObjectBuilder; + +@ServiceComponent(EVENT_PROCESSOR) +public class MaterialEventProcessor { + + private static final String PUBLIC_PROSECUTIONCASEFILE_MATERIAL_ADDED = "public.prosecutioncasefile.material-added"; + private static final String PUBLIC_PROSECUTIONCASEFILE_MATERIAL_ADDED_V2 = "public.prosecutioncasefile.material-added-v2"; + private static final String PUBLIC_PROSECUTIONCASEFILE_MATERIAL_ADDED_WITH_WARNINGS = "public.prosecutioncasefile.material-added-with-warnings"; + private static final String MATERIAL_COMMAND_UPLOAD_FILE = "material.command.upload-file"; + private static final String CASE_ID_FIELD = "caseId"; + private static final String APPLICATION_ID_FIELD = "applicationId"; + private static final String DEFENDANT_ID_FIELD = "defendantId"; + private static final String DOCUMENT_TYPE_ID_FIELD = "documentTypeId"; + private static final String DOCUMENT_TYPE_DESCRIPTION_FIELD = "documentTypeDescription"; + private static final String DOCUMENT_CATEGORY_FIELD = "documentCategory"; + private static final String MATERIAL_ID_FIELD = "materialId"; + private static final String IS_UNBUNDLED_DOCUMENT = "isUnbundledDocument"; + private static final String FILE_SERVICE_ID_FIELD = "fileServiceId"; + public static final String RECEIVED_DATE_TIME = "receivedDateTime"; + public static final String IDPC_SECTION_CODE = "IDPC"; + public static final String SECTION_CODE = "sectionCode"; + public static final String IS_CPS_CASE = "isCpsCase"; + static final String PUBLIC_MATERIAL_DOCUMENT_BUNDLE_ARRIVED_FOR_UNBUNDLE = "public.prosecutioncasefile.document-bundle-arrived-for-unbundling"; + private static final String FILE_CLOUD_LOCATION = "fileCloudLocation"; + + @Inject + private Sender sender; + @Inject + private FileStorer fileStorer; + @Inject + private EnvelopeHelper envelopeHelper; + @Inject + private PendingMaterialExpiration pendingMaterialExpiration; + @Inject + private MetadataHelper metadataHelper; + @Inject + private IdpcUploadMaterialProcessService idpcUploadMaterialProcessService; + @Inject + private PendingIdpcMaterialExpiration idpcPendingMaterialExpiration; + @Inject + private BulkScanMaterialExpiration bulkScanMaterialExpiration; + @Inject + private ReferenceDataService referenceDataService; + @Inject + private ObjectToJsonObjectConverter objectToJsonObjectConverter; + + @Handles("prosecutioncasefile.events.material-added") + public void handleMaterialAdded(final Envelope materialAddedEvent) { + final MaterialAdded materialAdded = materialAddedEvent.payload(); + + final UUID fileStoreId = materialAdded.getMaterial().getFileStoreId(); + + if (CaseType.SJP.toString().equals(materialAddedEvent.payload().getCaseType())) { + final JsonEnvelope envelope = getSJPUploadDocumentPayload(materialAddedEvent, fileStoreId); + sender.sendAsAdmin(envelopeHelper.withMetadataInPayloadForEnvelope(envelope)); + } else { + uploadToMaterialContext(materialAddedEvent, fileStoreId.toString(), 1); + } + + pendingMaterialExpiration.cancelMaterialTimer(fileStoreId); + bulkScanMaterialExpiration.cancelMaterialTimer(fileStoreId); + initiateMaterialForUnbundling(materialAddedEvent); + sender.send(envelop(materialAdded) + .withName(PUBLIC_PROSECUTIONCASEFILE_MATERIAL_ADDED) + .withMetadataFrom(materialAddedEvent)); + + } + + @Handles("prosecutioncasefile.events.material-added-v2") + public void handleMaterialAddedV2(final Envelope materialAddedEvent) { + final MaterialAddedV2 materialAdded = materialAddedEvent.payload(); + + final UUID fileStoreId = materialAdded.getMaterial(); + + uploadToMaterialContextV2(materialAddedEvent, fileStoreId.toString(), 2); + + pendingMaterialExpiration.cancelMaterialTimer(fileStoreId); + bulkScanMaterialExpiration.cancelMaterialTimer(fileStoreId); + + sender.send(envelop(materialAdded) + .withName(PUBLIC_PROSECUTIONCASEFILE_MATERIAL_ADDED_V2) + .withMetadataFrom(materialAddedEvent)); + } + + @Handles("prosecutioncasefile.events.material-added-with-warnings") + public void handleMaterialAddedWithWarnings(final Envelope materialAddedEvent) { + final MaterialAddedWithWarnings materialAdded = materialAddedEvent.payload(); + + final UUID fileStoreId = materialAdded.getMaterial(); + + uploadToMaterialContextWithWarnings(materialAddedEvent, fileStoreId.toString(), 2); + + pendingMaterialExpiration.cancelMaterialTimer(fileStoreId); + bulkScanMaterialExpiration.cancelMaterialTimer(fileStoreId); + + sender.send(envelop(materialAdded) + .withName(PUBLIC_PROSECUTIONCASEFILE_MATERIAL_ADDED_WITH_WARNINGS) + .withMetadataFrom(materialAddedEvent)); + } + + private void initiateMaterialForUnbundling(final Envelope materialAddedEvent) { + final MaterialAdded materialAdded = materialAddedEvent.payload(); + + final CmsDocumentIdentifier documentIdentifier = materialAdded.getCmsDocumentIdentifier(); + if (nonNull(documentIdentifier) && + referenceDataService.isDocumentNeedsUnBundling(documentIdentifier.getMaterialType())) { + + final DocumentBundleArrivedForUnbundling documentBundleArrivedForUnbundling = documentBundleArrivedForUnbundling() + .withCaseId(materialAdded.getCaseId()) + .withProsecutingAuthority(materialAdded.getProsecutingAuthority()) + .withProsecutorDefendantId(materialAdded.getProsecutorDefendantId()) + .withMaterial(materialAdded.getMaterial()) + .withCmsDocumentIdentifier(materialAdded.getCmsDocumentIdentifier()) + .withReceivedDateTime(materialAdded.getReceivedDateTime()) + .withDefendantName(materialAdded.getDefendantName()) + .build(); + sender.send(envelopeFrom(metadataFrom(materialAddedEvent.metadata()) + .withName(PUBLIC_MATERIAL_DOCUMENT_BUNDLE_ARRIVED_FOR_UNBUNDLE).build(), + objectToJsonObjectConverter.convert(documentBundleArrivedForUnbundling))); + } + } + + private void uploadToMaterialContext(final Envelope materialAddedEvent, final String fileStoreId, final int version) { + final MaterialAdded materialAdded = materialAddedEvent.payload(); + + final JsonObjectBuilder ccMetadataBuilder = createObjectBuilder() + .add(CASE_ID_FIELD, materialAdded.getCaseId().toString()) + .add(DOCUMENT_TYPE_ID_FIELD, materialAdded.getDocumentTypeId()) + .add(DOCUMENT_CATEGORY_FIELD, materialAdded.getDocumentCategory()) + .add(DOCUMENT_TYPE_DESCRIPTION_FIELD, materialAdded.getDocumentType()); + if (nonNull(materialAdded.getIsCpsCase())) { + ccMetadataBuilder.add(IS_CPS_CASE, materialAdded.getIsCpsCase()); + } + + if (nonNull(materialAdded.getReceivedDateTime())) { + ccMetadataBuilder.add(RECEIVED_DATE_TIME, materialAdded.getReceivedDateTime().toOffsetDateTime().toString()); + } + + if (DocumentCategory.DEFENDANT_LEVEL.toString().equalsIgnoreCase(materialAdded.getDocumentCategory())) { + ccMetadataBuilder.add(DEFENDANT_ID_FIELD, materialAdded.getDefendantId().toString()); + } + + if (nonNull(materialAdded.getSectionCode())) { + ccMetadataBuilder.add(SECTION_CODE, materialAdded.getSectionCode()); + } + + final JsonObject ccMetadata = ccMetadataBuilder.build(); + + final JsonObjectBuilder uploadFilePayloadBuilder = createObjectBuilder() + .add(MATERIAL_ID_FIELD, randomUUID().toString()) + .add(FILE_SERVICE_ID_FIELD, fileStoreId); + + if (nonNull(materialAdded.getMaterial().getIsUnbundledDocument()) && materialAdded.getMaterial().getIsUnbundledDocument()) { + uploadFilePayloadBuilder.add(IS_UNBUNDLED_DOCUMENT, true); + } + + sender.send(metadataHelper.envelopeWithCustomMetadata( + metadataFrom(materialAddedEvent.metadata()).withName(MATERIAL_COMMAND_UPLOAD_FILE).build(), + ccMetadata, + uploadFilePayloadBuilder.build(), version == 1 ? null : fileStoreId)); + } + + private void uploadToMaterialContextV2(final Envelope materialAddedEvent, final String fileStoreId, final int version) { + final MaterialAddedV2 materialAdded = materialAddedEvent.payload(); + + final JsonObjectBuilder ccMetadataBuilder = createObjectBuilder() + .add(DOCUMENT_TYPE_ID_FIELD, materialAdded.getDocumentTypeId()) + .add(DOCUMENT_CATEGORY_FIELD, materialAdded.getDocumentCategory()) + .add(DOCUMENT_TYPE_DESCRIPTION_FIELD, materialAdded.getMaterialType()); + + ofNullable(materialAdded.getCaseId()).ifPresent(caseId -> ccMetadataBuilder.add(CASE_ID_FIELD, caseId.toString())); + ofNullable(materialAdded.getCourtApplicationSubject()).ifPresent(courtApplicationSubject -> ccMetadataBuilder.add(APPLICATION_ID_FIELD, courtApplicationSubject.getCourtApplicationId().toString())); + + if (nonNull(materialAdded.getIsCpsCase())) { + ccMetadataBuilder.add(IS_CPS_CASE, materialAdded.getIsCpsCase()); + } + + if (nonNull(materialAdded.getReceivedDateTime())) { + ccMetadataBuilder.add(RECEIVED_DATE_TIME, materialAdded.getReceivedDateTime().toOffsetDateTime().toString()); + } + + if (DocumentCategory.DEFENDANT_LEVEL.toString().equalsIgnoreCase(materialAdded.getDocumentCategory())) { + ccMetadataBuilder.add(DEFENDANT_ID_FIELD, materialAdded.getDefendantId().toString()); + } + + final JsonObject ccMetadata = ccMetadataBuilder.build(); + + final JsonObjectBuilder uploadFilePayloadBuilder = createObjectBuilder() + .add(MATERIAL_ID_FIELD, randomUUID().toString()) + .add(FILE_SERVICE_ID_FIELD, fileStoreId); + + sender.send(metadataHelper.envelopeWithCustomMetadata( + metadataFrom(materialAddedEvent.metadata()).withName(MATERIAL_COMMAND_UPLOAD_FILE).build(), + ccMetadata, + uploadFilePayloadBuilder.build(), version == 1 ? null : fileStoreId)); + } + + private void uploadToMaterialContextWithWarnings(final Envelope materialAddedEvent, final String fileStoreId, final int version) { + final MaterialAddedWithWarnings materialAdded = materialAddedEvent.payload(); + + final JsonObjectBuilder ccMetadataBuilder = createObjectBuilder() + .add(DOCUMENT_TYPE_ID_FIELD, materialAdded.getDocumentTypeId()) + .add(DOCUMENT_CATEGORY_FIELD, materialAdded.getDocumentCategory()) + .add(DOCUMENT_TYPE_DESCRIPTION_FIELD, materialAdded.getMaterialType()); + ofNullable(materialAdded.getCaseId()).ifPresent(caseId -> ccMetadataBuilder.add(CASE_ID_FIELD, caseId.toString())); + ofNullable(materialAdded.getCourtApplicationSubject()).ifPresent(courtApplicationSubject -> ccMetadataBuilder.add(APPLICATION_ID_FIELD, courtApplicationSubject.getCourtApplicationId().toString())); + + if (nonNull(materialAdded.getIsCpsCase())) { + ccMetadataBuilder.add(IS_CPS_CASE, materialAdded.getIsCpsCase()); + } + + if (nonNull(materialAdded.getReceivedDateTime())) { + ccMetadataBuilder.add(RECEIVED_DATE_TIME, materialAdded.getReceivedDateTime().toOffsetDateTime().toString()); + } + + if (DocumentCategory.DEFENDANT_LEVEL.toString().equalsIgnoreCase(materialAdded.getDocumentCategory())) { + ccMetadataBuilder.add(DEFENDANT_ID_FIELD, materialAdded.getDefendantId().toString()); + } + + final JsonObject ccMetadata = ccMetadataBuilder.build(); + + final JsonObjectBuilder uploadFilePayloadBuilder = createObjectBuilder() + .add(MATERIAL_ID_FIELD, randomUUID().toString()) + .add(FILE_SERVICE_ID_FIELD, fileStoreId); + + sender.send(metadataHelper.envelopeWithCustomMetadata( + metadataFrom(materialAddedEvent.metadata()).withName(MATERIAL_COMMAND_UPLOAD_FILE).build(), + ccMetadata, + uploadFilePayloadBuilder.build(), version == 1 ? null : fileStoreId)); + } + + private JsonEnvelope getSJPUploadDocumentPayload(final Envelope materialAddedEvent, final UUID fileStoreId) { + final Metadata metadata = Envelope.metadataFrom(materialAddedEvent.metadata()).withName("sjp.upload-case-document").build(); + + final JsonObject payload = createObjectBuilder().add(CASE_ID_FIELD, materialAddedEvent.payload().getCaseId().toString()) + .add("caseDocument", fileStoreId.toString()) + .add("caseDocumentType", materialAddedEvent.payload().getMaterial().getDocumentType()) + .build(); + + return envelopeFrom(metadata, payload); + } + + @Handles("prosecutioncasefile.events.material-rejected") + public void handleMaterialRejected(final Envelope materialRejectedEnvelope) { + final MaterialRejected materialRejected = materialRejectedEnvelope.payload(); + final UUID fileStoreId = materialRejected.getMaterial().getFileStoreId(); + final JsonEnvelope materialRejectedJsonEnvelope = envelopeFrom(materialRejectedEnvelope.metadata(), NULL); + + sender.send(envelop(materialRejected) + .withName("public.prosecutioncasefile.material-rejected") + .withMetadataFrom(materialRejectedJsonEnvelope)); + + pendingMaterialExpiration.cancelMaterialTimer(fileStoreId); + bulkScanMaterialExpiration.cancelMaterialTimer(fileStoreId); + } + + @Handles("prosecutioncasefile.events.material-rejected-v2") + public void handleMaterialRejectedV2(final Envelope materialRejectedEnvelope) { + final MaterialRejectedV2 materialRejected = materialRejectedEnvelope.payload(); + final UUID fileStoreId = materialRejected.getMaterial(); + final JsonEnvelope materialRejectedJsonEnvelope = envelopeFrom(materialRejectedEnvelope.metadata(), NULL); + + sender.send(envelop(materialRejected) + .withName("public.prosecutioncasefile.material-rejected-v2") + .withMetadataFrom(materialRejectedJsonEnvelope)); + + pendingMaterialExpiration.cancelMaterialTimer(fileStoreId); + bulkScanMaterialExpiration.cancelMaterialTimer(fileStoreId); + } + + @Handles("prosecutioncasefile.events.material-rejected-with-warnings") + public void handleMaterialRejectedWithWarnings(final Envelope materialRejectedEnvelope) { + final MaterialRejectedWithWarnings materialRejectedWithWarnings = materialRejectedEnvelope.payload(); + final UUID fileStoreId = materialRejectedWithWarnings.getMaterial(); + final JsonEnvelope materialRejectedJsonEnvelope = envelopeFrom(materialRejectedEnvelope.metadata(), NULL); + + sender.send(envelop(materialRejectedWithWarnings) + .withName("public.prosecutioncasefile.material-rejected-with-warnings") + .withMetadataFrom(materialRejectedJsonEnvelope)); + + pendingMaterialExpiration.cancelMaterialTimer(fileStoreId); + bulkScanMaterialExpiration.cancelMaterialTimer(fileStoreId); + } + + @Handles("prosecutioncasefile.events.case-document-review-required") + public void handleDocumentReviewRequired(final Envelope materialPendingEnvelope) { + + final CaseDocumentReviewRequired caseDocumentReviewRequired = materialPendingEnvelope.payload(); + + final JsonEnvelope materialPendingJsonEnvelope = envelopeFrom(materialPendingEnvelope.metadata(), NULL); + + final DocumentReviewRequired documentReviewRequired = DocumentReviewRequired.documentReviewRequired() + .withCaseId(caseDocumentReviewRequired.getCaseId()) + .withCmsDocumentId(caseDocumentReviewRequired.getCmsDocumentId()) + .withDocumentType(caseDocumentReviewRequired.getDocumentType()) + .withErrorCodes(caseDocumentReviewRequired.getErrorCodes()) + .withFileStoreId(caseDocumentReviewRequired.getFileStoreId()) + .withReceivedDateTime(caseDocumentReviewRequired.getReceivedDateTime()) + .withSource(caseDocumentReviewRequired.getSource()) + .withProsecutingAuthority(caseDocumentReviewRequired.getProsecutingAuthority()) + .build(); + + sender.send(envelop(documentReviewRequired) + .withName("public.prosecutioncasefile.document-review-required") + .withMetadataFrom(materialPendingJsonEnvelope)); + } + + @Handles("prosecutioncasefile.events.case-document-review-required-v2") + public void handleDocumentReviewRequiredV2(final Envelope materialPendingEnvelope) { + + final CaseDocumentReviewRequired caseDocumentReviewRequired = materialPendingEnvelope.payload(); + + final JsonEnvelope materialPendingJsonEnvelope = envelopeFrom(materialPendingEnvelope.metadata(), NULL); + + final DocumentReviewRequired documentReviewRequired = DocumentReviewRequired.documentReviewRequired() + .withCaseId(caseDocumentReviewRequired.getCaseId()) + .withCmsDocumentId(caseDocumentReviewRequired.getCmsDocumentId()) + .withDocumentType(caseDocumentReviewRequired.getDocumentType()) + .withErrorCodes(caseDocumentReviewRequired.getErrorCodes()) + .withFileStoreId(caseDocumentReviewRequired.getFileStoreId()) + .withReceivedDateTime(caseDocumentReviewRequired.getReceivedDateTime()) + .withSource(caseDocumentReviewRequired.getSource()) + .withProsecutingAuthority(caseDocumentReviewRequired.getProsecutingAuthority()) + .build(); + + sender.send(envelop(documentReviewRequired) + .withName("public.prosecutioncasefile.document-review-required-v2") + .withMetadataFrom(materialPendingJsonEnvelope)); + } + + @Handles("prosecutioncasefile.events.bulkscan-material-rejected") + public void handleBulkScanMaterialRejected(final Envelope materialRejectedEnvelope) { + final BulkscanMaterialRejected materialRejected = materialRejectedEnvelope.payload(); + final UUID fileStoreId = materialRejected.getMaterial().getFileStoreId(); + final JsonEnvelope materialRejectedJsonEnvelope = envelopeFrom(materialRejectedEnvelope.metadata(), NULL); + sender.send(envelop(materialRejected).withName("public.prosecutioncasefile.bulkscan-material-followup").withMetadataFrom(materialRejectedJsonEnvelope)); + bulkScanMaterialExpiration.cancelMaterialTimer(fileStoreId); + } + + @Handles("prosecutioncasefile.events.idpc-material-rejected") + public void handleIdpcMaterialRejected(final Envelope idpcMaterialRejectedEnvelope) throws FileServiceException { + final IdpcMaterialRejected idpcMaterialRejected = idpcMaterialRejectedEnvelope.payload(); + final UUID fileServiceId = idpcMaterialRejected.getFileServiceId(); + + idpcPendingMaterialExpiration.cancelIdpcMaterialTimer(fileServiceId); + fileStorer.delete(fileServiceId); + } + + @Handles("prosecutioncasefile.events.material-pending") + public void handleMaterialPending(final Envelope materialPendingEnvelope) { + final MaterialPending materialPending = materialPendingEnvelope.payload(); + final UUID fileStoreId = materialPending.getMaterial().getFileStoreId(); + final UUID caseId = materialPending.getCaseId(); + final Metadata metadata = materialPendingEnvelope.metadata(); + + pendingMaterialExpiration.startMaterialTimer(fileStoreId, caseId, metadata); + bulkScanMaterialExpiration.startMaterialTimer(fileStoreId, caseId, metadata); + } + + @Handles("prosecutioncasefile.events.material-pending-v2") + public void handleMaterialPendingV2(final Envelope materialPendingEnvelope) { + final MaterialPendingV2 materialPendingV2 = materialPendingEnvelope.payload(); + final UUID fileStoreId = materialPendingV2.getMaterial(); + final UUID caseId = materialPendingV2.getCaseId(); + final Metadata metadata = materialPendingEnvelope.metadata(); + + pendingMaterialExpiration.startMaterialTimer(fileStoreId, caseId, metadata); + bulkScanMaterialExpiration.startMaterialTimer(fileStoreId, caseId, metadata); + + if (CollectionUtils.isNotEmpty(materialPendingV2.getWarnings())) { + sender.send(envelop(materialPendingV2) + .withName("public.prosecutioncasefile.material-pending-with-warnings") + .withMetadataFrom(materialPendingEnvelope)); + } + } + + @Handles("prosecutioncasefile.events.idpc-defendant-matched") + public void idpcDefendantMatch(final Envelope idpcDefendantMatch) { + + idpcUploadMaterialProcessService.startUploadFileProcess(idpcDefendantMatch); + idpcPendingMaterialExpiration.cancelIdpcMaterialTimer(idpcDefendantMatch.payload().getFileServiceId()); + } + + @Handles("prosecutioncasefile.events.idpc-defendant-match-pending") + public void handleIdpcDefendantMatchPending(final Envelope idpcNoCaseMatch) { + final IdpcDefendantMatchPending idpcDefendantMatchPending = idpcNoCaseMatch.payload(); + final UUID fileStoreId = idpcDefendantMatchPending.getFileServiceId(); + final UUID caseId = idpcDefendantMatchPending.getCaseId(); + final Metadata metadata = idpcNoCaseMatch.metadata(); + + idpcPendingMaterialExpiration.startMaterialTimer(fileStoreId, caseId, metadata); + } + + + @Handles("material.material-added") + public void handleMaterialAddedFromMaterialContext(final JsonEnvelope materialAddedEvent) throws FileServiceException { + final Optional ccMetadata = metadataHelper.getCCMetadata(materialAddedEvent); + final String fileStoreId = metadataHelper.getFileStoreId(materialAddedEvent); + + final UUID materialId = fromString(materialAddedEvent.payloadAsJsonObject().getString(MATERIAL_ID_FIELD)); + final String fileCloudLocationId = ccMetadata.map(c -> c.getString(FILE_CLOUD_LOCATION, null)).orElse(null); + + if (ccMetadata.isPresent() && isNull(fileCloudLocationId)) { + handleDocumentUploadedEvent(materialAddedEvent, ccMetadata.get(), materialId.toString(), fileStoreId); + } else { + final Optional idpcProcessId = MetadataHelper.getIdpcProcessId(materialAddedEvent); + if (idpcProcessId.isPresent()) { + final String fileServiceId = idpcUploadMaterialProcessService.signalUploadFileProcess(materialAddedEvent, idpcProcessId.get(), materialId); + fileStorer.delete(UUID.fromString(fileServiceId)); + } + } + } + + @Handles("prosecutioncasefile.events.court-document-added") + public void handleCourtDocumentAdded(final JsonEnvelope courtDocumentAddedEvent) { + final JsonObjectBuilder progressionPayloadBuilder = createObjectBuilder(); + + courtDocumentAddedEvent.asJsonObject() + .forEach((key, value) -> { + if (!"fileStoreId".equals(key)) { + progressionPayloadBuilder.add(key, value); + } + }); + + final JsonObject progressionPayload = progressionPayloadBuilder.build(); + + final Metadata metadata = Envelope.metadataFrom(courtDocumentAddedEvent.metadata()).withName("progression.add-court-document-v2").build(); + sender.sendAsAdmin(envelopeHelper.withMetadataInPayloadForEnvelope(envelopeFrom(metadata, progressionPayload))); + } + + private void handleDocumentUploadedEvent(final JsonEnvelope materialAddedEvent, final JsonObject ccMetadata, final String materialId, final String fileStoreId) { + final String caseId = ccMetadata.getString(CASE_ID_FIELD, null); + final String applicationId = ccMetadata.getString(APPLICATION_ID_FIELD, null); + final String documentTypeId = ccMetadata.getString(DOCUMENT_TYPE_ID_FIELD); + final String documentTypeDescription = ccMetadata.getString(DOCUMENT_TYPE_DESCRIPTION_FIELD); + final String documentCategory = ccMetadata.getString(DOCUMENT_CATEGORY_FIELD); + final String receivedDateTime = ccMetadata.containsKey(RECEIVED_DATE_TIME) ? ccMetadata.getString(RECEIVED_DATE_TIME) : null; + final String sectionCode = ccMetadata.containsKey(SECTION_CODE) ? ccMetadata.getString(SECTION_CODE) : null; + final Boolean isCpsCase = ccMetadata.containsKey(IS_CPS_CASE) ? ccMetadata.getBoolean(IS_CPS_CASE) : null; + + final JsonObjectBuilder payloadBuilder = createObjectBuilder() + .add("courtDocumentId", randomUUID().toString()) + .add("name", materialAddedEvent.payloadAsJsonObject().getJsonObject("fileDetails").getString("fileName")) + .add("mimeType", materialAddedEvent.payloadAsJsonObject().getJsonObject("fileDetails").getString("mimeType")) + .add(DOCUMENT_TYPE_ID_FIELD, documentTypeId) + .add(DOCUMENT_TYPE_DESCRIPTION_FIELD, documentTypeDescription) + .add("materials", buildMaterials(materialId, receivedDateTime)) + .add("containsFinancialMeans", false); + if (fileStoreId == null) { + payloadBuilder.add(IS_UNBUNDLED_DOCUMENT, materialAddedEvent.payloadAsJsonObject().getBoolean(IS_UNBUNDLED_DOCUMENT, false)); + ofNullable(isCpsCase).ifPresent(aBoolean -> payloadBuilder.add(IS_CPS_CASE, aBoolean)); + } + + createDocumentCategoryField(ccMetadata, caseId, applicationId, documentCategory, payloadBuilder); + + final JsonObjectBuilder progressionPayloadBuilder = createObjectBuilder(). + add("courtDocument", payloadBuilder.build()) + .add(MATERIAL_ID_FIELD, materialId); + + callAddCourtDocument(materialAddedEvent, fileStoreId, progressionPayloadBuilder, applicationId); + + if (null != sectionCode && sectionCode.equalsIgnoreCase(IDPC_SECTION_CODE)) { + final Metadata metadataForIdcpReceived = Envelope.metadataFrom(materialAddedEvent.metadata()).withName("public.prosecutioncasefile.defendant-idpc-added").build(); + + final JsonObjectBuilder jsonObjectBuilderForIdcpReceived = createObjectBuilder() + .add(CASE_ID_FIELD, caseId) + .add(MATERIAL_ID_FIELD, materialId) + .add(DEFENDANT_ID_FIELD, ccMetadata.getString(DEFENDANT_ID_FIELD)); + + if (receivedDateTime != null) { + jsonObjectBuilderForIdcpReceived.add("publishedDate", receivedDateTime); + } + + sender.send(envelopeFrom(metadataForIdcpReceived, jsonObjectBuilderForIdcpReceived.build())); + } + } + + private void createDocumentCategoryField(final JsonObject ccMetadata, final String caseId, final String applicationId, final String documentCategory, final JsonObjectBuilder payloadBuilder) { + if (DocumentCategory.DEFENDANT_LEVEL.toString().equalsIgnoreCase(documentCategory)) { + final String defendantId = ccMetadata.getString(DEFENDANT_ID_FIELD); + payloadBuilder.add(DOCUMENT_CATEGORY_FIELD, createObjectBuilder() + .add("defendantDocument", createObjectBuilder() + .add("prosecutionCaseId", caseId) + .add("defendants", createArrayBuilder() + .add(defendantId) + .build()) + .build()) + .build()); + } else if (DocumentCategory.CASE_LEVEL.toString().equalsIgnoreCase(documentCategory)) { + payloadBuilder.add(DOCUMENT_CATEGORY_FIELD, createObjectBuilder() + .add("caseDocument", createObjectBuilder() + .add("prosecutionCaseId", caseId) + .build()) + .build()); + } else if (DocumentCategory.APPLICATIONS.toString().equalsIgnoreCase(documentCategory)) { + payloadBuilder.add(DOCUMENT_CATEGORY_FIELD, createObjectBuilder() + .add("applicationDocument", createObjectBuilder() + .add(APPLICATION_ID_FIELD, applicationId) + .build()) + .build()); + } + } + + private JsonArray buildMaterials(final String materialId, final String receivedDateTime) { + JsonObjectBuilder materialBuilder = createObjectBuilder().add("id", materialId); + if (receivedDateTime != null) { + materialBuilder = materialBuilder.add(RECEIVED_DATE_TIME, receivedDateTime); + } + return createArrayBuilder().add(materialBuilder.build()) + .build(); + } + + @Handles("prosecutioncasefile.events.defendant-idpc-already-exists") + public void handleDefendantIdpcAlreadyExists(final JsonEnvelope envelope) throws FileServiceException { + fileStorer.delete(UUID.fromString(envelope.payloadAsJsonObject().getString(FILE_SERVICE_ID_FIELD))); + } + + private void callAddCourtDocument(final JsonEnvelope materialAddedEvent, final String fileStoreId, final JsonObjectBuilder progressionPayloadBuilder, final String applicationId) { + final Metadata metadata; + if (nonNull(fileStoreId)) { + progressionPayloadBuilder.add("fileStoreId", fileStoreId); + if (isNull(applicationId)) { + metadata = Envelope.metadataFrom(materialAddedEvent.metadata()).withName("prosecutioncasefile.command.add-case-court-document").build(); + } else { + metadata = Envelope.metadataFrom(materialAddedEvent.metadata()).withName("prosecutioncasefile.command.add-application-court-document").build(); + progressionPayloadBuilder.add(APPLICATION_ID_FIELD, applicationId); + } + } else { + metadata = Envelope.metadataFrom(materialAddedEvent.metadata()).withName("progression.add-court-document").build(); + } + final JsonObject progressionPayload = progressionPayloadBuilder.build(); + sender.sendAsAdmin(envelopeHelper.withMetadataInPayloadForEnvelope(envelopeFrom(metadata, progressionPayload))); + } + +} diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/PocaEventProcessor.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/PocaEventProcessor.java index ae7bdce6..036a35ba 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/PocaEventProcessor.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/PocaEventProcessor.java @@ -1,7 +1,7 @@ package uk.gov.moj.cpp.prosecution.casefile.event.processor; import static java.util.Objects.nonNull; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; import static uk.gov.justice.services.messaging.Envelope.metadataFrom; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; @@ -28,7 +28,7 @@ import java.util.UUID; import javax.inject.Inject; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; @@ -87,7 +87,7 @@ public void handleSubmitApplicationAccepted(final JsonEnvelope envelope) throws final CourtApplicationSubject courtApplicationSubject = CourtApplicationSubject.courtApplicationSubject().withCourtApplicationId(courtApplication.getId()).build(); - final JsonObject applicationMaterialCommandPayload = Json.createObjectBuilder() + final JsonObject applicationMaterialCommandPayload = JsonObjects.createObjectBuilder() .add("applicationId", courtApplication.getId().toString()) .add("submissionId", UUID.randomUUID().toString()) .add("material", fileId) diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ProgressionPublicEventProcessor.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ProgressionPublicEventProcessor.java index 9688b9e9..5a24955b 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ProgressionPublicEventProcessor.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ProgressionPublicEventProcessor.java @@ -6,7 +6,7 @@ import static java.util.Optional.ofNullable; import static java.util.UUID.fromString; import static java.util.stream.Collectors.toList; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.apache.commons.collections.CollectionUtils.isEmpty; import static org.slf4j.LoggerFactory.getLogger; import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/AddMaterialToCase.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/AddMaterialToCase.java index 9a2869f8..3597705e 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/AddMaterialToCase.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/AddMaterialToCase.java @@ -12,7 +12,7 @@ import javax.inject.Inject; import javax.inject.Named; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import org.activiti.engine.delegate.DelegateExecution; @@ -43,7 +43,7 @@ public void execute(final DelegateExecution execution) { final Metadata metadata = metadataFromString(metadataAsString); - final JsonObject payload = Json.createObjectBuilder() + final JsonObject payload = JsonObjects.createObjectBuilder() .add("id", documentReference) .add("caseId", caseId) .add("materialId", materialId) diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingCpsServeBcmExpiredDelegate.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingCpsServeBcmExpiredDelegate.java index 80de729a..4ef8e72f 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingCpsServeBcmExpiredDelegate.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingCpsServeBcmExpiredDelegate.java @@ -1,7 +1,7 @@ package uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.delegates; import static java.util.UUID.fromString; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; import static uk.gov.moj.cpp.prosecution.casefile.event.processor.utils.MetadataHelper.metadataFromString; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingCpsServePetExpiredDelegate.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingCpsServePetExpiredDelegate.java index fd8fcb0d..3c45b8d3 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingCpsServePetExpiredDelegate.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingCpsServePetExpiredDelegate.java @@ -1,7 +1,7 @@ package uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.delegates; import static java.util.UUID.fromString; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; import static uk.gov.moj.cpp.prosecution.casefile.event.processor.utils.MetadataHelper.metadataFromString; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingIdpcMaterialExpiredDelegate.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingIdpcMaterialExpiredDelegate.java index 6bee166c..cf43d358 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingIdpcMaterialExpiredDelegate.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingIdpcMaterialExpiredDelegate.java @@ -16,7 +16,7 @@ import javax.inject.Inject; import javax.inject.Named; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import org.activiti.engine.delegate.DelegateExecution; @@ -38,7 +38,7 @@ public void execute(final DelegateExecution execution) { final UUID fileStoreId = fromString(execution.getProcessBusinessKey()); final UUID caseId = execution.getVariable("caseId", UUID.class); final Metadata metadata = metadataFromString(execution.getVariable("metadata", String.class)); - final JsonObject payload = Json.createObjectBuilder() + final JsonObject payload = JsonObjects.createObjectBuilder() .add("caseId", caseId.toString()) .add("fileServiceId", fileStoreId.toString()) .build(); diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingMaterialExpiredDelegate.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingMaterialExpiredDelegate.java index 5fc19de7..63792d5d 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingMaterialExpiredDelegate.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingMaterialExpiredDelegate.java @@ -12,7 +12,7 @@ import javax.json.JsonObject; import java.util.UUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; import static uk.gov.justice.services.messaging.JsonEnvelope.metadataFrom; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/UploadFile.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/UploadFile.java index e320e81b..0d310a25 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/UploadFile.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/UploadFile.java @@ -14,7 +14,7 @@ import javax.inject.Inject; import javax.inject.Named; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import org.activiti.engine.delegate.DelegateExecution; @@ -40,7 +40,7 @@ public void execute(final DelegateExecution execution) { final String metadataAsString = execution.getVariable("metadata", String.class); final Metadata originalMetadata = metadataFromString(metadataAsString); - final JsonObject uploadFileCommandPayload = Json.createObjectBuilder() + final JsonObject uploadFileCommandPayload = JsonObjects.createObjectBuilder() .add("materialId", UUID.randomUUID().toString()) .add("fileServiceId", documentReference) .build(); diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/DocumentGeneratorService.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/DocumentGeneratorService.java index bf2f099b..534e2796 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/DocumentGeneratorService.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/DocumentGeneratorService.java @@ -1,6 +1,6 @@ package uk.gov.moj.cpp.prosecution.casefile.event.processor.service; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static javax.transaction.Transactional.TxType.REQUIRES_NEW; import uk.gov.justice.services.core.dispatcher.SystemUserProvider; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/MaterialService.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/MaterialService.java index 0c64ea94..05aa4779 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/MaterialService.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/MaterialService.java @@ -11,7 +11,7 @@ import uk.gov.justice.services.messaging.Metadata; import javax.inject.Inject; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; import java.util.UUID; @@ -49,7 +49,7 @@ public class MaterialService { public void uploadMaterial(final UUID fileServiceId, final UUID materialId, final Envelope envelope) { LOGGER.info("material being uploaded '{}' file service id '{}'", materialId, fileServiceId); final UUID userId = fromString(envelope.metadata().userId().orElseThrow(() -> new RuntimeException("UserId missing from event."))); - final JsonObject uploadMaterialPayload = Json.createObjectBuilder() + final JsonObject uploadMaterialPayload = JsonObjects.createObjectBuilder() .add(FIELD_MATERIAL_ID, materialId.toString()) .add(FIELD_FILE_SERVICE_ID, fileServiceId.toString()) .build(); @@ -64,17 +64,17 @@ private static JsonEnvelope assembleEnvelopeWithPayloadAndMetaDetails(final Json } private static Metadata createMetadataWithProcessIdAndUserId(final String id, final String name, final String userId) { - return metadataFrom(Json.createObjectBuilder() + return metadataFrom(JsonObjects.createObjectBuilder() .add(ID, id) .add(NAME, name) .add(SOURCE, ORIGINATOR_VALUE) - .add(CONTEXT, Json.createObjectBuilder() + .add(CONTEXT, JsonObjects.createObjectBuilder() .add(USER_ID, userId)) .build()).build(); } private static JsonObject addMetadataToPayload(final JsonObject load, final Metadata metadata) { - final JsonObjectBuilder job = Json.createObjectBuilder(); + final JsonObjectBuilder job = JsonObjects.createObjectBuilder(); load.entrySet().forEach(entry -> job.add(entry.getKey(), entry.getValue())); job.add(JsonEnvelope.METADATA, metadata.asJsonObject()); return job.build(); diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/ProsecutionCaseQueryService.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/ProsecutionCaseQueryService.java index 1a9e6f09..6a3bd376 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/ProsecutionCaseQueryService.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/ProsecutionCaseQueryService.java @@ -1,6 +1,6 @@ package uk.gov.moj.cpp.prosecution.casefile.event.processor.service; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; import static uk.gov.justice.services.messaging.Envelope.metadataFrom; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/ReferenceDataService.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/ReferenceDataService.java index 2238c884..04faa110 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/ReferenceDataService.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/ReferenceDataService.java @@ -2,7 +2,7 @@ import static java.util.Objects.nonNull; import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; import static uk.gov.justice.services.messaging.Envelope.metadataBuilder; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/GroupCasesSummonsTemplateHelper.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/GroupCasesSummonsTemplateHelper.java index be096163..3c823606 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/GroupCasesSummonsTemplateHelper.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/GroupCasesSummonsTemplateHelper.java @@ -2,8 +2,8 @@ import static java.util.Objects.isNull; import static java.util.Objects.nonNull; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.apache.commons.lang3.StringUtils.isNoneEmpty; import uk.gov.moj.cpp.prosecution.casefile.domain.GroupProsecutionList; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/MetadataHelper.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/MetadataHelper.java index 5378b239..c7c4136e 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/MetadataHelper.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/MetadataHelper.java @@ -6,7 +6,7 @@ import uk.gov.justice.services.messaging.JsonObjects; import uk.gov.justice.services.messaging.Metadata; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; import javax.json.JsonReader; @@ -37,7 +37,7 @@ public static String metadataToString(final Metadata metadata) { } private static JsonObject readJson(final String json) { - try (final JsonReader jsonReader = Json.createReader(new StringReader(json))) { + try (final JsonReader jsonReader = JsonObjects.createReader(new StringReader(json))) { return jsonReader.readObject(); } } diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CaseFilteredEventProcessorTest.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CaseFilteredEventProcessorTest.java index 67b9c2eb..dbc89051 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CaseFilteredEventProcessorTest.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CaseFilteredEventProcessorTest.java @@ -2,7 +2,7 @@ import static java.util.Objects.nonNull; import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CpsServeMaterialEventProcessorTest.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CpsServeMaterialEventProcessorTest.java index dc945293..009a0152 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CpsServeMaterialEventProcessorTest.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CpsServeMaterialEventProcessorTest.java @@ -3,8 +3,8 @@ import static java.util.Arrays.asList; import static java.util.Collections.singletonList; import static java.util.UUID.randomUUID; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.hasSize; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/MaterialEventProcessorTest.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/MaterialEventProcessorTest.java index 42458c99..cd900c14 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/MaterialEventProcessorTest.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/MaterialEventProcessorTest.java @@ -1,1290 +1,1290 @@ -package uk.gov.moj.cpp.prosecution.casefile.event.processor; - -import static com.jayway.jsonpath.matchers.JsonPathMatchers.hasNoJsonPath; -import static com.jayway.jsonpath.matchers.JsonPathMatchers.withJsonPath; -import static java.util.Objects.nonNull; -import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; -import static javax.json.JsonValue.NULL; -import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric; -import static org.codehaus.groovy.runtime.InvokerHelper.asList; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.hamcrest.core.AllOf.allOf; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoInteractions; -import static org.mockito.Mockito.when; -import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; -import static uk.gov.justice.services.messaging.Envelope.envelopeFrom; -import static uk.gov.justice.services.messaging.Envelope.metadataBuilder; -import static uk.gov.justice.services.test.utils.core.matchers.HandlerMatcher.isHandler; -import static uk.gov.justice.services.test.utils.core.matchers.HandlerMethodMatcher.method; -import static uk.gov.justice.services.test.utils.core.matchers.JsonEnvelopeMatcher.jsonEnvelope; -import static uk.gov.justice.services.test.utils.core.matchers.JsonEnvelopeMetadataMatcher.metadata; -import static uk.gov.justice.services.test.utils.core.matchers.JsonEnvelopePayloadMatcher.payloadIsJson; -import static uk.gov.justice.services.test.utils.core.messaging.MetadataBuilderFactory.metadataWithRandomUUID; -import static uk.gov.justice.services.test.utils.core.messaging.MetadataBuilderFactory.metadataWithRandomUUIDAndName; -import static uk.gov.moj.cpp.prosecution.casefile.domain.DomainConstants.PROBLEM_CODE_DOCUMENT_NOT_MATCHED; -import static uk.gov.moj.cpp.prosecution.casefile.domain.DomainConstants.SOURCE_CPS_FOR_PUBLIC_EVENTS; -import static uk.gov.moj.cpp.prosecution.casefile.event.processor.MaterialEventProcessor.IS_CPS_CASE; -import static uk.gov.moj.cpp.prosecution.casefile.event.processor.MaterialEventProcessor.PUBLIC_MATERIAL_DOCUMENT_BUNDLE_ARRIVED_FOR_UNBUNDLE; -import static uk.gov.moj.cpp.prosecution.casefile.event.processor.utils.MetadataHelper.metadataWithIdpcProcessId; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.CmsDocumentIdentifier.cmsDocumentIdentifier; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Material.material; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Problem.problem; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.ProblemValue.problemValue; -import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.ProsecutionCaseSubject.prosecutionCaseSubject; -import static uk.gov.moj.cps.prosecutioncasefile.domain.event.Defendant.defendant; -import static uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcDefendantMatchPending.idpcDefendantMatchPending; -import static uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcDefendantMatched.idpcDefendantMatched; -import static uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcMaterialRejected.idpcMaterialRejected; -import static uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAdded.materialAdded; -import static uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAddedV2.materialAddedV2; -import static uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAddedWithWarnings.materialAddedWithWarnings; -import static uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialPending.materialPending; -import static uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialPendingV2.materialPendingV2; -import static uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejected.materialRejected; -import static uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejectedV2.materialRejectedV2; -import static uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejectedWithWarnings.materialRejectedWithWarnings; - -import uk.gov.justice.services.common.converter.ObjectToJsonObjectConverter; -import uk.gov.justice.services.common.converter.jackson.ObjectMapperProducer; -import uk.gov.justice.services.core.sender.Sender; -import uk.gov.justice.services.fileservice.api.FileStorer; -import uk.gov.justice.services.messaging.Envelope; -import uk.gov.justice.services.messaging.JsonEnvelope; -import uk.gov.justice.services.messaging.JsonObjects; -import uk.gov.justice.services.messaging.Metadata; -import uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.BulkScanMaterialExpiration; -import uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.IdpcUploadMaterialProcessService; -import uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.PendingIdpcMaterialExpiration; -import uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.PendingMaterialExpiration; -import uk.gov.moj.cpp.prosecution.casefile.event.processor.service.ReferenceDataService; -import uk.gov.moj.cpp.prosecution.casefile.event.processor.utils.EnvelopeHelper; -import uk.gov.moj.cpp.prosecution.casefile.event.processor.utils.MetadataHelper; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.DefendantSubject; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Material; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Problem; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.BulkscanMaterialRejected; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.CaseDocumentReviewRequired; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.DocumentReviewRequired; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.DocumentType; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcDefendantMatchPending; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcDefendantMatched; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcMaterialRejected; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAdded; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAddedV2; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAddedWithWarnings; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialPending; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialPendingV2; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejected; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejectedV2; -import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejectedWithWarnings; - -import java.time.ZonedDateTime; -import java.util.Collections; -import java.util.Optional; -import java.util.UUID; - -import javax.json.JsonObject; -import javax.json.JsonObjectBuilder; - -import com.google.common.collect.ImmutableList; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; -import org.mockito.junit.jupiter.MockitoExtension; - -@ExtendWith(MockitoExtension.class) -class MaterialEventProcessorTest { - - private static final String UPLOAD_FILE_TO_MATERIAL_CONTEXT = "material.command.upload-file"; - private static final String MATERIAL_ADDED_IN_MATERIAL_CONTEXT = "material.material-added"; - private static final String PROGRESSION_ADD_COURT_DOCUMENT = "progression.add-court-document"; - private static final String FILE_NAME = "File name"; - private static final String FILE_CLOUD_LOCATION = "fileCloudLocation"; - - @Mock - private Sender sender; - @Mock - private EnvelopeHelper envelopeHelper; - @Mock - private FileStorer fileStorer; - @Mock - private MetadataHelper metadataHelper; - @Mock - private PendingMaterialExpiration pendingMaterialExpiration; - @Mock - private PendingIdpcMaterialExpiration pendingIdpcMaterialExpiration; - @Mock - private IdpcUploadMaterialProcessService idpcUploadMaterialProcessService; - @Mock - private BulkScanMaterialExpiration bulkScanMaterialExpiration; - @InjectMocks - private MaterialEventProcessor materialEventProcessor; - @Captor - private ArgumentCaptor jsonEnvelopeCaptor; - @Captor - private ArgumentCaptor envelopeArgumentCaptor; - @Captor - private ArgumentCaptor metadataArgumentCaptor; - @Captor - private ArgumentCaptor jsonObjectArgumentCaptor; - - @Mock - private ReferenceDataService referencedataService; - - @Spy - private ObjectToJsonObjectConverter objectToJsonObjectConverter = new ObjectToJsonObjectConverter(new ObjectMapperProducer().objectMapper()); - - - private static Envelope createMaterialAddedEvent() { - return envelopeFrom( - metadataWithRandomUUID("prosecutioncasefile.events.material-added"), - materialAdded() - .withCaseId(randomUUID()) - .withMaterial(randomMaterial(null, false)) - .withCaseType("SJP") - .build()); - } - - private static JsonEnvelope createDocumentAddedPayloadForNonSJP(Boolean isCpsCase) { - final Metadata metadata = - JsonEnvelope.metadataFrom( - getCCMetadataJsonObjectCaseLevel(isCpsCase, false)) - .build(); - - final JsonObject payload = createObjectBuilder() - .add("materialId", randomUUID().toString()) - .add("fileDetails", createObjectBuilder().add("fileName", FILE_NAME).add("mimeType", "application/pdf")) - .build(); - - return JsonEnvelope.envelopeFrom(metadata, payload); - } - - private static JsonEnvelope createDocumentAddedV2PayloadForNonSJP(Boolean isCpsCase, String fileStoreId) { - final Metadata metadata = - JsonEnvelope.metadataFrom( - getCCMetadataJsonObjectCaseLevel(isCpsCase, fileStoreId)) - .build(); - - final JsonObject payload = createObjectBuilder() - .add("materialId", randomUUID().toString()) - .add("fileDetails", createObjectBuilder().add("fileName", FILE_NAME).add("mimeType", "application/pdf")) - .build(); - - return JsonEnvelope.envelopeFrom(metadata, payload); - } - - private static JsonEnvelope createDocumentAddedPrivateV2PayloadForNonSJP(Boolean isCpsCase, String fileStoreId) { - final Metadata metadata = - JsonEnvelope.metadataFrom( - getCCMetadataJsonObjectCaseLevel(isCpsCase, fileStoreId)) - .build(); - - final JsonObject payload = createObjectBuilder() - .add("materialId", randomUUID().toString()) - .add("courtDocument", createObjectBuilder().add("courtDocumentId", "courtDocumentId") - .add("name", FILE_NAME).build()).build(); - - return JsonEnvelope.envelopeFrom(metadata, payload); - } - - private static JsonObject getCCMetadataJsonObjectCaseLevel(Boolean isCpsCase, boolean isMigratedCase) { - JsonObjectBuilder builder = createObjectBuilder() - .add("caseId", randomUUID().toString()) - .add("documentTypeDescription", "SJPN") - .add("defendantId", randomUUID().toString()) - .add("documentCategory", "Case level") - .add("documentTypeId", randomUUID().toString()) - .add("receivedDateTime", ZonedDateTime.now().toString()) - .add("sectionCode", "IDPC"); - if (isCpsCase != null) { - builder.add(IS_CPS_CASE, isCpsCase); - } - - if (isMigratedCase) { - builder.add(FILE_CLOUD_LOCATION, "azure.net"); - } - - return JsonObjects.createObjectBuilder(metadataBuilder() - .withId(randomUUID()) - .withName(MATERIAL_ADDED_IN_MATERIAL_CONTEXT) - .build().asJsonObject()) - .add("ccMetadata", builder) - .build(); - } - - private static JsonObject getCCMetadataJsonObjectCaseLevel(Boolean isCpsCase, String fileStoreId) { - JsonObjectBuilder builder = createObjectBuilder() - .add("caseId", randomUUID().toString()) - .add("documentTypeDescription", "SJPN") - .add("defendantId", randomUUID().toString()) - .add("documentCategory", "Case level") - .add("documentTypeId", randomUUID().toString()) - .add("receivedDateTime", ZonedDateTime.now().toString()) - .add("sectionCode", "IDPC"); - if (isCpsCase != null) { - builder.add(IS_CPS_CASE, isCpsCase); - } - - return JsonObjects.createObjectBuilder(metadataBuilder() - .withId(randomUUID()) - .withName(MATERIAL_ADDED_IN_MATERIAL_CONTEXT) - .build().asJsonObject()) - .add("ccMetadata", builder) - .add("fileStoreId", fileStoreId) - .build(); - } - - private static JsonObject getCCMetadataJsonObjectDefendantLevel() { - return JsonObjects.createObjectBuilder(metadataBuilder() - .withId(randomUUID()) - .withName(MATERIAL_ADDED_IN_MATERIAL_CONTEXT) - .build().asJsonObject()) - .add("ccMetadata", createObjectBuilder() - .add("caseId", randomUUID().toString()) - .add("documentTypeDescription", "SJPN") - .add("defendantId", randomUUID().toString()) - .add("documentCategory", "Defendant level") - .add("documentTypeId", randomUUID().toString()) - .add("receivedDateTime", ZonedDateTime.now().toString()) - .add("sectionCode", "IDPC")) - - - .build(); - } - - private static Envelope createMaterialAddedEventForNonSJP(final Boolean isCpsCase, final boolean isUnbundledDocument) { - MaterialAdded.Builder builder = materialAdded() - .withCaseId(randomUUID()) - .withMaterial(randomMaterial(null, isUnbundledDocument)) - .withCaseType("CC") - .withDocumentCategory("Defendant level") - .withDocumentTypeId(randomUUID().toString()) - .withDocumentType("DocumentType") - .withProsecutorDefendantId(randomUUID().toString()) - .withDefendantId(randomUUID()) - .withReceivedDateTime(ZonedDateTime.now()) - .withSectionCode("IPDC"); - - if (isCpsCase != null) { - builder.withIsCpsCase(isCpsCase); - } - - return envelopeFrom( - metadataWithRandomUUID("prosecutioncasefile.events.material-added"), - builder.build()); - } - - private static Envelope createMaterialAddedV2EventForNonSJP(final Boolean isCpsCase, final boolean isUnbundledDocument) { - MaterialAddedV2.Builder builder = materialAddedV2() - .withCaseId(randomUUID()) - .withCaseType("CC") - .withMaterial(randomUUID()) - .withMaterialType("IDPC bundle") - .withMaterialContentType("application/pdf") - .withMaterialName("Statement") - .withFileName(FILE_NAME) - .withDocumentTypeId("51cac7fb-387c-4d19-9c80-8963fa8cf223") - .withDocumentCategory("Case level") - .withDefendantId(randomUUID()) - .withDefendantName("John Wick") - .withProsecutionCaseSubject(prosecutionCaseSubject() - .withProsecutingAuthority(randomAlphanumeric(5)) - .withDefendantSubject(DefendantSubject.defendantSubject() - .withProsecutorDefendantId(randomAlphanumeric(5)) - .build()) - .build()) - .withReceivedDateTime(ZonedDateTime.now()); - - if (isCpsCase != null) { - builder.withIsCpsCase(isCpsCase); - } - - return envelopeFrom( - metadataWithRandomUUID("prosecutioncasefile.events.material-added-v2"), - builder.build()); - } - - private static Envelope createMaterialAddedWithWarningsEventForNonSJP(final Boolean isCpsCase, final boolean isUnbundledDocument) { - final Problem warning = Problem.problem() - .withCode("problemCode") - .build(); - MaterialAddedWithWarnings.Builder builder = materialAddedWithWarnings() - .withCaseId(randomUUID()) - .withCaseType("CC") - .withMaterial(randomUUID()) - .withMaterialType("IDPC bundle") - .withMaterialContentType("application/pdf") - .withMaterialName("Statement") - .withFileName(FILE_NAME) - .withDocumentTypeId("51cac7fb-387c-4d19-9c80-8963fa8cf223") - .withDocumentCategory("Case level") - .withDefendantId(randomUUID()) - .withDefendantName("John Wick") - .withProsecutionCaseSubject(prosecutionCaseSubject() - .withProsecutingAuthority(randomAlphanumeric(5)) - .withDefendantSubject(DefendantSubject.defendantSubject() - .withProsecutorDefendantId(randomAlphanumeric(5)) - .build()) - .build()) - .withReceivedDateTime(ZonedDateTime.now()) - .withWarnings(ImmutableList.of(warning)); - - if (isCpsCase != null) { - builder.withIsCpsCase(isCpsCase); - } - - return envelopeFrom( - metadataWithRandomUUID("prosecutioncasefile.events.material-added-with-warnings"), - builder.build()); - } - - private static Envelope createMaterialPendingEvent() { - return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.material-pending"), - materialPending() - .withCaseId(randomUUID()) - .withMaterial(randomMaterial(null, false)) - .build()); - } - - private static Envelope createMaterialPendingV2Event() { - return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.material-pending-v2"), - materialPendingV2() - .withCaseId(randomUUID()) - .withMaterial(randomUUID()) - .build()); - } - - private static Envelope createMaterialPendingWithWarningsEvent() { - return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.material-pending-v2"), - materialPendingV2() - .withCaseId(randomUUID()) - .withMaterial(randomUUID()) - .withWarnings(Collections.singletonList(Problem.problem() - .withCode("code") - .build())) - .build()); - } - - private static Material randomMaterial(final String documentType, final boolean isUnbundledDocument) { - return material() - .withFileStoreId(randomUUID()) - .withDocumentType(nonNull(documentType) ? documentType : randomAlphanumeric(5)) - .withFileType(randomAlphanumeric(5)) - .withIsUnbundledDocument(isUnbundledDocument) - .build(); - } - - @Test - void shouldHandleMaterialRejected() { - assertThat(new MaterialEventProcessor(), isHandler(EVENT_PROCESSOR) - .with(method("handleMaterialAdded").thatHandles("prosecutioncasefile.events.material-added")) - .with(method("handleMaterialRejected").thatHandles("prosecutioncasefile.events.material-rejected")) - .with(method("handleMaterialPending").thatHandles("prosecutioncasefile.events.material-pending")) - .with(method("handleDocumentReviewRequired").thatHandles("prosecutioncasefile.events.case-document-review-required")) - ); - } - - @Test - void shouldHandleMaterialRejectedV2() { - assertThat(new MaterialEventProcessor(), isHandler(EVENT_PROCESSOR) - .with(method("handleMaterialAddedV2").thatHandles("prosecutioncasefile.events.material-added-v2")) - .with(method("handleMaterialAddedWithWarnings").thatHandles("prosecutioncasefile.events.material-added-with-warnings")) - .with(method("handleMaterialRejectedV2").thatHandles("prosecutioncasefile.events.material-rejected-v2")) - .with(method("handleMaterialRejectedWithWarnings").thatHandles("prosecutioncasefile.events.material-rejected-with-warnings")) - .with(method("handleMaterialPendingV2").thatHandles("prosecutioncasefile.events.material-pending-v2")) - .with(method("handleMaterialPendingWithWarnings").thatHandles("prosecutioncasefile.events.material-pending-with-warnings")) - .with(method("handleDocumentReviewRequiredV2").thatHandles("prosecutioncasefile.events.case-document-review-required-v2")) - ); - } - - @Test - void shouldHandleMaterialAddedEventForSJP() { - final Envelope materialAddedEvent = createMaterialAddedEvent(); - final MaterialAdded materialAdded = materialAddedEvent.payload(); - - final Envelope envelope = Envelope.envelopeFrom(metadataWithRandomUUIDAndName(), NULL); - - when(envelopeHelper.withMetadataInPayloadForEnvelope(any())).thenReturn(envelope); - - materialEventProcessor.handleMaterialAdded(materialAddedEvent); - - verify(envelopeHelper).withMetadataInPayloadForEnvelope(jsonEnvelopeCaptor.capture()); - verify(sender).sendAsAdmin(envelope); - - assertThat(jsonEnvelopeCaptor.getValue(), is(jsonEnvelope( - metadata().envelopedWith(materialAddedEvent.metadata()) - .withName("sjp.upload-case-document") - .withCausationIds(), - payloadIsJson(allOf( - withJsonPath("$.caseId", equalTo(materialAdded.getCaseId().toString())), - withJsonPath("$.caseDocument", equalTo(materialAdded.getMaterial().getFileStoreId().toString())), - withJsonPath("$.caseDocumentType", equalTo(materialAdded.getMaterial().getDocumentType())) - ))).thatMatchesSchema() - )); - - verify(pendingMaterialExpiration).cancelMaterialTimer(materialAdded.getMaterial().getFileStoreId()); - } - - @Test - void shouldUploadMaterialWhenMaterialAddedEventForNonSJP() { - final boolean isUnbundledDocument = true; - final Envelope materialAddedEvent = createMaterialAddedEventForNonSJP(null, isUnbundledDocument); - - final JsonEnvelope jsonEnvelope = JsonEnvelope.envelopeFrom(materialAddedEvent.metadata(), NULL); - when(metadataHelper.envelopeWithCustomMetadata(any(), any(), any(), any())).thenReturn(jsonEnvelope); - - materialEventProcessor.handleMaterialAdded(materialAddedEvent); - - verifyUploadMaterialWhenMaterialAddedEventForNonSJP(materialAddedEvent, jsonEnvelope, false, isUnbundledDocument); - } - - @Test - void shouldUploadMaterialWhenMaterialAddedV2EventForNonSJP() { - final boolean isUnbundledDocument = true; - final Envelope materialAddedEvent = createMaterialAddedV2EventForNonSJP(null, isUnbundledDocument); - - final JsonEnvelope jsonEnvelope = JsonEnvelope.envelopeFrom(materialAddedEvent.metadata(), NULL); - when(metadataHelper.envelopeWithCustomMetadata(any(), any(), any(), any())).thenReturn(jsonEnvelope); - - materialEventProcessor.handleMaterialAddedV2(materialAddedEvent); - - verifyUploadMaterialWhenMaterialAddedV2EventForNonSJP(materialAddedEvent, jsonEnvelope, false, materialAddedEvent.payload().getMaterial().toString()); - } - - @Test - void shouldUploadMaterialWhenMaterialAddedWithWarningsEventForNonSJP() { - final boolean isUnbundledDocument = true; - final Envelope materialAddedEvent = createMaterialAddedWithWarningsEventForNonSJP(null, isUnbundledDocument); - - final JsonEnvelope jsonEnvelope = JsonEnvelope.envelopeFrom(materialAddedEvent.metadata(), NULL); - when(metadataHelper.envelopeWithCustomMetadata(any(), any(), any(), any())).thenReturn(jsonEnvelope); - - materialEventProcessor.handleMaterialAddedWithWarnings(materialAddedEvent); - - verifyUploadMaterialWhenMaterialAddedWithWarningsEventForNonSJP(materialAddedEvent, jsonEnvelope, false, materialAddedEvent.payload().getMaterial().toString()); - } - - @Test - void shouldNotInitiateUnbundlingWhenMaterialHasNoCmsIdendifier() { - final Envelope materialAddedEvent = createMaterialAddedEventForNonSJP(null, false); - - final JsonEnvelope jsonEnvelope = JsonEnvelope.envelopeFrom(materialAddedEvent.metadata(), NULL); - when(metadataHelper.envelopeWithCustomMetadata(any(), any(), any(), any())).thenReturn(jsonEnvelope); - - materialEventProcessor.handleMaterialAdded(materialAddedEvent); - - verifyNoInteractions(referencedataService); - } - - @Test - void shouldInitiateUnbundlingWhenMaterialHasCmsIdendifierAndDocumentNeedUnbundling() { - final Envelope materialAddedEvent = createMaterialAddedEventWithCmsIdentifier(); - - final var jsonEnvelope = JsonEnvelope.envelopeFrom(materialAddedEvent.metadata(), NULL); - when(metadataHelper.envelopeWithCustomMetadata(any(), any(), any(), any())).thenReturn(jsonEnvelope); - when(referencedataService.isDocumentNeedsUnBundling(anyInt())).thenReturn(true); - - materialEventProcessor.handleMaterialAdded(materialAddedEvent); - - verify(referencedataService).isDocumentNeedsUnBundling(anyInt()); - verify(sender, times(2)).send(jsonEnvelopeCaptor.capture()); - - assertThat(jsonEnvelopeCaptor.getAllValues().get(1).metadata().name(), is(PUBLIC_MATERIAL_DOCUMENT_BUNDLE_ARRIVED_FOR_UNBUNDLE)); - assertThat(jsonEnvelopeCaptor.getAllValues().get(1).payloadAsJsonObject().getString("caseId"), notNullValue()); - assertThat(jsonEnvelopeCaptor.getAllValues().get(1).payloadAsJsonObject().getString("prosecutorDefendantId"), notNullValue()); - assertThat(jsonEnvelopeCaptor.getAllValues().get(1).payloadAsJsonObject().getString("prosecutingAuthority"), notNullValue()); - assertThat(jsonEnvelopeCaptor.getAllValues().get(1).payloadAsJsonObject().getJsonObject("material"), notNullValue()); - assertThat(jsonEnvelopeCaptor.getAllValues().get(1).payloadAsJsonObject().getJsonObject("cmsDocumentIdentifier").getInt("materialType"), is(1)); - assertThat(jsonEnvelopeCaptor.getAllValues().get(1).payloadAsJsonObject().getString("receivedDateTime"), notNullValue()); - assertThat(jsonEnvelopeCaptor.getAllValues().get(1).payloadAsJsonObject().getString("defendantName"), is("John Wick")); - } - - @Test - void shouldNotEmitDocumentBundleArrivedForUnbundlingEventWhenDocumentNotMarkedForUnbundling() { - final Envelope materialAddedEvent = createMaterialAddedEventWithCmsIdentifier(); - - final JsonEnvelope jsonEnvelope = JsonEnvelope.envelopeFrom(materialAddedEvent.metadata(), NULL); - when(metadataHelper.envelopeWithCustomMetadata(any(), any(), any(), any())).thenReturn(jsonEnvelope); - when(referencedataService.isDocumentNeedsUnBundling(anyInt())).thenReturn(false); - - materialEventProcessor.handleMaterialAdded(materialAddedEvent); - - verify(referencedataService).isDocumentNeedsUnBundling(anyInt()); - verify(sender, times(2)).send(any()); - } - - @Test - void shouldHandleDocumentAddedEventForNonSJPCaseLevel() throws Exception { - final JsonEnvelope materialAddedEventFromMaterialContext = createDocumentAddedPayloadForNonSJP(null); - final JsonObject ccMetadataJsonObject = getCCMetadataJsonObjectCaseLevel(null, false).getJsonObject("ccMetadata"); - - when(metadataHelper.getCCMetadata(materialAddedEventFromMaterialContext)).thenReturn(Optional.of(ccMetadataJsonObject)); - - final Envelope envelope = JsonEnvelope.envelopeFrom(metadataWithRandomUUIDAndName(), NULL); - when(envelopeHelper.withMetadataInPayloadForEnvelope(any())).thenReturn(envelope); - - materialEventProcessor.handleMaterialAddedFromMaterialContext(materialAddedEventFromMaterialContext); - - verifyHandleDocumentAddedEvent(envelope, ccMetadataJsonObject, null); - } - - @Test - void shouldHandleMaterialAddedPublicEventWhenFileCloudLocationIsNotNull() throws Exception { - final JsonEnvelope materialAddedEventFromMaterialContext = createDocumentAddedPayloadForNonSJP(null); - final JsonObject ccMetadataJsonObject = getCCMetadataJsonObjectCaseLevel(null, true).getJsonObject("ccMetadata"); - - when(metadataHelper.getCCMetadata(materialAddedEventFromMaterialContext)).thenReturn(Optional.of(ccMetadataJsonObject)); - - materialEventProcessor.handleMaterialAddedFromMaterialContext(materialAddedEventFromMaterialContext); - - verify(idpcUploadMaterialProcessService,times(0)).signalUploadFileProcess(any(),any(),any()); - verify(sender,times(0)).sendAsAdmin(envelopeHelper.withMetadataInPayloadForEnvelope(any())); - } - - - @Test - void shouldCallCommandDocumentAddedWhenEventIsV2() throws Exception { - final String material = UUID.randomUUID().toString(); - final JsonEnvelope materialAddedEventFromMaterialContext = createDocumentAddedV2PayloadForNonSJP(null, material); - final JsonObject ccMetadataJsonObject = getCCMetadataJsonObjectCaseLevel(null, false).getJsonObject("ccMetadata"); - - when(metadataHelper.getCCMetadata(materialAddedEventFromMaterialContext)).thenReturn(Optional.of(ccMetadataJsonObject)); - when(metadataHelper.getFileStoreId(materialAddedEventFromMaterialContext)).thenReturn(material); - - final Envelope envelope = JsonEnvelope.envelopeFrom(metadataWithRandomUUIDAndName(), NULL); - when(envelopeHelper.withMetadataInPayloadForEnvelope(any())).thenReturn(envelope); - - materialEventProcessor.handleMaterialAddedFromMaterialContext(materialAddedEventFromMaterialContext); - - verifyHandleAddDocumentCommand(envelope, ccMetadataJsonObject, null, material); - } - - @Test - void shouldHandleDocumentAddedEventForNonSJPCaseLevelForV2() { - final String material = UUID.randomUUID().toString(); - final JsonEnvelope materialAddedEventFromMaterialContext = createDocumentAddedPrivateV2PayloadForNonSJP(null, material); - final JsonObject ccMetadataJsonObject = getCCMetadataJsonObjectCaseLevel(null, false).getJsonObject("ccMetadata"); - final Envelope envelope = JsonEnvelope.envelopeFrom(metadataWithRandomUUIDAndName(), NULL); - when(envelopeHelper.withMetadataInPayloadForEnvelope(any())).thenReturn(envelope); - - materialEventProcessor.handleCourtDocumentAdded(materialAddedEventFromMaterialContext); - - verifyHandleDocumentAddedV2Event(envelope, ccMetadataJsonObject, null); - } - - @Test - void shouldHandleDocumentAddedEventForIsCPSCaseFlagIsTrue() throws Exception { - final JsonEnvelope materialAddedEventFromMaterialContext = createDocumentAddedPayloadForNonSJP(true); - final JsonObject ccMetadataJsonObject = getCCMetadataJsonObjectCaseLevel(true, false).getJsonObject("ccMetadata"); - - when(metadataHelper.getCCMetadata(materialAddedEventFromMaterialContext)).thenReturn(Optional.of(ccMetadataJsonObject)); - - final Envelope envelope = JsonEnvelope.envelopeFrom(metadataWithRandomUUIDAndName(), NULL); - when(envelopeHelper.withMetadataInPayloadForEnvelope(any())).thenReturn(envelope); - - materialEventProcessor.handleMaterialAddedFromMaterialContext(materialAddedEventFromMaterialContext); - - verifyHandleDocumentAddedEvent(envelope, ccMetadataJsonObject, true); - } - - @Test - void shouldHandleDocumentAddedEventForIsCPSCaseFlagIsFalse() throws Exception { - final JsonEnvelope materialAddedEventFromMaterialContext = createDocumentAddedPayloadForNonSJP(false); - final JsonObject ccMetadataJsonObject = getCCMetadataJsonObjectCaseLevel(false, false).getJsonObject("ccMetadata"); - - when(metadataHelper.getCCMetadata(materialAddedEventFromMaterialContext)).thenReturn(Optional.of(ccMetadataJsonObject)); - - final Envelope envelope = Envelope.envelopeFrom(metadataWithRandomUUIDAndName(), NULL); - when(envelopeHelper.withMetadataInPayloadForEnvelope(any())).thenReturn(envelope); - - materialEventProcessor.handleMaterialAddedFromMaterialContext(materialAddedEventFromMaterialContext); - - verifyHandleDocumentAddedEvent(envelope, ccMetadataJsonObject, false); - } - - @Test - void shouldHandleDocumentAddedEventForNonSJPDefendantLevel() throws Exception { - final JsonEnvelope materialAddedEventFromMaterialContext = createDocumentAddedPayloadForNonSJP(null); - final JsonObject ccMetadataJsonObject = getCCMetadataJsonObjectDefendantLevel().getJsonObject("ccMetadata"); - - when(metadataHelper.getCCMetadata(materialAddedEventFromMaterialContext)).thenReturn(Optional.of(ccMetadataJsonObject)); - - final Envelope envelope = JsonEnvelope.envelopeFrom(metadataWithRandomUUIDAndName(), NULL); - when(envelopeHelper.withMetadataInPayloadForEnvelope(any())).thenReturn(envelope); - - materialEventProcessor.handleMaterialAddedFromMaterialContext(materialAddedEventFromMaterialContext); - - verify(envelopeHelper).withMetadataInPayloadForEnvelope(jsonEnvelopeCaptor.capture()); - verify(sender).sendAsAdmin(envelope); - - final JsonEnvelope addCourtDocument = jsonEnvelopeCaptor.getValue(); - - assertThat(addCourtDocument, is(jsonEnvelope( - metadata() - .withName(PROGRESSION_ADD_COURT_DOCUMENT), - payloadIsJson(allOf( - withJsonPath("$.courtDocument"), - withJsonPath("$.courtDocument.courtDocumentId"), - withJsonPath("$.courtDocument.name", equalTo(FILE_NAME)), - withJsonPath("$.courtDocument.documentTypeId", equalTo(ccMetadataJsonObject.getString("documentTypeId"))), - withJsonPath("$.courtDocument.materials[0].id", equalTo(addCourtDocument.payloadAsJsonObject().getString("materialId"))), - withJsonPath("$.courtDocument.documentCategory.defendantDocument.prosecutionCaseId", equalTo(ccMetadataJsonObject.getString("caseId"))), - withJsonPath("$.courtDocument.documentCategory.defendantDocument.defendants[0]", equalTo(ccMetadataJsonObject.getString("defendantId"))), - withJsonPath("$.materialId", equalTo(addCourtDocument.payloadAsJsonObject().getString("materialId"))) - ))))); - } - - @Test - void shouldHandleMaterialRejectedEvent() throws Exception { - final Envelope materialRejectedEnvelope = createMaterialRejectedEvent(null, null, null, null); - final MaterialRejected materialRejectedEvent = materialRejectedEnvelope.payload(); - - materialEventProcessor.handleMaterialRejected(materialRejectedEnvelope); - - verify(sender).send(envelopeArgumentCaptor.capture()); - - final Envelope publicMaterialRejectedEvent = envelopeArgumentCaptor.getValue(); - - assertThat(publicMaterialRejectedEvent.metadata(), metadata().envelopedWith(materialRejectedEnvelope.metadata()).withName("public.prosecutioncasefile.material-rejected")); - - final MaterialRejected publicEventPayload = publicMaterialRejectedEvent.payload(); - assertThat(publicEventPayload, is(materialRejectedEvent)); - - //verify(fileStorer).delete(materialRejectedEvent.getMaterial().getFileStoreId()); - verify(pendingMaterialExpiration).cancelMaterialTimer(materialRejectedEvent.getMaterial().getFileStoreId()); - } - - @Test - void shouldHandleMaterialRejectedV2Event() throws Exception { - final Envelope materialRejectedEnvelope = createMaterialRejectedV2Event(null, null, null, null); - final MaterialRejectedV2 materialRejectedEvent = materialRejectedEnvelope.payload(); - - materialEventProcessor.handleMaterialRejectedV2(materialRejectedEnvelope); - - verify(sender).send(envelopeArgumentCaptor.capture()); - - final Envelope publicMaterialRejectedEvent = envelopeArgumentCaptor.getValue(); - - assertThat(publicMaterialRejectedEvent.metadata(), metadata().envelopedWith(materialRejectedEnvelope.metadata()).withName("public.prosecutioncasefile.material-rejected-v2")); - - final MaterialRejectedV2 publicEventPayload = publicMaterialRejectedEvent.payload(); - assertThat(publicEventPayload, is(materialRejectedEvent)); - - //verify(fileStorer).delete(materialRejectedEvent.getMaterial()); - verify(pendingMaterialExpiration).cancelMaterialTimer(materialRejectedEvent.getMaterial()); - } - - @Test - void shouldHandleMaterialRejectedWithWarningsEvent() throws Exception { - final Envelope materialRejectedEnvelope = createMaterialRejectedWithWarningsEvent(null, null, null, null); - final MaterialRejectedWithWarnings materialRejectedEvent = materialRejectedEnvelope.payload(); - - materialEventProcessor.handleMaterialRejectedWithWarnings(materialRejectedEnvelope); - - verify(sender).send(envelopeArgumentCaptor.capture()); - - final Envelope publicMaterialRejectedEvent = envelopeArgumentCaptor.getValue(); - - assertThat(publicMaterialRejectedEvent.metadata(), metadata().envelopedWith(materialRejectedEnvelope.metadata()).withName("public.prosecutioncasefile.material-rejected-with-warnings")); - - final MaterialRejectedWithWarnings publicEventPayload = publicMaterialRejectedEvent.payload(); - assertThat(publicEventPayload, is(materialRejectedEvent)); - - //verify(fileStorer).delete(materialRejectedEvent.getMaterial()); - verify(pendingMaterialExpiration).cancelMaterialTimer(materialRejectedEvent.getMaterial()); - } - - @Test - void shouldHandleMaterialRejectedEventRaisedDocumentRequiredReview() throws Exception { - UUID documentId = randomUUID(); - final Envelope materialRejectedEnvelope = createMaterialRejectedEvent(true, documentId.toString(), ZonedDateTime.now(), "APPLICATION"); - final MaterialRejected materialRejectedEvent = materialRejectedEnvelope.payload(); - - materialEventProcessor.handleMaterialRejected(materialRejectedEnvelope); - - verify(sender, times(1)).send(envelopeArgumentCaptor.capture()); - - final Envelope publicMaterialRejectedEvent = envelopeArgumentCaptor.getAllValues().get(0); - - assertThat(publicMaterialRejectedEvent.metadata(), metadata().envelopedWith(materialRejectedEnvelope.metadata()).withName("public.prosecutioncasefile.material-rejected")); - - final MaterialRejected publicEventPayload = publicMaterialRejectedEvent.payload(); - assertThat(publicEventPayload, is(materialRejectedEvent)); - - //verify(fileStorer).delete(materialRejectedEvent.getMaterial().getFileStoreId()); - verify(pendingMaterialExpiration).cancelMaterialTimer(materialRejectedEvent.getMaterial().getFileStoreId()); - } - - @Test - void shouldHandleMaterialRejectedV2EventRaisedDocumentRequiredReview() throws Exception { - UUID material = randomUUID(); - final Envelope materialRejectedEnvelope = createMaterialRejectedV2Event(true, material, ZonedDateTime.now(), "APPLICATION"); - final MaterialRejectedV2 materialRejectedEvent = materialRejectedEnvelope.payload(); - - materialEventProcessor.handleMaterialRejectedV2(materialRejectedEnvelope); - - verify(sender, times(1)).send(envelopeArgumentCaptor.capture()); - - final Envelope publicMaterialRejectedEvent = envelopeArgumentCaptor.getAllValues().get(0); - - assertThat(publicMaterialRejectedEvent.metadata(), metadata().envelopedWith(materialRejectedEnvelope.metadata()).withName("public.prosecutioncasefile.material-rejected-v2")); - - final MaterialRejectedV2 publicEventPayload = publicMaterialRejectedEvent.payload(); - assertThat(publicEventPayload, is(materialRejectedEvent)); - - //verify(fileStorer).delete(materialRejectedEvent.getMaterial().getFileStoreId()); - verify(pendingMaterialExpiration).cancelMaterialTimer(materialRejectedEvent.getMaterial()); - } - - @Test - void shouldHandleMaterialRejectedEventRaisedDocumentRequiredReviewForOther() throws Exception { - UUID documentId = randomUUID(); - final Envelope materialRejectedEnvelope = createMaterialRejectedEvent(true, documentId.toString(), ZonedDateTime.now(), null); - final MaterialRejected materialRejectedEvent = materialRejectedEnvelope.payload(); - - materialEventProcessor.handleMaterialRejected(materialRejectedEnvelope); - - verify(sender, times(1)).send(envelopeArgumentCaptor.capture()); - - final Envelope publicMaterialRejectedEvent = envelopeArgumentCaptor.getAllValues().get(0); - - assertThat(publicMaterialRejectedEvent.metadata(), metadata().envelopedWith(materialRejectedEnvelope.metadata()).withName("public.prosecutioncasefile.material-rejected")); - - final MaterialRejected publicEventPayload = publicMaterialRejectedEvent.payload(); - assertThat(publicEventPayload, is(materialRejectedEvent)); - - //verify(fileStorer).delete(materialRejectedEvent.getMaterial().getFileStoreId()); - verify(pendingMaterialExpiration).cancelMaterialTimer(materialRejectedEvent.getMaterial().getFileStoreId()); - } - - @Test - void shouldHandleMaterialRejectedV2EventRaisedDocumentRequiredReviewForOther() throws Exception { - UUID material = randomUUID(); - final Envelope materialRejectedEnvelope = createMaterialRejectedV2Event(true, material, ZonedDateTime.now(), null); - final MaterialRejectedV2 materialRejectedEvent = materialRejectedEnvelope.payload(); - - materialEventProcessor.handleMaterialRejectedV2(materialRejectedEnvelope); - - verify(sender, times(1)).send(envelopeArgumentCaptor.capture()); - - final Envelope publicMaterialRejectedEvent = envelopeArgumentCaptor.getAllValues().get(0); - - assertThat(publicMaterialRejectedEvent.metadata(), metadata().envelopedWith(materialRejectedEnvelope.metadata()).withName("public.prosecutioncasefile.material-rejected-v2")); - - final MaterialRejectedV2 publicEventPayload = publicMaterialRejectedEvent.payload(); - assertThat(publicEventPayload, is(materialRejectedEvent)); - - //verify(fileStorer).delete(materialRejectedEvent.getMaterial().getFileStoreId()); - verify(pendingMaterialExpiration).cancelMaterialTimer(materialRejectedEvent.getMaterial()); - } - - @Test - void shouldhandleDocumentReviewRequiredEventAndRaiseDocumentRequiredReview() throws Exception { - final UUID documentId = randomUUID(); - final UUID fileStoreId = randomUUID(); - final Envelope caseDocumentReviewRequiredEnvelope = createMaterialRejectedEvent(documentId.toString(), ZonedDateTime.now(), fileStoreId); - - materialEventProcessor.handleDocumentReviewRequired(caseDocumentReviewRequiredEnvelope); - - verify(sender, times(1)).send(envelopeArgumentCaptor.capture()); - - final Envelope publicDocumentReviewEvent = envelopeArgumentCaptor.getAllValues().get(0); - - assertThat(publicDocumentReviewEvent.metadata(), metadata().envelopedWith(caseDocumentReviewRequiredEnvelope.metadata()).withName("public.prosecutioncasefile.document-review-required")); - - - final DocumentReviewRequired payload = publicDocumentReviewEvent.payload(); - assertThat(payload.getCmsDocumentId(), is(documentId.toString())); - assertThat(payload.getFileStoreId(), is(fileStoreId)); - assertThat(payload.getErrorCodes().get(0), is(PROBLEM_CODE_DOCUMENT_NOT_MATCHED)); - - } - - @Test - void shouldHandleMaterialPendingEvent() { - final Envelope materialPendingEvent = createMaterialPendingEvent(); - final MaterialPending materialPending = materialPendingEvent.payload(); - - materialEventProcessor.handleMaterialPending(materialPendingEvent); - - verify(pendingMaterialExpiration).startMaterialTimer(materialPending.getMaterial().getFileStoreId(), materialPending.getCaseId(), materialPendingEvent.metadata()); - } - - @Test - void shouldHandleMaterialPendingV2Event() { - final Envelope materialPendingEvent = createMaterialPendingV2Event(); - final MaterialPendingV2 materialPending = materialPendingEvent.payload(); - - materialEventProcessor.handleMaterialPendingV2(materialPendingEvent); - - verify(pendingMaterialExpiration).startMaterialTimer(materialPending.getMaterial(), materialPending.getCaseId(), materialPendingEvent.metadata()); - } - - @Test - void shouldHandleMaterialPendingWithWarningsEvent() { - final Envelope materialPendingEvent = createMaterialPendingWithWarningsEvent(); - final MaterialPendingV2 materialPending = materialPendingEvent.payload(); - - materialEventProcessor.handleMaterialPendingV2(materialPendingEvent); - - verify(pendingMaterialExpiration).startMaterialTimer(materialPending.getMaterial(), materialPending.getCaseId(), materialPendingEvent.metadata()); - - verify(sender).send(envelopeArgumentCaptor.capture()); - - final Envelope publicMaterialPendingEvent = envelopeArgumentCaptor.getValue(); - - assertThat(publicMaterialPendingEvent.metadata().asJsonObject().getString("name"), is("public.prosecutioncasefile.material-pending-with-warnings")); - - final MaterialPendingV2 publicEventPayload = publicMaterialPendingEvent.payload(); - assertThat(publicEventPayload, is(materialPending)); - - } - - @Test - void shouldUploadMaterialWhenMaterialAddedEventWihIsCspsCaseIsTRUE() { - final boolean isUnbundledDocument = false; - final Envelope materialAddedEvent = createMaterialAddedEventForNonSJP(true, isUnbundledDocument); - - final JsonEnvelope jsonEnvelope = JsonEnvelope.envelopeFrom(materialAddedEvent.metadata(), NULL); - when(metadataHelper.envelopeWithCustomMetadata(any(), any(), any(), any())).thenReturn(jsonEnvelope); - - materialEventProcessor.handleMaterialAdded(materialAddedEvent); - - verifyUploadMaterialWhenMaterialAddedEventForNonSJP(materialAddedEvent, jsonEnvelope, true, isUnbundledDocument); - } - - @Test - void shouldUploadMaterialWhenMaterialAddedEventWihIsCspsCaseIsFALSE() { - final boolean isUnbundledDocument = false; - final Envelope materialAddedEvent = createMaterialAddedEventForNonSJP(false, isUnbundledDocument); - - final JsonEnvelope jsonEnvelope = JsonEnvelope.envelopeFrom(materialAddedEvent.metadata(), NULL); - when(metadataHelper.envelopeWithCustomMetadata(any(), any(), any(), any())).thenReturn(jsonEnvelope); - - materialEventProcessor.handleMaterialAdded(materialAddedEvent); - - verifyUploadMaterialWhenMaterialAddedEventForNonSJP(materialAddedEvent, jsonEnvelope, true, isUnbundledDocument); - } - - private void verifyHandleDocumentAddedEvent(Envelope envelope, JsonObject ccMetadataJsonObject, Boolean isCpsCase) { - verify(envelopeHelper).withMetadataInPayloadForEnvelope(jsonEnvelopeCaptor.capture()); - verify(sender).sendAsAdmin(envelope); - - final JsonEnvelope addCourtDocument = jsonEnvelopeCaptor.getValue(); - - org.hamcrest.Matcher isCpsCaseMatcher; - if (isCpsCase == null) { - isCpsCaseMatcher = hasNoJsonPath("$.courtDocument.isCpsCase"); - } else { - isCpsCaseMatcher = withJsonPath("$.courtDocument.isCpsCase", equalTo(isCpsCase)); - } - - - assertThat(addCourtDocument, is(jsonEnvelope( - metadata() - .withName(PROGRESSION_ADD_COURT_DOCUMENT), - payloadIsJson(allOf( - withJsonPath("$.courtDocument"), - withJsonPath("$.courtDocument.courtDocumentId"), - withJsonPath("$.courtDocument.name", equalTo(FILE_NAME)), - withJsonPath("$.courtDocument.documentTypeId", equalTo(ccMetadataJsonObject.getString("documentTypeId"))), - withJsonPath("$.courtDocument.documentTypeDescription", equalTo(ccMetadataJsonObject.getString("documentTypeDescription"))), - withJsonPath("$.courtDocument.materials[0].id", equalTo(addCourtDocument.payloadAsJsonObject().getString("materialId"))), - withJsonPath("$.courtDocument.documentCategory.caseDocument.prosecutionCaseId", equalTo(ccMetadataJsonObject.getString("caseId"))), - withJsonPath("$.materialId", equalTo(addCourtDocument.payloadAsJsonObject().getString("materialId"))), - isCpsCaseMatcher - ))))); - } - - private void verifyHandleDocumentAddedV2Event(Envelope envelope, JsonObject ccMetadataJsonObject, Boolean isCpsCase) { - verify(envelopeHelper).withMetadataInPayloadForEnvelope(jsonEnvelopeCaptor.capture()); - verify(sender).sendAsAdmin(envelope); - - final JsonEnvelope addCourtDocument = jsonEnvelopeCaptor.getValue(); - - org.hamcrest.Matcher isCpsCaseMatcher; - if (isCpsCase == null) { - isCpsCaseMatcher = hasNoJsonPath("$.courtDocument.isCpsCase"); - } else { - isCpsCaseMatcher = withJsonPath("$.courtDocument.isCpsCase", equalTo(isCpsCase)); - } - - - assertThat(addCourtDocument, is(jsonEnvelope( - metadata() - .withName("progression.add-court-document-v2"), - payloadIsJson(allOf( - withJsonPath("$.courtDocument"), - withJsonPath("$.courtDocument.courtDocumentId"), - withJsonPath("$.courtDocument.name", equalTo(FILE_NAME)), - isCpsCaseMatcher - ))))); - } - - - private void verifyHandleAddDocumentCommand(Envelope envelope, JsonObject ccMetadataJsonObject, Boolean isCpsCase, String fileStoreId) { - verify(envelopeHelper).withMetadataInPayloadForEnvelope(jsonEnvelopeCaptor.capture()); - verify(sender).sendAsAdmin(envelope); - - final JsonEnvelope addCourtDocument = jsonEnvelopeCaptor.getValue(); - - org.hamcrest.Matcher isCpsCaseMatcher; - if (isCpsCase == null) { - isCpsCaseMatcher = hasNoJsonPath("$.courtDocument.isCpsCase"); - } else { - isCpsCaseMatcher = withJsonPath("$.courtDocument.isCpsCase", equalTo(isCpsCase)); - } - - - assertThat(addCourtDocument, is(jsonEnvelope( - metadata() - .withName("prosecutioncasefile.command.add-case-court-document"), - payloadIsJson(allOf( - withJsonPath("$.courtDocument"), - withJsonPath("$.courtDocument.courtDocumentId"), - withJsonPath("$.courtDocument.name", equalTo(FILE_NAME)), - withJsonPath("$.courtDocument.documentTypeId", equalTo(ccMetadataJsonObject.getString("documentTypeId"))), - withJsonPath("$.courtDocument.documentTypeDescription", equalTo(ccMetadataJsonObject.getString("documentTypeDescription"))), - withJsonPath("$.courtDocument.materials[0].id", equalTo(addCourtDocument.payloadAsJsonObject().getString("materialId"))), - withJsonPath("$.courtDocument.documentCategory.caseDocument.prosecutionCaseId", equalTo(ccMetadataJsonObject.getString("caseId"))), - withJsonPath("$.materialId", equalTo(addCourtDocument.payloadAsJsonObject().getString("materialId"))), - withJsonPath("$.fileStoreId", equalTo(fileStoreId)), - isCpsCaseMatcher - ))))); - } - - private void verifyUploadMaterialWhenMaterialAddedEventForNonSJP(Envelope materialAddedEvent, JsonEnvelope jsonEnvelope, boolean withIsCpsCase, final boolean isUnbundledDocument) { - final MaterialAdded materialAdded = materialAddedEvent.payload(); - verify(metadataHelper).envelopeWithCustomMetadata( - metadataArgumentCaptor.capture(), - jsonObjectArgumentCaptor.capture(), - jsonObjectArgumentCaptor.capture(), - eq(null)); - - final String commandName = metadataArgumentCaptor.getValue().name(); - final JsonObject ccMetadata = jsonObjectArgumentCaptor.getAllValues().get(0); - final JsonObject materialPayload = jsonObjectArgumentCaptor.getAllValues().get(1); - - assertEquals(UPLOAD_FILE_TO_MATERIAL_CONTEXT, commandName); - - assertTrue(materialPayload.containsKey("materialId")); - assertEquals(materialPayload.getString("fileServiceId"), materialAddedEvent.payload().getMaterial().getFileStoreId().toString()); - - if (isUnbundledDocument) { - assertTrue(materialPayload.getBoolean("isUnbundledDocument")); - } else { - assertNull(materialPayload.get("isUnbundledDocument")); - } - - assertEquals(ccMetadata.getString("caseId"), materialAddedEvent.payload().getCaseId().toString()); - assertEquals(ccMetadata.getString("documentTypeId"), materialAddedEvent.payload().getDocumentTypeId()); - assertEquals(ccMetadata.getString("documentTypeDescription"), materialAddedEvent.payload().getDocumentType()); - assertEquals(ccMetadata.getString("documentCategory"), materialAddedEvent.payload().getDocumentCategory()); - assertEquals(ccMetadata.getString("defendantId"), materialAddedEvent.payload().getDefendantId().toString()); - if (withIsCpsCase) { - assertEquals(ccMetadata.getBoolean("isCpsCase"), materialAddedEvent.payload().getIsCpsCase()); - } - verify(sender).send(jsonEnvelope); - verify(pendingMaterialExpiration).cancelMaterialTimer(materialAdded.getMaterial().getFileStoreId()); - } - - private void verifyUploadMaterialWhenMaterialAddedV2EventForNonSJP(Envelope materialAddedEvent, JsonEnvelope jsonEnvelope, boolean withIsCpsCase, final String fileServiceId) { - final MaterialAddedV2 materialAdded = materialAddedEvent.payload(); - verify(metadataHelper).envelopeWithCustomMetadata( - metadataArgumentCaptor.capture(), - jsonObjectArgumentCaptor.capture(), - jsonObjectArgumentCaptor.capture(), - eq(fileServiceId)); - - final String commandName = metadataArgumentCaptor.getValue().name(); - final JsonObject ccMetadata = jsonObjectArgumentCaptor.getAllValues().get(0); - final JsonObject materialPayload = jsonObjectArgumentCaptor.getAllValues().get(1); - - assertEquals(UPLOAD_FILE_TO_MATERIAL_CONTEXT, commandName); - - assertTrue(materialPayload.containsKey("materialId")); - assertEquals(materialPayload.getString("fileServiceId"), materialAddedEvent.payload().getMaterial().toString()); - assertEquals(ccMetadata.getString("caseId"), materialAddedEvent.payload().getCaseId().toString()); - assertEquals(ccMetadata.getString("documentTypeId"), materialAddedEvent.payload().getDocumentTypeId()); - assertEquals(ccMetadata.getString("documentTypeDescription"), materialAddedEvent.payload().getMaterialType()); - assertEquals(ccMetadata.getString("documentCategory"), materialAddedEvent.payload().getDocumentCategory()); - - if (withIsCpsCase) { - assertEquals(ccMetadata.getBoolean("isCpsCase"), materialAddedEvent.payload().getIsCpsCase()); - } - verify(sender).send(jsonEnvelope); - verify(pendingMaterialExpiration).cancelMaterialTimer(materialAdded.getMaterial()); - } - - private void verifyUploadMaterialWhenMaterialAddedWithWarningsEventForNonSJP(Envelope materialAddedEvent, JsonEnvelope jsonEnvelope, boolean withIsCpsCase, final String fileServiceId) { - final MaterialAddedWithWarnings materialAdded = materialAddedEvent.payload(); - verify(metadataHelper).envelopeWithCustomMetadata( - metadataArgumentCaptor.capture(), - jsonObjectArgumentCaptor.capture(), - jsonObjectArgumentCaptor.capture(), - eq(fileServiceId)); - - final String commandName = metadataArgumentCaptor.getValue().name(); - final JsonObject ccMetadata = jsonObjectArgumentCaptor.getAllValues().get(0); - final JsonObject materialPayload = jsonObjectArgumentCaptor.getAllValues().get(1); - - assertEquals(UPLOAD_FILE_TO_MATERIAL_CONTEXT, commandName); - - assertTrue(materialPayload.containsKey("materialId")); - assertEquals(materialPayload.getString("fileServiceId"), materialAddedEvent.payload().getMaterial().toString()); - assertEquals(ccMetadata.getString("caseId"), materialAddedEvent.payload().getCaseId().toString()); - assertEquals(ccMetadata.getString("documentTypeId"), materialAddedEvent.payload().getDocumentTypeId()); - assertEquals(ccMetadata.getString("documentTypeDescription"), materialAddedEvent.payload().getMaterialType()); - assertEquals(ccMetadata.getString("documentCategory"), materialAddedEvent.payload().getDocumentCategory()); - - if (withIsCpsCase) { - assertEquals(ccMetadata.getBoolean("isCpsCase"), materialAddedEvent.payload().getIsCpsCase()); - } - verify(sender).send(jsonEnvelope); - verify(pendingMaterialExpiration).cancelMaterialTimer(materialAdded.getMaterial()); - } - - private Envelope createMaterialRejectedEvent(Boolean isCpsCase, String documentId, ZonedDateTime receivedDateTime, String documentType) { - return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.material-rejected").build() - , materialRejected() - .withCaseId(randomUUID()) - .withProsecutorDefendantId(randomUUID().toString()) - .withProsecutingAuthority("GAEAA01") - .withErrors(asList(problem().withCode("INVALID_FILE_TYPE").withValues( - asList(problemValue().withKey("fileType").withValue("csv").build())).build())) - .withMaterial(randomMaterial(documentType, false)) - .withIsCpsCase(isCpsCase) - .withReceivedDateTime(receivedDateTime) - .withCmsDocumentId(documentId) - .build()); - } - - private Envelope createMaterialRejectedV2Event(Boolean isCpsCase, UUID material, ZonedDateTime receivedDateTime, String materialType) { - return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.material-rejected-v2").build() - , materialRejectedV2() - .withCaseId(randomUUID()) - .withErrors(asList(problem().withCode("INVALID_FILE_TYPE").withValues( - asList(problemValue().withKey("materialContentType").withValue("csv").build())).build())) - .withMaterial(material) - .withMaterialType(materialType) - .withMaterialName("Statement") - .withSectionOrderSequence(000001) - .withIsCpsCase(isCpsCase) - .withReceivedDateTime(receivedDateTime) - .build()); - } - - private Envelope createMaterialRejectedWithWarningsEvent(Boolean isCpsCase, UUID material, ZonedDateTime receivedDateTime, String materialType) { - final Problem warning = Problem.problem() - .withCode("problemCode") - .build(); - return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.material-rejected-with-warnings").build() - , materialRejectedWithWarnings() - .withCaseId(randomUUID()) - .withErrors(asList(problem().withCode("INVALID_FILE_TYPE").withValues( - asList(problemValue().withKey("materialContentType").withValue("csv").build())).build())) - .withMaterial(material) - .withMaterialType(materialType) - .withMaterialName("Statement") - .withSectionOrderSequence(000001) - .withIsCpsCase(isCpsCase) - .withReceivedDateTime(receivedDateTime) - .withWarnings(ImmutableList.of(warning)) - .build()); - } - - private Envelope createMaterialRejectedEvent(final String documentId, final ZonedDateTime receivedDateTime, final UUID fileStoreId) { - return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.case-document-review-required").build() - , CaseDocumentReviewRequired.caseDocumentReviewRequired() - .withCaseId(randomUUID()) - .withCmsDocumentId(documentId) - .withDocumentType(DocumentType.OTHER) - .withErrorCodes(Collections.singletonList(PROBLEM_CODE_DOCUMENT_NOT_MATCHED)) - .withFileStoreId(fileStoreId) - .withReceivedDateTime(receivedDateTime) - .withSource(SOURCE_CPS_FOR_PUBLIC_EVENTS) - .build() - ); - } - - - @Test - void shouldHandleIdpcMaterialRejectedEvent() throws Exception { - final Envelope idpcMaterialRejectedEnvelope = createIdpcMaterialRejectedEvent(); - final IdpcMaterialRejected idpcMaterialRejectedEvent = idpcMaterialRejectedEnvelope.payload(); - - materialEventProcessor.handleIdpcMaterialRejected(idpcMaterialRejectedEnvelope); - - verify(fileStorer).delete(idpcMaterialRejectedEvent.getFileServiceId()); - verify(pendingIdpcMaterialExpiration).cancelIdpcMaterialTimer(idpcMaterialRejectedEvent.getFileServiceId()); - } - - private Envelope createIdpcMaterialRejectedEvent() { - return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.idpc-material-rejected").build() - , idpcMaterialRejected() - .withCaseId(randomUUID()) - .withErrors(asList(problem().withCode("INVALID_FILE_TYPE").withValues( - asList(problemValue().withKey("fileType").withValue("csv").build())).build())) - .withFileServiceId(randomUUID()) - .build()); - } - - @Test - void shouldHandleIdpcDefendantMatch() throws Exception { - final Envelope idpcDefendantMatch = envelopeFrom( - metadataWithRandomUUID("prosecutioncasefile.events.idpc-defendant-matched"), - idpcDefendantMatched().withCaseId(randomUUID()) - .withFileServiceId(randomUUID()) - .withCaseUrn("12345") - .withMaterialType("idpc") - .withDefendantId(randomUUID().toString()) - .build()); - - materialEventProcessor.idpcDefendantMatch(idpcDefendantMatch); - verify(idpcUploadMaterialProcessService).startUploadFileProcess(idpcDefendantMatch); - } - - @Test - void shouldHandleIdpcDefendantMatchPending() { - final Envelope idpcDefendantMatch = envelopeFrom( - metadataWithRandomUUID("prosecutioncasefile.events.idpc-defendant-match-pending"), - idpcDefendantMatchPending().withCaseId(randomUUID()) - .withFileServiceId(randomUUID()) - .withCaseUrn("12345") - .withMaterialType("idpc") - .withDefendant(defendant().build()) - .build()); - final IdpcDefendantMatchPending payload = idpcDefendantMatch.payload(); - - materialEventProcessor.handleIdpcDefendantMatchPending(idpcDefendantMatch); - verify(pendingIdpcMaterialExpiration).startMaterialTimer(payload.getFileServiceId(), payload.getCaseId(), idpcDefendantMatch.metadata()); - } - - @Test - void shouldHandleIdpcMaterialAdded() throws Exception { - final JsonEnvelope addIdpcMaterial = JsonEnvelope.envelopeFrom( - metadataWithIdpcProcessId(metadataWithRandomUUID("material.material-added").build(), randomUUID().toString()), - createObjectBuilder() - .add("materialId", randomUUID().toString()) - .add("fileDetails", createObjectBuilder().add("alfrescoAssetId", "aGVsbG8=").add("mimeType", "text/plain").add("fileName", "abc.txt").build()) - .add("materialAddedDate", "2016-04-26T13:01:787.345") - .add("isUnbundledDocument", true) - .build()); - - when(metadataHelper.getCCMetadata(any())).thenReturn(Optional.empty()); - when(idpcUploadMaterialProcessService.signalUploadFileProcess(any(), any(), any())).thenReturn(UUID.randomUUID().toString()); - materialEventProcessor.handleMaterialAddedFromMaterialContext(addIdpcMaterial); - verify(idpcUploadMaterialProcessService).signalUploadFileProcess(any(), any(), any()); - } - - @Test - void shouldHandleDefendantIdpcAlreadyExists() throws Exception { - final JsonEnvelope idpcDefendantAlreadyExists = JsonEnvelope.envelopeFrom( - metadataWithIdpcProcessId(metadataWithRandomUUID("prosecutioncasefile.events.defendant-idpc-already-exists").build(), randomUUID().toString()), - createObjectBuilder() - .add("defendantId", "34123423") - .add("fileServiceId", randomUUID().toString()) - .add("caseId", "2016-04-26T13:01:787.345") - .build()); - - materialEventProcessor.handleDefendantIdpcAlreadyExists(idpcDefendantAlreadyExists); - verify(fileStorer, times(1)).delete(any(UUID.class)); - - } - - private Envelope createMaterialAddedEventWithCmsIdentifier() { - return envelopeFrom( - metadataWithRandomUUID("prosecutioncasefile.events.material-added"), - materialAdded() - .withCaseId(randomUUID()) - .withMaterial(randomMaterial()) - .withCaseType("CC") - .withDocumentCategory("Defendant level") - .withDocumentTypeId(randomUUID().toString()) - .withDocumentType("DocumentType") - .withProsecutorDefendantId(randomUUID().toString()) - .withProsecutingAuthority(randomUUID().toString()) - .withDefendantId(randomUUID()) - .withIsCpsCase(false) - .withCmsDocumentIdentifier(cmsDocumentIdentifier() - .withMaterialType(1) - .withDocumentId("documentId").build()) - .withReceivedDateTime(ZonedDateTime.now()) - .withDefendantName("John Wick") - .build()); - } - - private Material randomMaterial() { - return material() - .withFileStoreId(randomUUID()) - .withDocumentType(randomAlphanumeric(5)) - .withFileType(randomAlphanumeric(5)) - .build(); - } - - @Test - void shouldhandleDocumentReviewRequiredEventV2AndRaiseDocumentRequiredReview() throws Exception { - final UUID documentId = randomUUID(); - final UUID fileStoreId = randomUUID(); - final Envelope caseDocumentReviewRequiredEnvelope = createMaterialRejectedEvent(documentId.toString(), ZonedDateTime.now(), fileStoreId); - - materialEventProcessor.handleDocumentReviewRequiredV2(caseDocumentReviewRequiredEnvelope); - - verify(sender, times(1)).send(envelopeArgumentCaptor.capture()); - - final Envelope publicDocumentReviewEvent = envelopeArgumentCaptor.getAllValues().get(0); - - assertThat(publicDocumentReviewEvent.metadata(), metadata().envelopedWith(caseDocumentReviewRequiredEnvelope.metadata()).withName("public.prosecutioncasefile.document-review-required-v2")); - - - final DocumentReviewRequired payload = publicDocumentReviewEvent.payload(); - assertThat(payload.getCmsDocumentId(), is(documentId.toString())); - assertThat(payload.getFileStoreId(), is(fileStoreId)); - assertThat(payload.getErrorCodes().get(0), is(PROBLEM_CODE_DOCUMENT_NOT_MATCHED)); - } - - @Test - void shouldHandleBulkScanMaterialRejected() throws Exception { - final UUID documentId = randomUUID(); - final UUID fileStoreId = randomUUID(); - final Envelope bulkscanMaterialRejectedEnvelope = createBulkscanMaterialRejected(documentId.toString(), ZonedDateTime.now(), fileStoreId); - - materialEventProcessor.handleBulkScanMaterialRejected(bulkscanMaterialRejectedEnvelope); - - verify(sender, times(1)).send(envelopeArgumentCaptor.capture()); - - final Envelope publicEvent = envelopeArgumentCaptor.getAllValues().get(0); - - assertThat(publicEvent.metadata(), metadata().envelopedWith(bulkscanMaterialRejectedEnvelope.metadata()).withName("public.prosecutioncasefile.bulkscan-material-followup")); - } - - private Envelope createBulkscanMaterialRejected(final String documentId, final ZonedDateTime receivedDateTime, final UUID fileStoreId) { - return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.bulkscan-material-rejected").build() - , BulkscanMaterialRejected.bulkscanMaterialRejected() - .withCaseId(randomUUID()) - .withMaterial(material() - .withDocumentType("documentType") - .withFileStoreId(randomUUID()) - .withFileType("fileType") - .withIsUnbundledDocument(false) - .build()) - .build() - ); - } +package uk.gov.moj.cpp.prosecution.casefile.event.processor; + +import static com.jayway.jsonpath.matchers.JsonPathMatchers.hasNoJsonPath; +import static com.jayway.jsonpath.matchers.JsonPathMatchers.withJsonPath; +import static java.util.Objects.nonNull; +import static java.util.UUID.randomUUID; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; +import static javax.json.JsonValue.NULL; +import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric; +import static org.codehaus.groovy.runtime.InvokerHelper.asList; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.notNullValue; +import static org.hamcrest.core.AllOf.allOf; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoInteractions; +import static org.mockito.Mockito.when; +import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; +import static uk.gov.justice.services.messaging.Envelope.envelopeFrom; +import static uk.gov.justice.services.messaging.Envelope.metadataBuilder; +import static uk.gov.justice.services.test.utils.core.matchers.HandlerMatcher.isHandler; +import static uk.gov.justice.services.test.utils.core.matchers.HandlerMethodMatcher.method; +import static uk.gov.justice.services.test.utils.core.matchers.JsonEnvelopeMatcher.jsonEnvelope; +import static uk.gov.justice.services.test.utils.core.matchers.JsonEnvelopeMetadataMatcher.metadata; +import static uk.gov.justice.services.test.utils.core.matchers.JsonEnvelopePayloadMatcher.payloadIsJson; +import static uk.gov.justice.services.test.utils.core.messaging.MetadataBuilderFactory.metadataWithRandomUUID; +import static uk.gov.justice.services.test.utils.core.messaging.MetadataBuilderFactory.metadataWithRandomUUIDAndName; +import static uk.gov.moj.cpp.prosecution.casefile.domain.DomainConstants.PROBLEM_CODE_DOCUMENT_NOT_MATCHED; +import static uk.gov.moj.cpp.prosecution.casefile.domain.DomainConstants.SOURCE_CPS_FOR_PUBLIC_EVENTS; +import static uk.gov.moj.cpp.prosecution.casefile.event.processor.MaterialEventProcessor.IS_CPS_CASE; +import static uk.gov.moj.cpp.prosecution.casefile.event.processor.MaterialEventProcessor.PUBLIC_MATERIAL_DOCUMENT_BUNDLE_ARRIVED_FOR_UNBUNDLE; +import static uk.gov.moj.cpp.prosecution.casefile.event.processor.utils.MetadataHelper.metadataWithIdpcProcessId; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.CmsDocumentIdentifier.cmsDocumentIdentifier; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Material.material; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Problem.problem; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.ProblemValue.problemValue; +import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.ProsecutionCaseSubject.prosecutionCaseSubject; +import static uk.gov.moj.cps.prosecutioncasefile.domain.event.Defendant.defendant; +import static uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcDefendantMatchPending.idpcDefendantMatchPending; +import static uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcDefendantMatched.idpcDefendantMatched; +import static uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcMaterialRejected.idpcMaterialRejected; +import static uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAdded.materialAdded; +import static uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAddedV2.materialAddedV2; +import static uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAddedWithWarnings.materialAddedWithWarnings; +import static uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialPending.materialPending; +import static uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialPendingV2.materialPendingV2; +import static uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejected.materialRejected; +import static uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejectedV2.materialRejectedV2; +import static uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejectedWithWarnings.materialRejectedWithWarnings; + +import uk.gov.justice.services.common.converter.ObjectToJsonObjectConverter; +import uk.gov.justice.services.common.converter.jackson.ObjectMapperProducer; +import uk.gov.justice.services.core.sender.Sender; +import uk.gov.justice.services.fileservice.api.FileStorer; +import uk.gov.justice.services.messaging.Envelope; +import uk.gov.justice.services.messaging.JsonEnvelope; +import uk.gov.justice.services.messaging.JsonObjects; +import uk.gov.justice.services.messaging.Metadata; +import uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.BulkScanMaterialExpiration; +import uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.IdpcUploadMaterialProcessService; +import uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.PendingIdpcMaterialExpiration; +import uk.gov.moj.cpp.prosecution.casefile.event.processor.activiti.PendingMaterialExpiration; +import uk.gov.moj.cpp.prosecution.casefile.event.processor.service.ReferenceDataService; +import uk.gov.moj.cpp.prosecution.casefile.event.processor.utils.EnvelopeHelper; +import uk.gov.moj.cpp.prosecution.casefile.event.processor.utils.MetadataHelper; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.DefendantSubject; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Material; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Problem; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.BulkscanMaterialRejected; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.CaseDocumentReviewRequired; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.DocumentReviewRequired; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.DocumentType; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcDefendantMatchPending; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcDefendantMatched; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.IdpcMaterialRejected; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAdded; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAddedV2; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialAddedWithWarnings; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialPending; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialPendingV2; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejected; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejectedV2; +import uk.gov.moj.cps.prosecutioncasefile.domain.event.MaterialRejectedWithWarnings; + +import java.time.ZonedDateTime; +import java.util.Collections; +import java.util.Optional; +import java.util.UUID; + +import javax.json.JsonObject; +import javax.json.JsonObjectBuilder; + +import com.google.common.collect.ImmutableList; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +class MaterialEventProcessorTest { + + private static final String UPLOAD_FILE_TO_MATERIAL_CONTEXT = "material.command.upload-file"; + private static final String MATERIAL_ADDED_IN_MATERIAL_CONTEXT = "material.material-added"; + private static final String PROGRESSION_ADD_COURT_DOCUMENT = "progression.add-court-document"; + private static final String FILE_NAME = "File name"; + private static final String FILE_CLOUD_LOCATION = "fileCloudLocation"; + + @Mock + private Sender sender; + @Mock + private EnvelopeHelper envelopeHelper; + @Mock + private FileStorer fileStorer; + @Mock + private MetadataHelper metadataHelper; + @Mock + private PendingMaterialExpiration pendingMaterialExpiration; + @Mock + private PendingIdpcMaterialExpiration pendingIdpcMaterialExpiration; + @Mock + private IdpcUploadMaterialProcessService idpcUploadMaterialProcessService; + @Mock + private BulkScanMaterialExpiration bulkScanMaterialExpiration; + @InjectMocks + private MaterialEventProcessor materialEventProcessor; + @Captor + private ArgumentCaptor jsonEnvelopeCaptor; + @Captor + private ArgumentCaptor envelopeArgumentCaptor; + @Captor + private ArgumentCaptor metadataArgumentCaptor; + @Captor + private ArgumentCaptor jsonObjectArgumentCaptor; + + @Mock + private ReferenceDataService referencedataService; + + @Spy + private ObjectToJsonObjectConverter objectToJsonObjectConverter = new ObjectToJsonObjectConverter(new ObjectMapperProducer().objectMapper()); + + + private static Envelope createMaterialAddedEvent() { + return envelopeFrom( + metadataWithRandomUUID("prosecutioncasefile.events.material-added"), + materialAdded() + .withCaseId(randomUUID()) + .withMaterial(randomMaterial(null, false)) + .withCaseType("SJP") + .build()); + } + + private static JsonEnvelope createDocumentAddedPayloadForNonSJP(Boolean isCpsCase) { + final Metadata metadata = + JsonEnvelope.metadataFrom( + getCCMetadataJsonObjectCaseLevel(isCpsCase, false)) + .build(); + + final JsonObject payload = createObjectBuilder() + .add("materialId", randomUUID().toString()) + .add("fileDetails", createObjectBuilder().add("fileName", FILE_NAME).add("mimeType", "application/pdf")) + .build(); + + return JsonEnvelope.envelopeFrom(metadata, payload); + } + + private static JsonEnvelope createDocumentAddedV2PayloadForNonSJP(Boolean isCpsCase, String fileStoreId) { + final Metadata metadata = + JsonEnvelope.metadataFrom( + getCCMetadataJsonObjectCaseLevel(isCpsCase, fileStoreId)) + .build(); + + final JsonObject payload = createObjectBuilder() + .add("materialId", randomUUID().toString()) + .add("fileDetails", createObjectBuilder().add("fileName", FILE_NAME).add("mimeType", "application/pdf")) + .build(); + + return JsonEnvelope.envelopeFrom(metadata, payload); + } + + private static JsonEnvelope createDocumentAddedPrivateV2PayloadForNonSJP(Boolean isCpsCase, String fileStoreId) { + final Metadata metadata = + JsonEnvelope.metadataFrom( + getCCMetadataJsonObjectCaseLevel(isCpsCase, fileStoreId)) + .build(); + + final JsonObject payload = createObjectBuilder() + .add("materialId", randomUUID().toString()) + .add("courtDocument", createObjectBuilder().add("courtDocumentId", "courtDocumentId") + .add("name", FILE_NAME).build()).build(); + + return JsonEnvelope.envelopeFrom(metadata, payload); + } + + private static JsonObject getCCMetadataJsonObjectCaseLevel(Boolean isCpsCase, boolean isMigratedCase) { + JsonObjectBuilder builder = createObjectBuilder() + .add("caseId", randomUUID().toString()) + .add("documentTypeDescription", "SJPN") + .add("defendantId", randomUUID().toString()) + .add("documentCategory", "Case level") + .add("documentTypeId", randomUUID().toString()) + .add("receivedDateTime", ZonedDateTime.now().toString()) + .add("sectionCode", "IDPC"); + if (isCpsCase != null) { + builder.add(IS_CPS_CASE, isCpsCase); + } + + if (isMigratedCase) { + builder.add(FILE_CLOUD_LOCATION, "azure.net"); + } + + return JsonObjects.createObjectBuilder(metadataBuilder() + .withId(randomUUID()) + .withName(MATERIAL_ADDED_IN_MATERIAL_CONTEXT) + .build().asJsonObject()) + .add("ccMetadata", builder) + .build(); + } + + private static JsonObject getCCMetadataJsonObjectCaseLevel(Boolean isCpsCase, String fileStoreId) { + JsonObjectBuilder builder = createObjectBuilder() + .add("caseId", randomUUID().toString()) + .add("documentTypeDescription", "SJPN") + .add("defendantId", randomUUID().toString()) + .add("documentCategory", "Case level") + .add("documentTypeId", randomUUID().toString()) + .add("receivedDateTime", ZonedDateTime.now().toString()) + .add("sectionCode", "IDPC"); + if (isCpsCase != null) { + builder.add(IS_CPS_CASE, isCpsCase); + } + + return JsonObjects.createObjectBuilder(metadataBuilder() + .withId(randomUUID()) + .withName(MATERIAL_ADDED_IN_MATERIAL_CONTEXT) + .build().asJsonObject()) + .add("ccMetadata", builder) + .add("fileStoreId", fileStoreId) + .build(); + } + + private static JsonObject getCCMetadataJsonObjectDefendantLevel() { + return JsonObjects.createObjectBuilder(metadataBuilder() + .withId(randomUUID()) + .withName(MATERIAL_ADDED_IN_MATERIAL_CONTEXT) + .build().asJsonObject()) + .add("ccMetadata", createObjectBuilder() + .add("caseId", randomUUID().toString()) + .add("documentTypeDescription", "SJPN") + .add("defendantId", randomUUID().toString()) + .add("documentCategory", "Defendant level") + .add("documentTypeId", randomUUID().toString()) + .add("receivedDateTime", ZonedDateTime.now().toString()) + .add("sectionCode", "IDPC")) + + + .build(); + } + + private static Envelope createMaterialAddedEventForNonSJP(final Boolean isCpsCase, final boolean isUnbundledDocument) { + MaterialAdded.Builder builder = materialAdded() + .withCaseId(randomUUID()) + .withMaterial(randomMaterial(null, isUnbundledDocument)) + .withCaseType("CC") + .withDocumentCategory("Defendant level") + .withDocumentTypeId(randomUUID().toString()) + .withDocumentType("DocumentType") + .withProsecutorDefendantId(randomUUID().toString()) + .withDefendantId(randomUUID()) + .withReceivedDateTime(ZonedDateTime.now()) + .withSectionCode("IPDC"); + + if (isCpsCase != null) { + builder.withIsCpsCase(isCpsCase); + } + + return envelopeFrom( + metadataWithRandomUUID("prosecutioncasefile.events.material-added"), + builder.build()); + } + + private static Envelope createMaterialAddedV2EventForNonSJP(final Boolean isCpsCase, final boolean isUnbundledDocument) { + MaterialAddedV2.Builder builder = materialAddedV2() + .withCaseId(randomUUID()) + .withCaseType("CC") + .withMaterial(randomUUID()) + .withMaterialType("IDPC bundle") + .withMaterialContentType("application/pdf") + .withMaterialName("Statement") + .withFileName(FILE_NAME) + .withDocumentTypeId("51cac7fb-387c-4d19-9c80-8963fa8cf223") + .withDocumentCategory("Case level") + .withDefendantId(randomUUID()) + .withDefendantName("John Wick") + .withProsecutionCaseSubject(prosecutionCaseSubject() + .withProsecutingAuthority(randomAlphanumeric(5)) + .withDefendantSubject(DefendantSubject.defendantSubject() + .withProsecutorDefendantId(randomAlphanumeric(5)) + .build()) + .build()) + .withReceivedDateTime(ZonedDateTime.now()); + + if (isCpsCase != null) { + builder.withIsCpsCase(isCpsCase); + } + + return envelopeFrom( + metadataWithRandomUUID("prosecutioncasefile.events.material-added-v2"), + builder.build()); + } + + private static Envelope createMaterialAddedWithWarningsEventForNonSJP(final Boolean isCpsCase, final boolean isUnbundledDocument) { + final Problem warning = Problem.problem() + .withCode("problemCode") + .build(); + MaterialAddedWithWarnings.Builder builder = materialAddedWithWarnings() + .withCaseId(randomUUID()) + .withCaseType("CC") + .withMaterial(randomUUID()) + .withMaterialType("IDPC bundle") + .withMaterialContentType("application/pdf") + .withMaterialName("Statement") + .withFileName(FILE_NAME) + .withDocumentTypeId("51cac7fb-387c-4d19-9c80-8963fa8cf223") + .withDocumentCategory("Case level") + .withDefendantId(randomUUID()) + .withDefendantName("John Wick") + .withProsecutionCaseSubject(prosecutionCaseSubject() + .withProsecutingAuthority(randomAlphanumeric(5)) + .withDefendantSubject(DefendantSubject.defendantSubject() + .withProsecutorDefendantId(randomAlphanumeric(5)) + .build()) + .build()) + .withReceivedDateTime(ZonedDateTime.now()) + .withWarnings(ImmutableList.of(warning)); + + if (isCpsCase != null) { + builder.withIsCpsCase(isCpsCase); + } + + return envelopeFrom( + metadataWithRandomUUID("prosecutioncasefile.events.material-added-with-warnings"), + builder.build()); + } + + private static Envelope createMaterialPendingEvent() { + return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.material-pending"), + materialPending() + .withCaseId(randomUUID()) + .withMaterial(randomMaterial(null, false)) + .build()); + } + + private static Envelope createMaterialPendingV2Event() { + return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.material-pending-v2"), + materialPendingV2() + .withCaseId(randomUUID()) + .withMaterial(randomUUID()) + .build()); + } + + private static Envelope createMaterialPendingWithWarningsEvent() { + return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.material-pending-v2"), + materialPendingV2() + .withCaseId(randomUUID()) + .withMaterial(randomUUID()) + .withWarnings(Collections.singletonList(Problem.problem() + .withCode("code") + .build())) + .build()); + } + + private static Material randomMaterial(final String documentType, final boolean isUnbundledDocument) { + return material() + .withFileStoreId(randomUUID()) + .withDocumentType(nonNull(documentType) ? documentType : randomAlphanumeric(5)) + .withFileType(randomAlphanumeric(5)) + .withIsUnbundledDocument(isUnbundledDocument) + .build(); + } + + @Test + void shouldHandleMaterialRejected() { + assertThat(new MaterialEventProcessor(), isHandler(EVENT_PROCESSOR) + .with(method("handleMaterialAdded").thatHandles("prosecutioncasefile.events.material-added")) + .with(method("handleMaterialRejected").thatHandles("prosecutioncasefile.events.material-rejected")) + .with(method("handleMaterialPending").thatHandles("prosecutioncasefile.events.material-pending")) + .with(method("handleDocumentReviewRequired").thatHandles("prosecutioncasefile.events.case-document-review-required")) + ); + } + + @Test + void shouldHandleMaterialRejectedV2() { + assertThat(new MaterialEventProcessor(), isHandler(EVENT_PROCESSOR) + .with(method("handleMaterialAddedV2").thatHandles("prosecutioncasefile.events.material-added-v2")) + .with(method("handleMaterialAddedWithWarnings").thatHandles("prosecutioncasefile.events.material-added-with-warnings")) + .with(method("handleMaterialRejectedV2").thatHandles("prosecutioncasefile.events.material-rejected-v2")) + .with(method("handleMaterialRejectedWithWarnings").thatHandles("prosecutioncasefile.events.material-rejected-with-warnings")) + .with(method("handleMaterialPendingV2").thatHandles("prosecutioncasefile.events.material-pending-v2")) + .with(method("handleMaterialPendingWithWarnings").thatHandles("prosecutioncasefile.events.material-pending-with-warnings")) + .with(method("handleDocumentReviewRequiredV2").thatHandles("prosecutioncasefile.events.case-document-review-required-v2")) + ); + } + + @Test + void shouldHandleMaterialAddedEventForSJP() { + final Envelope materialAddedEvent = createMaterialAddedEvent(); + final MaterialAdded materialAdded = materialAddedEvent.payload(); + + final Envelope envelope = Envelope.envelopeFrom(metadataWithRandomUUIDAndName(), NULL); + + when(envelopeHelper.withMetadataInPayloadForEnvelope(any())).thenReturn(envelope); + + materialEventProcessor.handleMaterialAdded(materialAddedEvent); + + verify(envelopeHelper).withMetadataInPayloadForEnvelope(jsonEnvelopeCaptor.capture()); + verify(sender).sendAsAdmin(envelope); + + assertThat(jsonEnvelopeCaptor.getValue(), is(jsonEnvelope( + metadata().envelopedWith(materialAddedEvent.metadata()) + .withName("sjp.upload-case-document") + .withCausationIds(), + payloadIsJson(allOf( + withJsonPath("$.caseId", equalTo(materialAdded.getCaseId().toString())), + withJsonPath("$.caseDocument", equalTo(materialAdded.getMaterial().getFileStoreId().toString())), + withJsonPath("$.caseDocumentType", equalTo(materialAdded.getMaterial().getDocumentType())) + ))).thatMatchesSchema() + )); + + verify(pendingMaterialExpiration).cancelMaterialTimer(materialAdded.getMaterial().getFileStoreId()); + } + + @Test + void shouldUploadMaterialWhenMaterialAddedEventForNonSJP() { + final boolean isUnbundledDocument = true; + final Envelope materialAddedEvent = createMaterialAddedEventForNonSJP(null, isUnbundledDocument); + + final JsonEnvelope jsonEnvelope = JsonEnvelope.envelopeFrom(materialAddedEvent.metadata(), NULL); + when(metadataHelper.envelopeWithCustomMetadata(any(), any(), any(), any())).thenReturn(jsonEnvelope); + + materialEventProcessor.handleMaterialAdded(materialAddedEvent); + + verifyUploadMaterialWhenMaterialAddedEventForNonSJP(materialAddedEvent, jsonEnvelope, false, isUnbundledDocument); + } + + @Test + void shouldUploadMaterialWhenMaterialAddedV2EventForNonSJP() { + final boolean isUnbundledDocument = true; + final Envelope materialAddedEvent = createMaterialAddedV2EventForNonSJP(null, isUnbundledDocument); + + final JsonEnvelope jsonEnvelope = JsonEnvelope.envelopeFrom(materialAddedEvent.metadata(), NULL); + when(metadataHelper.envelopeWithCustomMetadata(any(), any(), any(), any())).thenReturn(jsonEnvelope); + + materialEventProcessor.handleMaterialAddedV2(materialAddedEvent); + + verifyUploadMaterialWhenMaterialAddedV2EventForNonSJP(materialAddedEvent, jsonEnvelope, false, materialAddedEvent.payload().getMaterial().toString()); + } + + @Test + void shouldUploadMaterialWhenMaterialAddedWithWarningsEventForNonSJP() { + final boolean isUnbundledDocument = true; + final Envelope materialAddedEvent = createMaterialAddedWithWarningsEventForNonSJP(null, isUnbundledDocument); + + final JsonEnvelope jsonEnvelope = JsonEnvelope.envelopeFrom(materialAddedEvent.metadata(), NULL); + when(metadataHelper.envelopeWithCustomMetadata(any(), any(), any(), any())).thenReturn(jsonEnvelope); + + materialEventProcessor.handleMaterialAddedWithWarnings(materialAddedEvent); + + verifyUploadMaterialWhenMaterialAddedWithWarningsEventForNonSJP(materialAddedEvent, jsonEnvelope, false, materialAddedEvent.payload().getMaterial().toString()); + } + + @Test + void shouldNotInitiateUnbundlingWhenMaterialHasNoCmsIdendifier() { + final Envelope materialAddedEvent = createMaterialAddedEventForNonSJP(null, false); + + final JsonEnvelope jsonEnvelope = JsonEnvelope.envelopeFrom(materialAddedEvent.metadata(), NULL); + when(metadataHelper.envelopeWithCustomMetadata(any(), any(), any(), any())).thenReturn(jsonEnvelope); + + materialEventProcessor.handleMaterialAdded(materialAddedEvent); + + verifyNoInteractions(referencedataService); + } + + @Test + void shouldInitiateUnbundlingWhenMaterialHasCmsIdendifierAndDocumentNeedUnbundling() { + final Envelope materialAddedEvent = createMaterialAddedEventWithCmsIdentifier(); + + final var jsonEnvelope = JsonEnvelope.envelopeFrom(materialAddedEvent.metadata(), NULL); + when(metadataHelper.envelopeWithCustomMetadata(any(), any(), any(), any())).thenReturn(jsonEnvelope); + when(referencedataService.isDocumentNeedsUnBundling(anyInt())).thenReturn(true); + + materialEventProcessor.handleMaterialAdded(materialAddedEvent); + + verify(referencedataService).isDocumentNeedsUnBundling(anyInt()); + verify(sender, times(2)).send(jsonEnvelopeCaptor.capture()); + + assertThat(jsonEnvelopeCaptor.getAllValues().get(1).metadata().name(), is(PUBLIC_MATERIAL_DOCUMENT_BUNDLE_ARRIVED_FOR_UNBUNDLE)); + assertThat(jsonEnvelopeCaptor.getAllValues().get(1).payloadAsJsonObject().getString("caseId"), notNullValue()); + assertThat(jsonEnvelopeCaptor.getAllValues().get(1).payloadAsJsonObject().getString("prosecutorDefendantId"), notNullValue()); + assertThat(jsonEnvelopeCaptor.getAllValues().get(1).payloadAsJsonObject().getString("prosecutingAuthority"), notNullValue()); + assertThat(jsonEnvelopeCaptor.getAllValues().get(1).payloadAsJsonObject().getJsonObject("material"), notNullValue()); + assertThat(jsonEnvelopeCaptor.getAllValues().get(1).payloadAsJsonObject().getJsonObject("cmsDocumentIdentifier").getInt("materialType"), is(1)); + assertThat(jsonEnvelopeCaptor.getAllValues().get(1).payloadAsJsonObject().getString("receivedDateTime"), notNullValue()); + assertThat(jsonEnvelopeCaptor.getAllValues().get(1).payloadAsJsonObject().getString("defendantName"), is("John Wick")); + } + + @Test + void shouldNotEmitDocumentBundleArrivedForUnbundlingEventWhenDocumentNotMarkedForUnbundling() { + final Envelope materialAddedEvent = createMaterialAddedEventWithCmsIdentifier(); + + final JsonEnvelope jsonEnvelope = JsonEnvelope.envelopeFrom(materialAddedEvent.metadata(), NULL); + when(metadataHelper.envelopeWithCustomMetadata(any(), any(), any(), any())).thenReturn(jsonEnvelope); + when(referencedataService.isDocumentNeedsUnBundling(anyInt())).thenReturn(false); + + materialEventProcessor.handleMaterialAdded(materialAddedEvent); + + verify(referencedataService).isDocumentNeedsUnBundling(anyInt()); + verify(sender, times(2)).send(any()); + } + + @Test + void shouldHandleDocumentAddedEventForNonSJPCaseLevel() throws Exception { + final JsonEnvelope materialAddedEventFromMaterialContext = createDocumentAddedPayloadForNonSJP(null); + final JsonObject ccMetadataJsonObject = getCCMetadataJsonObjectCaseLevel(null, false).getJsonObject("ccMetadata"); + + when(metadataHelper.getCCMetadata(materialAddedEventFromMaterialContext)).thenReturn(Optional.of(ccMetadataJsonObject)); + + final Envelope envelope = JsonEnvelope.envelopeFrom(metadataWithRandomUUIDAndName(), NULL); + when(envelopeHelper.withMetadataInPayloadForEnvelope(any())).thenReturn(envelope); + + materialEventProcessor.handleMaterialAddedFromMaterialContext(materialAddedEventFromMaterialContext); + + verifyHandleDocumentAddedEvent(envelope, ccMetadataJsonObject, null); + } + + @Test + void shouldHandleMaterialAddedPublicEventWhenFileCloudLocationIsNotNull() throws Exception { + final JsonEnvelope materialAddedEventFromMaterialContext = createDocumentAddedPayloadForNonSJP(null); + final JsonObject ccMetadataJsonObject = getCCMetadataJsonObjectCaseLevel(null, true).getJsonObject("ccMetadata"); + + when(metadataHelper.getCCMetadata(materialAddedEventFromMaterialContext)).thenReturn(Optional.of(ccMetadataJsonObject)); + + materialEventProcessor.handleMaterialAddedFromMaterialContext(materialAddedEventFromMaterialContext); + + verify(idpcUploadMaterialProcessService,times(0)).signalUploadFileProcess(any(),any(),any()); + verify(sender,times(0)).sendAsAdmin(envelopeHelper.withMetadataInPayloadForEnvelope(any())); + } + + + @Test + void shouldCallCommandDocumentAddedWhenEventIsV2() throws Exception { + final String material = UUID.randomUUID().toString(); + final JsonEnvelope materialAddedEventFromMaterialContext = createDocumentAddedV2PayloadForNonSJP(null, material); + final JsonObject ccMetadataJsonObject = getCCMetadataJsonObjectCaseLevel(null, false).getJsonObject("ccMetadata"); + + when(metadataHelper.getCCMetadata(materialAddedEventFromMaterialContext)).thenReturn(Optional.of(ccMetadataJsonObject)); + when(metadataHelper.getFileStoreId(materialAddedEventFromMaterialContext)).thenReturn(material); + + final Envelope envelope = JsonEnvelope.envelopeFrom(metadataWithRandomUUIDAndName(), NULL); + when(envelopeHelper.withMetadataInPayloadForEnvelope(any())).thenReturn(envelope); + + materialEventProcessor.handleMaterialAddedFromMaterialContext(materialAddedEventFromMaterialContext); + + verifyHandleAddDocumentCommand(envelope, ccMetadataJsonObject, null, material); + } + + @Test + void shouldHandleDocumentAddedEventForNonSJPCaseLevelForV2() { + final String material = UUID.randomUUID().toString(); + final JsonEnvelope materialAddedEventFromMaterialContext = createDocumentAddedPrivateV2PayloadForNonSJP(null, material); + final JsonObject ccMetadataJsonObject = getCCMetadataJsonObjectCaseLevel(null, false).getJsonObject("ccMetadata"); + final Envelope envelope = JsonEnvelope.envelopeFrom(metadataWithRandomUUIDAndName(), NULL); + when(envelopeHelper.withMetadataInPayloadForEnvelope(any())).thenReturn(envelope); + + materialEventProcessor.handleCourtDocumentAdded(materialAddedEventFromMaterialContext); + + verifyHandleDocumentAddedV2Event(envelope, ccMetadataJsonObject, null); + } + + @Test + void shouldHandleDocumentAddedEventForIsCPSCaseFlagIsTrue() throws Exception { + final JsonEnvelope materialAddedEventFromMaterialContext = createDocumentAddedPayloadForNonSJP(true); + final JsonObject ccMetadataJsonObject = getCCMetadataJsonObjectCaseLevel(true, false).getJsonObject("ccMetadata"); + + when(metadataHelper.getCCMetadata(materialAddedEventFromMaterialContext)).thenReturn(Optional.of(ccMetadataJsonObject)); + + final Envelope envelope = JsonEnvelope.envelopeFrom(metadataWithRandomUUIDAndName(), NULL); + when(envelopeHelper.withMetadataInPayloadForEnvelope(any())).thenReturn(envelope); + + materialEventProcessor.handleMaterialAddedFromMaterialContext(materialAddedEventFromMaterialContext); + + verifyHandleDocumentAddedEvent(envelope, ccMetadataJsonObject, true); + } + + @Test + void shouldHandleDocumentAddedEventForIsCPSCaseFlagIsFalse() throws Exception { + final JsonEnvelope materialAddedEventFromMaterialContext = createDocumentAddedPayloadForNonSJP(false); + final JsonObject ccMetadataJsonObject = getCCMetadataJsonObjectCaseLevel(false, false).getJsonObject("ccMetadata"); + + when(metadataHelper.getCCMetadata(materialAddedEventFromMaterialContext)).thenReturn(Optional.of(ccMetadataJsonObject)); + + final Envelope envelope = Envelope.envelopeFrom(metadataWithRandomUUIDAndName(), NULL); + when(envelopeHelper.withMetadataInPayloadForEnvelope(any())).thenReturn(envelope); + + materialEventProcessor.handleMaterialAddedFromMaterialContext(materialAddedEventFromMaterialContext); + + verifyHandleDocumentAddedEvent(envelope, ccMetadataJsonObject, false); + } + + @Test + void shouldHandleDocumentAddedEventForNonSJPDefendantLevel() throws Exception { + final JsonEnvelope materialAddedEventFromMaterialContext = createDocumentAddedPayloadForNonSJP(null); + final JsonObject ccMetadataJsonObject = getCCMetadataJsonObjectDefendantLevel().getJsonObject("ccMetadata"); + + when(metadataHelper.getCCMetadata(materialAddedEventFromMaterialContext)).thenReturn(Optional.of(ccMetadataJsonObject)); + + final Envelope envelope = JsonEnvelope.envelopeFrom(metadataWithRandomUUIDAndName(), NULL); + when(envelopeHelper.withMetadataInPayloadForEnvelope(any())).thenReturn(envelope); + + materialEventProcessor.handleMaterialAddedFromMaterialContext(materialAddedEventFromMaterialContext); + + verify(envelopeHelper).withMetadataInPayloadForEnvelope(jsonEnvelopeCaptor.capture()); + verify(sender).sendAsAdmin(envelope); + + final JsonEnvelope addCourtDocument = jsonEnvelopeCaptor.getValue(); + + assertThat(addCourtDocument, is(jsonEnvelope( + metadata() + .withName(PROGRESSION_ADD_COURT_DOCUMENT), + payloadIsJson(allOf( + withJsonPath("$.courtDocument"), + withJsonPath("$.courtDocument.courtDocumentId"), + withJsonPath("$.courtDocument.name", equalTo(FILE_NAME)), + withJsonPath("$.courtDocument.documentTypeId", equalTo(ccMetadataJsonObject.getString("documentTypeId"))), + withJsonPath("$.courtDocument.materials[0].id", equalTo(addCourtDocument.payloadAsJsonObject().getString("materialId"))), + withJsonPath("$.courtDocument.documentCategory.defendantDocument.prosecutionCaseId", equalTo(ccMetadataJsonObject.getString("caseId"))), + withJsonPath("$.courtDocument.documentCategory.defendantDocument.defendants[0]", equalTo(ccMetadataJsonObject.getString("defendantId"))), + withJsonPath("$.materialId", equalTo(addCourtDocument.payloadAsJsonObject().getString("materialId"))) + ))))); + } + + @Test + void shouldHandleMaterialRejectedEvent() throws Exception { + final Envelope materialRejectedEnvelope = createMaterialRejectedEvent(null, null, null, null); + final MaterialRejected materialRejectedEvent = materialRejectedEnvelope.payload(); + + materialEventProcessor.handleMaterialRejected(materialRejectedEnvelope); + + verify(sender).send(envelopeArgumentCaptor.capture()); + + final Envelope publicMaterialRejectedEvent = envelopeArgumentCaptor.getValue(); + + assertThat(publicMaterialRejectedEvent.metadata(), metadata().envelopedWith(materialRejectedEnvelope.metadata()).withName("public.prosecutioncasefile.material-rejected")); + + final MaterialRejected publicEventPayload = publicMaterialRejectedEvent.payload(); + assertThat(publicEventPayload, is(materialRejectedEvent)); + + //verify(fileStorer).delete(materialRejectedEvent.getMaterial().getFileStoreId()); + verify(pendingMaterialExpiration).cancelMaterialTimer(materialRejectedEvent.getMaterial().getFileStoreId()); + } + + @Test + void shouldHandleMaterialRejectedV2Event() throws Exception { + final Envelope materialRejectedEnvelope = createMaterialRejectedV2Event(null, null, null, null); + final MaterialRejectedV2 materialRejectedEvent = materialRejectedEnvelope.payload(); + + materialEventProcessor.handleMaterialRejectedV2(materialRejectedEnvelope); + + verify(sender).send(envelopeArgumentCaptor.capture()); + + final Envelope publicMaterialRejectedEvent = envelopeArgumentCaptor.getValue(); + + assertThat(publicMaterialRejectedEvent.metadata(), metadata().envelopedWith(materialRejectedEnvelope.metadata()).withName("public.prosecutioncasefile.material-rejected-v2")); + + final MaterialRejectedV2 publicEventPayload = publicMaterialRejectedEvent.payload(); + assertThat(publicEventPayload, is(materialRejectedEvent)); + + //verify(fileStorer).delete(materialRejectedEvent.getMaterial()); + verify(pendingMaterialExpiration).cancelMaterialTimer(materialRejectedEvent.getMaterial()); + } + + @Test + void shouldHandleMaterialRejectedWithWarningsEvent() throws Exception { + final Envelope materialRejectedEnvelope = createMaterialRejectedWithWarningsEvent(null, null, null, null); + final MaterialRejectedWithWarnings materialRejectedEvent = materialRejectedEnvelope.payload(); + + materialEventProcessor.handleMaterialRejectedWithWarnings(materialRejectedEnvelope); + + verify(sender).send(envelopeArgumentCaptor.capture()); + + final Envelope publicMaterialRejectedEvent = envelopeArgumentCaptor.getValue(); + + assertThat(publicMaterialRejectedEvent.metadata(), metadata().envelopedWith(materialRejectedEnvelope.metadata()).withName("public.prosecutioncasefile.material-rejected-with-warnings")); + + final MaterialRejectedWithWarnings publicEventPayload = publicMaterialRejectedEvent.payload(); + assertThat(publicEventPayload, is(materialRejectedEvent)); + + //verify(fileStorer).delete(materialRejectedEvent.getMaterial()); + verify(pendingMaterialExpiration).cancelMaterialTimer(materialRejectedEvent.getMaterial()); + } + + @Test + void shouldHandleMaterialRejectedEventRaisedDocumentRequiredReview() throws Exception { + UUID documentId = randomUUID(); + final Envelope materialRejectedEnvelope = createMaterialRejectedEvent(true, documentId.toString(), ZonedDateTime.now(), "APPLICATION"); + final MaterialRejected materialRejectedEvent = materialRejectedEnvelope.payload(); + + materialEventProcessor.handleMaterialRejected(materialRejectedEnvelope); + + verify(sender, times(1)).send(envelopeArgumentCaptor.capture()); + + final Envelope publicMaterialRejectedEvent = envelopeArgumentCaptor.getAllValues().get(0); + + assertThat(publicMaterialRejectedEvent.metadata(), metadata().envelopedWith(materialRejectedEnvelope.metadata()).withName("public.prosecutioncasefile.material-rejected")); + + final MaterialRejected publicEventPayload = publicMaterialRejectedEvent.payload(); + assertThat(publicEventPayload, is(materialRejectedEvent)); + + //verify(fileStorer).delete(materialRejectedEvent.getMaterial().getFileStoreId()); + verify(pendingMaterialExpiration).cancelMaterialTimer(materialRejectedEvent.getMaterial().getFileStoreId()); + } + + @Test + void shouldHandleMaterialRejectedV2EventRaisedDocumentRequiredReview() throws Exception { + UUID material = randomUUID(); + final Envelope materialRejectedEnvelope = createMaterialRejectedV2Event(true, material, ZonedDateTime.now(), "APPLICATION"); + final MaterialRejectedV2 materialRejectedEvent = materialRejectedEnvelope.payload(); + + materialEventProcessor.handleMaterialRejectedV2(materialRejectedEnvelope); + + verify(sender, times(1)).send(envelopeArgumentCaptor.capture()); + + final Envelope publicMaterialRejectedEvent = envelopeArgumentCaptor.getAllValues().get(0); + + assertThat(publicMaterialRejectedEvent.metadata(), metadata().envelopedWith(materialRejectedEnvelope.metadata()).withName("public.prosecutioncasefile.material-rejected-v2")); + + final MaterialRejectedV2 publicEventPayload = publicMaterialRejectedEvent.payload(); + assertThat(publicEventPayload, is(materialRejectedEvent)); + + //verify(fileStorer).delete(materialRejectedEvent.getMaterial().getFileStoreId()); + verify(pendingMaterialExpiration).cancelMaterialTimer(materialRejectedEvent.getMaterial()); + } + + @Test + void shouldHandleMaterialRejectedEventRaisedDocumentRequiredReviewForOther() throws Exception { + UUID documentId = randomUUID(); + final Envelope materialRejectedEnvelope = createMaterialRejectedEvent(true, documentId.toString(), ZonedDateTime.now(), null); + final MaterialRejected materialRejectedEvent = materialRejectedEnvelope.payload(); + + materialEventProcessor.handleMaterialRejected(materialRejectedEnvelope); + + verify(sender, times(1)).send(envelopeArgumentCaptor.capture()); + + final Envelope publicMaterialRejectedEvent = envelopeArgumentCaptor.getAllValues().get(0); + + assertThat(publicMaterialRejectedEvent.metadata(), metadata().envelopedWith(materialRejectedEnvelope.metadata()).withName("public.prosecutioncasefile.material-rejected")); + + final MaterialRejected publicEventPayload = publicMaterialRejectedEvent.payload(); + assertThat(publicEventPayload, is(materialRejectedEvent)); + + //verify(fileStorer).delete(materialRejectedEvent.getMaterial().getFileStoreId()); + verify(pendingMaterialExpiration).cancelMaterialTimer(materialRejectedEvent.getMaterial().getFileStoreId()); + } + + @Test + void shouldHandleMaterialRejectedV2EventRaisedDocumentRequiredReviewForOther() throws Exception { + UUID material = randomUUID(); + final Envelope materialRejectedEnvelope = createMaterialRejectedV2Event(true, material, ZonedDateTime.now(), null); + final MaterialRejectedV2 materialRejectedEvent = materialRejectedEnvelope.payload(); + + materialEventProcessor.handleMaterialRejectedV2(materialRejectedEnvelope); + + verify(sender, times(1)).send(envelopeArgumentCaptor.capture()); + + final Envelope publicMaterialRejectedEvent = envelopeArgumentCaptor.getAllValues().get(0); + + assertThat(publicMaterialRejectedEvent.metadata(), metadata().envelopedWith(materialRejectedEnvelope.metadata()).withName("public.prosecutioncasefile.material-rejected-v2")); + + final MaterialRejectedV2 publicEventPayload = publicMaterialRejectedEvent.payload(); + assertThat(publicEventPayload, is(materialRejectedEvent)); + + //verify(fileStorer).delete(materialRejectedEvent.getMaterial().getFileStoreId()); + verify(pendingMaterialExpiration).cancelMaterialTimer(materialRejectedEvent.getMaterial()); + } + + @Test + void shouldhandleDocumentReviewRequiredEventAndRaiseDocumentRequiredReview() throws Exception { + final UUID documentId = randomUUID(); + final UUID fileStoreId = randomUUID(); + final Envelope caseDocumentReviewRequiredEnvelope = createMaterialRejectedEvent(documentId.toString(), ZonedDateTime.now(), fileStoreId); + + materialEventProcessor.handleDocumentReviewRequired(caseDocumentReviewRequiredEnvelope); + + verify(sender, times(1)).send(envelopeArgumentCaptor.capture()); + + final Envelope publicDocumentReviewEvent = envelopeArgumentCaptor.getAllValues().get(0); + + assertThat(publicDocumentReviewEvent.metadata(), metadata().envelopedWith(caseDocumentReviewRequiredEnvelope.metadata()).withName("public.prosecutioncasefile.document-review-required")); + + + final DocumentReviewRequired payload = publicDocumentReviewEvent.payload(); + assertThat(payload.getCmsDocumentId(), is(documentId.toString())); + assertThat(payload.getFileStoreId(), is(fileStoreId)); + assertThat(payload.getErrorCodes().get(0), is(PROBLEM_CODE_DOCUMENT_NOT_MATCHED)); + + } + + @Test + void shouldHandleMaterialPendingEvent() { + final Envelope materialPendingEvent = createMaterialPendingEvent(); + final MaterialPending materialPending = materialPendingEvent.payload(); + + materialEventProcessor.handleMaterialPending(materialPendingEvent); + + verify(pendingMaterialExpiration).startMaterialTimer(materialPending.getMaterial().getFileStoreId(), materialPending.getCaseId(), materialPendingEvent.metadata()); + } + + @Test + void shouldHandleMaterialPendingV2Event() { + final Envelope materialPendingEvent = createMaterialPendingV2Event(); + final MaterialPendingV2 materialPending = materialPendingEvent.payload(); + + materialEventProcessor.handleMaterialPendingV2(materialPendingEvent); + + verify(pendingMaterialExpiration).startMaterialTimer(materialPending.getMaterial(), materialPending.getCaseId(), materialPendingEvent.metadata()); + } + + @Test + void shouldHandleMaterialPendingWithWarningsEvent() { + final Envelope materialPendingEvent = createMaterialPendingWithWarningsEvent(); + final MaterialPendingV2 materialPending = materialPendingEvent.payload(); + + materialEventProcessor.handleMaterialPendingV2(materialPendingEvent); + + verify(pendingMaterialExpiration).startMaterialTimer(materialPending.getMaterial(), materialPending.getCaseId(), materialPendingEvent.metadata()); + + verify(sender).send(envelopeArgumentCaptor.capture()); + + final Envelope publicMaterialPendingEvent = envelopeArgumentCaptor.getValue(); + + assertThat(publicMaterialPendingEvent.metadata().asJsonObject().getString("name"), is("public.prosecutioncasefile.material-pending-with-warnings")); + + final MaterialPendingV2 publicEventPayload = publicMaterialPendingEvent.payload(); + assertThat(publicEventPayload, is(materialPending)); + + } + + @Test + void shouldUploadMaterialWhenMaterialAddedEventWihIsCspsCaseIsTRUE() { + final boolean isUnbundledDocument = false; + final Envelope materialAddedEvent = createMaterialAddedEventForNonSJP(true, isUnbundledDocument); + + final JsonEnvelope jsonEnvelope = JsonEnvelope.envelopeFrom(materialAddedEvent.metadata(), NULL); + when(metadataHelper.envelopeWithCustomMetadata(any(), any(), any(), any())).thenReturn(jsonEnvelope); + + materialEventProcessor.handleMaterialAdded(materialAddedEvent); + + verifyUploadMaterialWhenMaterialAddedEventForNonSJP(materialAddedEvent, jsonEnvelope, true, isUnbundledDocument); + } + + @Test + void shouldUploadMaterialWhenMaterialAddedEventWihIsCspsCaseIsFALSE() { + final boolean isUnbundledDocument = false; + final Envelope materialAddedEvent = createMaterialAddedEventForNonSJP(false, isUnbundledDocument); + + final JsonEnvelope jsonEnvelope = JsonEnvelope.envelopeFrom(materialAddedEvent.metadata(), NULL); + when(metadataHelper.envelopeWithCustomMetadata(any(), any(), any(), any())).thenReturn(jsonEnvelope); + + materialEventProcessor.handleMaterialAdded(materialAddedEvent); + + verifyUploadMaterialWhenMaterialAddedEventForNonSJP(materialAddedEvent, jsonEnvelope, true, isUnbundledDocument); + } + + private void verifyHandleDocumentAddedEvent(Envelope envelope, JsonObject ccMetadataJsonObject, Boolean isCpsCase) { + verify(envelopeHelper).withMetadataInPayloadForEnvelope(jsonEnvelopeCaptor.capture()); + verify(sender).sendAsAdmin(envelope); + + final JsonEnvelope addCourtDocument = jsonEnvelopeCaptor.getValue(); + + org.hamcrest.Matcher isCpsCaseMatcher; + if (isCpsCase == null) { + isCpsCaseMatcher = hasNoJsonPath("$.courtDocument.isCpsCase"); + } else { + isCpsCaseMatcher = withJsonPath("$.courtDocument.isCpsCase", equalTo(isCpsCase)); + } + + + assertThat(addCourtDocument, is(jsonEnvelope( + metadata() + .withName(PROGRESSION_ADD_COURT_DOCUMENT), + payloadIsJson(allOf( + withJsonPath("$.courtDocument"), + withJsonPath("$.courtDocument.courtDocumentId"), + withJsonPath("$.courtDocument.name", equalTo(FILE_NAME)), + withJsonPath("$.courtDocument.documentTypeId", equalTo(ccMetadataJsonObject.getString("documentTypeId"))), + withJsonPath("$.courtDocument.documentTypeDescription", equalTo(ccMetadataJsonObject.getString("documentTypeDescription"))), + withJsonPath("$.courtDocument.materials[0].id", equalTo(addCourtDocument.payloadAsJsonObject().getString("materialId"))), + withJsonPath("$.courtDocument.documentCategory.caseDocument.prosecutionCaseId", equalTo(ccMetadataJsonObject.getString("caseId"))), + withJsonPath("$.materialId", equalTo(addCourtDocument.payloadAsJsonObject().getString("materialId"))), + isCpsCaseMatcher + ))))); + } + + private void verifyHandleDocumentAddedV2Event(Envelope envelope, JsonObject ccMetadataJsonObject, Boolean isCpsCase) { + verify(envelopeHelper).withMetadataInPayloadForEnvelope(jsonEnvelopeCaptor.capture()); + verify(sender).sendAsAdmin(envelope); + + final JsonEnvelope addCourtDocument = jsonEnvelopeCaptor.getValue(); + + org.hamcrest.Matcher isCpsCaseMatcher; + if (isCpsCase == null) { + isCpsCaseMatcher = hasNoJsonPath("$.courtDocument.isCpsCase"); + } else { + isCpsCaseMatcher = withJsonPath("$.courtDocument.isCpsCase", equalTo(isCpsCase)); + } + + + assertThat(addCourtDocument, is(jsonEnvelope( + metadata() + .withName("progression.add-court-document-v2"), + payloadIsJson(allOf( + withJsonPath("$.courtDocument"), + withJsonPath("$.courtDocument.courtDocumentId"), + withJsonPath("$.courtDocument.name", equalTo(FILE_NAME)), + isCpsCaseMatcher + ))))); + } + + + private void verifyHandleAddDocumentCommand(Envelope envelope, JsonObject ccMetadataJsonObject, Boolean isCpsCase, String fileStoreId) { + verify(envelopeHelper).withMetadataInPayloadForEnvelope(jsonEnvelopeCaptor.capture()); + verify(sender).sendAsAdmin(envelope); + + final JsonEnvelope addCourtDocument = jsonEnvelopeCaptor.getValue(); + + org.hamcrest.Matcher isCpsCaseMatcher; + if (isCpsCase == null) { + isCpsCaseMatcher = hasNoJsonPath("$.courtDocument.isCpsCase"); + } else { + isCpsCaseMatcher = withJsonPath("$.courtDocument.isCpsCase", equalTo(isCpsCase)); + } + + + assertThat(addCourtDocument, is(jsonEnvelope( + metadata() + .withName("prosecutioncasefile.command.add-case-court-document"), + payloadIsJson(allOf( + withJsonPath("$.courtDocument"), + withJsonPath("$.courtDocument.courtDocumentId"), + withJsonPath("$.courtDocument.name", equalTo(FILE_NAME)), + withJsonPath("$.courtDocument.documentTypeId", equalTo(ccMetadataJsonObject.getString("documentTypeId"))), + withJsonPath("$.courtDocument.documentTypeDescription", equalTo(ccMetadataJsonObject.getString("documentTypeDescription"))), + withJsonPath("$.courtDocument.materials[0].id", equalTo(addCourtDocument.payloadAsJsonObject().getString("materialId"))), + withJsonPath("$.courtDocument.documentCategory.caseDocument.prosecutionCaseId", equalTo(ccMetadataJsonObject.getString("caseId"))), + withJsonPath("$.materialId", equalTo(addCourtDocument.payloadAsJsonObject().getString("materialId"))), + withJsonPath("$.fileStoreId", equalTo(fileStoreId)), + isCpsCaseMatcher + ))))); + } + + private void verifyUploadMaterialWhenMaterialAddedEventForNonSJP(Envelope materialAddedEvent, JsonEnvelope jsonEnvelope, boolean withIsCpsCase, final boolean isUnbundledDocument) { + final MaterialAdded materialAdded = materialAddedEvent.payload(); + verify(metadataHelper).envelopeWithCustomMetadata( + metadataArgumentCaptor.capture(), + jsonObjectArgumentCaptor.capture(), + jsonObjectArgumentCaptor.capture(), + eq(null)); + + final String commandName = metadataArgumentCaptor.getValue().name(); + final JsonObject ccMetadata = jsonObjectArgumentCaptor.getAllValues().get(0); + final JsonObject materialPayload = jsonObjectArgumentCaptor.getAllValues().get(1); + + assertEquals(UPLOAD_FILE_TO_MATERIAL_CONTEXT, commandName); + + assertTrue(materialPayload.containsKey("materialId")); + assertEquals(materialPayload.getString("fileServiceId"), materialAddedEvent.payload().getMaterial().getFileStoreId().toString()); + + if (isUnbundledDocument) { + assertTrue(materialPayload.getBoolean("isUnbundledDocument")); + } else { + assertNull(materialPayload.get("isUnbundledDocument")); + } + + assertEquals(ccMetadata.getString("caseId"), materialAddedEvent.payload().getCaseId().toString()); + assertEquals(ccMetadata.getString("documentTypeId"), materialAddedEvent.payload().getDocumentTypeId()); + assertEquals(ccMetadata.getString("documentTypeDescription"), materialAddedEvent.payload().getDocumentType()); + assertEquals(ccMetadata.getString("documentCategory"), materialAddedEvent.payload().getDocumentCategory()); + assertEquals(ccMetadata.getString("defendantId"), materialAddedEvent.payload().getDefendantId().toString()); + if (withIsCpsCase) { + assertEquals(ccMetadata.getBoolean("isCpsCase"), materialAddedEvent.payload().getIsCpsCase()); + } + verify(sender).send(jsonEnvelope); + verify(pendingMaterialExpiration).cancelMaterialTimer(materialAdded.getMaterial().getFileStoreId()); + } + + private void verifyUploadMaterialWhenMaterialAddedV2EventForNonSJP(Envelope materialAddedEvent, JsonEnvelope jsonEnvelope, boolean withIsCpsCase, final String fileServiceId) { + final MaterialAddedV2 materialAdded = materialAddedEvent.payload(); + verify(metadataHelper).envelopeWithCustomMetadata( + metadataArgumentCaptor.capture(), + jsonObjectArgumentCaptor.capture(), + jsonObjectArgumentCaptor.capture(), + eq(fileServiceId)); + + final String commandName = metadataArgumentCaptor.getValue().name(); + final JsonObject ccMetadata = jsonObjectArgumentCaptor.getAllValues().get(0); + final JsonObject materialPayload = jsonObjectArgumentCaptor.getAllValues().get(1); + + assertEquals(UPLOAD_FILE_TO_MATERIAL_CONTEXT, commandName); + + assertTrue(materialPayload.containsKey("materialId")); + assertEquals(materialPayload.getString("fileServiceId"), materialAddedEvent.payload().getMaterial().toString()); + assertEquals(ccMetadata.getString("caseId"), materialAddedEvent.payload().getCaseId().toString()); + assertEquals(ccMetadata.getString("documentTypeId"), materialAddedEvent.payload().getDocumentTypeId()); + assertEquals(ccMetadata.getString("documentTypeDescription"), materialAddedEvent.payload().getMaterialType()); + assertEquals(ccMetadata.getString("documentCategory"), materialAddedEvent.payload().getDocumentCategory()); + + if (withIsCpsCase) { + assertEquals(ccMetadata.getBoolean("isCpsCase"), materialAddedEvent.payload().getIsCpsCase()); + } + verify(sender).send(jsonEnvelope); + verify(pendingMaterialExpiration).cancelMaterialTimer(materialAdded.getMaterial()); + } + + private void verifyUploadMaterialWhenMaterialAddedWithWarningsEventForNonSJP(Envelope materialAddedEvent, JsonEnvelope jsonEnvelope, boolean withIsCpsCase, final String fileServiceId) { + final MaterialAddedWithWarnings materialAdded = materialAddedEvent.payload(); + verify(metadataHelper).envelopeWithCustomMetadata( + metadataArgumentCaptor.capture(), + jsonObjectArgumentCaptor.capture(), + jsonObjectArgumentCaptor.capture(), + eq(fileServiceId)); + + final String commandName = metadataArgumentCaptor.getValue().name(); + final JsonObject ccMetadata = jsonObjectArgumentCaptor.getAllValues().get(0); + final JsonObject materialPayload = jsonObjectArgumentCaptor.getAllValues().get(1); + + assertEquals(UPLOAD_FILE_TO_MATERIAL_CONTEXT, commandName); + + assertTrue(materialPayload.containsKey("materialId")); + assertEquals(materialPayload.getString("fileServiceId"), materialAddedEvent.payload().getMaterial().toString()); + assertEquals(ccMetadata.getString("caseId"), materialAddedEvent.payload().getCaseId().toString()); + assertEquals(ccMetadata.getString("documentTypeId"), materialAddedEvent.payload().getDocumentTypeId()); + assertEquals(ccMetadata.getString("documentTypeDescription"), materialAddedEvent.payload().getMaterialType()); + assertEquals(ccMetadata.getString("documentCategory"), materialAddedEvent.payload().getDocumentCategory()); + + if (withIsCpsCase) { + assertEquals(ccMetadata.getBoolean("isCpsCase"), materialAddedEvent.payload().getIsCpsCase()); + } + verify(sender).send(jsonEnvelope); + verify(pendingMaterialExpiration).cancelMaterialTimer(materialAdded.getMaterial()); + } + + private Envelope createMaterialRejectedEvent(Boolean isCpsCase, String documentId, ZonedDateTime receivedDateTime, String documentType) { + return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.material-rejected").build() + , materialRejected() + .withCaseId(randomUUID()) + .withProsecutorDefendantId(randomUUID().toString()) + .withProsecutingAuthority("GAEAA01") + .withErrors(asList(problem().withCode("INVALID_FILE_TYPE").withValues( + asList(problemValue().withKey("fileType").withValue("csv").build())).build())) + .withMaterial(randomMaterial(documentType, false)) + .withIsCpsCase(isCpsCase) + .withReceivedDateTime(receivedDateTime) + .withCmsDocumentId(documentId) + .build()); + } + + private Envelope createMaterialRejectedV2Event(Boolean isCpsCase, UUID material, ZonedDateTime receivedDateTime, String materialType) { + return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.material-rejected-v2").build() + , materialRejectedV2() + .withCaseId(randomUUID()) + .withErrors(asList(problem().withCode("INVALID_FILE_TYPE").withValues( + asList(problemValue().withKey("materialContentType").withValue("csv").build())).build())) + .withMaterial(material) + .withMaterialType(materialType) + .withMaterialName("Statement") + .withSectionOrderSequence(000001) + .withIsCpsCase(isCpsCase) + .withReceivedDateTime(receivedDateTime) + .build()); + } + + private Envelope createMaterialRejectedWithWarningsEvent(Boolean isCpsCase, UUID material, ZonedDateTime receivedDateTime, String materialType) { + final Problem warning = Problem.problem() + .withCode("problemCode") + .build(); + return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.material-rejected-with-warnings").build() + , materialRejectedWithWarnings() + .withCaseId(randomUUID()) + .withErrors(asList(problem().withCode("INVALID_FILE_TYPE").withValues( + asList(problemValue().withKey("materialContentType").withValue("csv").build())).build())) + .withMaterial(material) + .withMaterialType(materialType) + .withMaterialName("Statement") + .withSectionOrderSequence(000001) + .withIsCpsCase(isCpsCase) + .withReceivedDateTime(receivedDateTime) + .withWarnings(ImmutableList.of(warning)) + .build()); + } + + private Envelope createMaterialRejectedEvent(final String documentId, final ZonedDateTime receivedDateTime, final UUID fileStoreId) { + return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.case-document-review-required").build() + , CaseDocumentReviewRequired.caseDocumentReviewRequired() + .withCaseId(randomUUID()) + .withCmsDocumentId(documentId) + .withDocumentType(DocumentType.OTHER) + .withErrorCodes(Collections.singletonList(PROBLEM_CODE_DOCUMENT_NOT_MATCHED)) + .withFileStoreId(fileStoreId) + .withReceivedDateTime(receivedDateTime) + .withSource(SOURCE_CPS_FOR_PUBLIC_EVENTS) + .build() + ); + } + + + @Test + void shouldHandleIdpcMaterialRejectedEvent() throws Exception { + final Envelope idpcMaterialRejectedEnvelope = createIdpcMaterialRejectedEvent(); + final IdpcMaterialRejected idpcMaterialRejectedEvent = idpcMaterialRejectedEnvelope.payload(); + + materialEventProcessor.handleIdpcMaterialRejected(idpcMaterialRejectedEnvelope); + + verify(fileStorer).delete(idpcMaterialRejectedEvent.getFileServiceId()); + verify(pendingIdpcMaterialExpiration).cancelIdpcMaterialTimer(idpcMaterialRejectedEvent.getFileServiceId()); + } + + private Envelope createIdpcMaterialRejectedEvent() { + return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.idpc-material-rejected").build() + , idpcMaterialRejected() + .withCaseId(randomUUID()) + .withErrors(asList(problem().withCode("INVALID_FILE_TYPE").withValues( + asList(problemValue().withKey("fileType").withValue("csv").build())).build())) + .withFileServiceId(randomUUID()) + .build()); + } + + @Test + void shouldHandleIdpcDefendantMatch() throws Exception { + final Envelope idpcDefendantMatch = envelopeFrom( + metadataWithRandomUUID("prosecutioncasefile.events.idpc-defendant-matched"), + idpcDefendantMatched().withCaseId(randomUUID()) + .withFileServiceId(randomUUID()) + .withCaseUrn("12345") + .withMaterialType("idpc") + .withDefendantId(randomUUID().toString()) + .build()); + + materialEventProcessor.idpcDefendantMatch(idpcDefendantMatch); + verify(idpcUploadMaterialProcessService).startUploadFileProcess(idpcDefendantMatch); + } + + @Test + void shouldHandleIdpcDefendantMatchPending() { + final Envelope idpcDefendantMatch = envelopeFrom( + metadataWithRandomUUID("prosecutioncasefile.events.idpc-defendant-match-pending"), + idpcDefendantMatchPending().withCaseId(randomUUID()) + .withFileServiceId(randomUUID()) + .withCaseUrn("12345") + .withMaterialType("idpc") + .withDefendant(defendant().build()) + .build()); + final IdpcDefendantMatchPending payload = idpcDefendantMatch.payload(); + + materialEventProcessor.handleIdpcDefendantMatchPending(idpcDefendantMatch); + verify(pendingIdpcMaterialExpiration).startMaterialTimer(payload.getFileServiceId(), payload.getCaseId(), idpcDefendantMatch.metadata()); + } + + @Test + void shouldHandleIdpcMaterialAdded() throws Exception { + final JsonEnvelope addIdpcMaterial = JsonEnvelope.envelopeFrom( + metadataWithIdpcProcessId(metadataWithRandomUUID("material.material-added").build(), randomUUID().toString()), + createObjectBuilder() + .add("materialId", randomUUID().toString()) + .add("fileDetails", createObjectBuilder().add("alfrescoAssetId", "aGVsbG8=").add("mimeType", "text/plain").add("fileName", "abc.txt").build()) + .add("materialAddedDate", "2016-04-26T13:01:787.345") + .add("isUnbundledDocument", true) + .build()); + + when(metadataHelper.getCCMetadata(any())).thenReturn(Optional.empty()); + when(idpcUploadMaterialProcessService.signalUploadFileProcess(any(), any(), any())).thenReturn(UUID.randomUUID().toString()); + materialEventProcessor.handleMaterialAddedFromMaterialContext(addIdpcMaterial); + verify(idpcUploadMaterialProcessService).signalUploadFileProcess(any(), any(), any()); + } + + @Test + void shouldHandleDefendantIdpcAlreadyExists() throws Exception { + final JsonEnvelope idpcDefendantAlreadyExists = JsonEnvelope.envelopeFrom( + metadataWithIdpcProcessId(metadataWithRandomUUID("prosecutioncasefile.events.defendant-idpc-already-exists").build(), randomUUID().toString()), + createObjectBuilder() + .add("defendantId", "34123423") + .add("fileServiceId", randomUUID().toString()) + .add("caseId", "2016-04-26T13:01:787.345") + .build()); + + materialEventProcessor.handleDefendantIdpcAlreadyExists(idpcDefendantAlreadyExists); + verify(fileStorer, times(1)).delete(any(UUID.class)); + + } + + private Envelope createMaterialAddedEventWithCmsIdentifier() { + return envelopeFrom( + metadataWithRandomUUID("prosecutioncasefile.events.material-added"), + materialAdded() + .withCaseId(randomUUID()) + .withMaterial(randomMaterial()) + .withCaseType("CC") + .withDocumentCategory("Defendant level") + .withDocumentTypeId(randomUUID().toString()) + .withDocumentType("DocumentType") + .withProsecutorDefendantId(randomUUID().toString()) + .withProsecutingAuthority(randomUUID().toString()) + .withDefendantId(randomUUID()) + .withIsCpsCase(false) + .withCmsDocumentIdentifier(cmsDocumentIdentifier() + .withMaterialType(1) + .withDocumentId("documentId").build()) + .withReceivedDateTime(ZonedDateTime.now()) + .withDefendantName("John Wick") + .build()); + } + + private Material randomMaterial() { + return material() + .withFileStoreId(randomUUID()) + .withDocumentType(randomAlphanumeric(5)) + .withFileType(randomAlphanumeric(5)) + .build(); + } + + @Test + void shouldhandleDocumentReviewRequiredEventV2AndRaiseDocumentRequiredReview() throws Exception { + final UUID documentId = randomUUID(); + final UUID fileStoreId = randomUUID(); + final Envelope caseDocumentReviewRequiredEnvelope = createMaterialRejectedEvent(documentId.toString(), ZonedDateTime.now(), fileStoreId); + + materialEventProcessor.handleDocumentReviewRequiredV2(caseDocumentReviewRequiredEnvelope); + + verify(sender, times(1)).send(envelopeArgumentCaptor.capture()); + + final Envelope publicDocumentReviewEvent = envelopeArgumentCaptor.getAllValues().get(0); + + assertThat(publicDocumentReviewEvent.metadata(), metadata().envelopedWith(caseDocumentReviewRequiredEnvelope.metadata()).withName("public.prosecutioncasefile.document-review-required-v2")); + + + final DocumentReviewRequired payload = publicDocumentReviewEvent.payload(); + assertThat(payload.getCmsDocumentId(), is(documentId.toString())); + assertThat(payload.getFileStoreId(), is(fileStoreId)); + assertThat(payload.getErrorCodes().get(0), is(PROBLEM_CODE_DOCUMENT_NOT_MATCHED)); + } + + @Test + void shouldHandleBulkScanMaterialRejected() throws Exception { + final UUID documentId = randomUUID(); + final UUID fileStoreId = randomUUID(); + final Envelope bulkscanMaterialRejectedEnvelope = createBulkscanMaterialRejected(documentId.toString(), ZonedDateTime.now(), fileStoreId); + + materialEventProcessor.handleBulkScanMaterialRejected(bulkscanMaterialRejectedEnvelope); + + verify(sender, times(1)).send(envelopeArgumentCaptor.capture()); + + final Envelope publicEvent = envelopeArgumentCaptor.getAllValues().get(0); + + assertThat(publicEvent.metadata(), metadata().envelopedWith(bulkscanMaterialRejectedEnvelope.metadata()).withName("public.prosecutioncasefile.bulkscan-material-followup")); + } + + private Envelope createBulkscanMaterialRejected(final String documentId, final ZonedDateTime receivedDateTime, final UUID fileStoreId) { + return envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.events.bulkscan-material-rejected").build() + , BulkscanMaterialRejected.bulkscanMaterialRejected() + .withCaseId(randomUUID()) + .withMaterial(material() + .withDocumentType("documentType") + .withFileStoreId(randomUUID()) + .withFileType("fileType") + .withIsUnbundledDocument(false) + .build()) + .build() + ); + } } \ No newline at end of file diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ProgressionPublicEventProcessorTest.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ProgressionPublicEventProcessorTest.java index 5dc24d91..64300432 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ProgressionPublicEventProcessorTest.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ProgressionPublicEventProcessorTest.java @@ -6,8 +6,8 @@ import static java.nio.charset.Charset.defaultCharset; import static java.time.LocalDate.parse; import static java.util.UUID.randomUUID; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.contains; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ProsecutionReceivedProcessorTest.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ProsecutionReceivedProcessorTest.java index 5983e911..c02865b7 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ProsecutionReceivedProcessorTest.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ProsecutionReceivedProcessorTest.java @@ -53,7 +53,7 @@ import java.time.ZonedDateTime; import java.util.List; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonReader; @@ -157,7 +157,7 @@ private List setUpTestEnvelopeListForCCCase(final CcCaseReceived ccCas final String initiateCourtProceedingsJson = readResourcesFile("initiate-court-proceedings.json"); - final JsonReader reader = Json.createReader(new StringReader(initiateCourtProceedingsJson)); + final JsonReader reader = JsonObjects.createReader(new StringReader(initiateCourtProceedingsJson)); final JsonObject jsonObject = reader.readObject(); reader.close(); when(objectToJsonObjectConverter.convert(any())).thenReturn(jsonObject); @@ -241,7 +241,7 @@ private JsonEnvelope getJsonEnvelope(final String prosecutorDefendantReference, final String initiateCourtProceedingsJson = readResourcesFile("initiate-court-proceedings.json"); - final JsonReader reader = Json.createReader(new StringReader(initiateCourtProceedingsJson)); + final JsonReader reader = JsonObjects.createReader(new StringReader(initiateCourtProceedingsJson)); final JsonObject jsonObject = reader.readObject(); reader.close(); when(objectToJsonObjectConverter.convert(any())).thenReturn(jsonObject); diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/listener/external/sjp/CaseDocumentUploadedListenerTest.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/listener/external/sjp/CaseDocumentUploadedListenerTest.java index 2baee4a0..3df4df58 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/listener/external/sjp/CaseDocumentUploadedListenerTest.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/listener/external/sjp/CaseDocumentUploadedListenerTest.java @@ -10,7 +10,7 @@ import uk.gov.justice.services.messaging.JsonEnvelope; import uk.gov.justice.services.messaging.spi.DefaultEnvelope; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -39,7 +39,7 @@ public class CaseDocumentUploadedListenerTest { public void shouldProcessRecordUploadCaseDocument() { final JsonEnvelope event = envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.command.record-upload-case-document"), - Json.createObjectBuilder().build()); + JsonObjects.createObjectBuilder().build()); testObj.handleSjpCaseDocumentUploaded(event); diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/DocumentGeneratorServiceTest.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/DocumentGeneratorServiceTest.java index f30dc880..06b12f42 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/DocumentGeneratorServiceTest.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/DocumentGeneratorServiceTest.java @@ -21,7 +21,7 @@ import java.util.UUID; import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.ArgumentMatchers.any; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/CaseReceivedHelper.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/CaseReceivedHelper.java index fce873aa..05811543 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/CaseReceivedHelper.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/CaseReceivedHelper.java @@ -7,7 +7,7 @@ import static java.util.Optional.of; import static java.util.UUID.fromString; import static java.util.UUID.randomUUID; -import static javax.json.Json.createReader; +import static uk.gov.justice.services.messaging.JsonObjects.createReader; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.IsNull.notNullValue; import static org.junit.jupiter.api.Assertions.fail; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/EnvelopeHelperTest.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/EnvelopeHelperTest.java index 2e120ec0..7f259f89 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/EnvelopeHelperTest.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/EnvelopeHelperTest.java @@ -1,7 +1,7 @@ package uk.gov.moj.cpp.prosecution.casefile.event.processor.utils; import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.mockito.Mockito.when; diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/FileUtil.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/FileUtil.java index 9cb4fc0c..24243b74 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/FileUtil.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/FileUtil.java @@ -8,7 +8,7 @@ import java.io.InputStream; import java.io.StringReader; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonReader; @@ -34,7 +34,7 @@ public static String getPayload(final String path) { public static JsonObject jsonFromString(String jsonObjectStr) { - JsonReader jsonReader = Json.createReader(new StringReader(jsonObjectStr)); + JsonReader jsonReader = JsonObjects.createReader(new StringReader(jsonObjectStr)); JsonObject object = jsonReader.readObject(); jsonReader.close(); diff --git a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/ActivitiHelper.java b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/ActivitiHelper.java index 249ecd79..938fe434 100644 --- a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/ActivitiHelper.java +++ b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/ActivitiHelper.java @@ -3,7 +3,7 @@ import static com.jayway.awaitility.Awaitility.await; import static com.jayway.jsonpath.matchers.JsonPathMatchers.withJsonPath; import static java.util.Optional.empty; -import static javax.json.Json.createReader; +import static uk.gov.justice.services.messaging.JsonObjects.createReader; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.Matchers.not; @@ -17,7 +17,7 @@ import java.util.Objects; import java.util.Optional; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonValue; import javax.ws.rs.client.Entity; @@ -88,7 +88,7 @@ private static JsonObject getTimerJobs(final String processInstanceId) { private static void executeJob(final String jobId) { final String url = ACTIVITI_BASE_PATH + "management/jobs/" + jobId; - sendPostRequest(url, Json.createObjectBuilder().add("action", "execute").build()); + sendPostRequest(url, JsonObjects.createObjectBuilder().add("action", "execute").build()); } private static JsonObject runQuery(final String url) { diff --git a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/AddMaterialHelper.java b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/AddMaterialHelper.java index f261f5fc..4a3dda1a 100644 --- a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/AddMaterialHelper.java +++ b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/AddMaterialHelper.java @@ -38,7 +38,7 @@ import java.util.UUID; import java.util.concurrent.TimeUnit; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import com.jayway.awaitility.Awaitility; @@ -81,7 +81,7 @@ public void addMaterial(final UUID caseId, final UUID submissionId, final JsonOb makePostCall(getWriteUrl(format("/cases/%s/material", caseId.toString())), "application/vnd.prosecutioncasefile.add-material+json", createObjectBuilder(addMaterialRequest) - .add(JsonEnvelope.METADATA, Json.createObjectBuilder() + .add(JsonEnvelope.METADATA, JsonObjects.createObjectBuilder() .add("id", UUID.randomUUID().toString()) .add("name", "prosecutioncasefile.add-material") .add("submissionId", submissionId.toString()) @@ -99,7 +99,7 @@ public void addMaterials(final UUID caseId, final UUID submissionId, final JsonO makePostCall(getWriteUrl(format("/cases/%s/material", caseId.toString())), "application/vnd.prosecutioncasefile.add-materials+json", createObjectBuilder(addMaterialRequest) - .add(JsonEnvelope.METADATA, Json.createObjectBuilder() + .add(JsonEnvelope.METADATA, JsonObjects.createObjectBuilder() .add("id", UUID.randomUUID().toString()) .add("name", "prosecutioncasefile.add-materials") .add("submissionId", submissionId.toString()) @@ -114,7 +114,7 @@ public void addMaterialV2(final UUID caseId, final UUID submissionId, final Json makePostCall(getWriteUrl(format("/cases/%s/material", caseId)), "application/vnd.prosecutioncasefile.add-material-v2+json", createObjectBuilder(addMaterialRequest) - .add(JsonEnvelope.METADATA, Json.createObjectBuilder() + .add(JsonEnvelope.METADATA, JsonObjects.createObjectBuilder() .add("id", UUID.randomUUID().toString()) .add("name", "prosecutioncasefile.add-material-v2") .add("submissionId", submissionId.toString()) @@ -129,7 +129,7 @@ public void addApplicationMaterialV2(final UUID applicationId, final UUID submis makePostCall(getWriteUrl(format("/applications/%s/material", applicationId.toString())), "application/vnd.prosecutioncasefile.add-application-material-v2+json", createObjectBuilder(addMaterialRequest) - .add(JsonEnvelope.METADATA, Json.createObjectBuilder() + .add(JsonEnvelope.METADATA, JsonObjects.createObjectBuilder() .add("id", UUID.randomUUID().toString()) .add("name", "prosecutioncasefile.add-application-material-v2") .add("submissionId", submissionId.toString()) @@ -144,7 +144,7 @@ public void addCpsMaterial(final UUID caseId, final UUID submissionId, final Jso makePostCall(getWriteUrl(format("/cases/%s/material", caseId.toString())), "application/vnd.prosecutioncasefile.add-cps-material+json", createObjectBuilder(addCpsMaterialRequest) - .add(JsonEnvelope.METADATA, Json.createObjectBuilder() + .add(JsonEnvelope.METADATA, JsonObjects.createObjectBuilder() .add("id", UUID.randomUUID().toString()) .add("name", "prosecutioncasefile.add-cps-material") .add("submissionId", submissionId.toString()) diff --git a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/FileUtil.java b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/FileUtil.java index 17e44c09..ee443fc0 100644 --- a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/FileUtil.java +++ b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/FileUtil.java @@ -2,7 +2,7 @@ import static java.lang.ClassLoader.getSystemResourceAsStream; import static java.lang.String.format; -import static javax.json.Json.createReader; +import static uk.gov.justice.services.messaging.JsonObjects.createReader; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsNull.notNullValue; diff --git a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/InitiateCCProsecutionHelper.java b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/InitiateCCProsecutionHelper.java index bf208e10..e1e157fb 100644 --- a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/InitiateCCProsecutionHelper.java +++ b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/InitiateCCProsecutionHelper.java @@ -13,7 +13,7 @@ import static java.util.concurrent.TimeUnit.SECONDS; import static java.util.stream.Collectors.joining; import static java.util.stream.Collectors.toList; -import static javax.json.Json.createReader; +import static uk.gov.justice.services.messaging.JsonObjects.createReader; import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric; import static org.hamcrest.CoreMatchers.allOf; import static org.hamcrest.MatcherAssert.assertThat; diff --git a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/SubmitCCApplicationHelper.java b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/SubmitCCApplicationHelper.java index 078644fe..32a3689a 100644 --- a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/SubmitCCApplicationHelper.java +++ b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/SubmitCCApplicationHelper.java @@ -7,7 +7,7 @@ import static com.jayway.awaitility.Awaitility.await; import static java.util.concurrent.TimeUnit.MILLISECONDS; import static java.util.concurrent.TimeUnit.SECONDS; -import static javax.json.Json.createReader; +import static uk.gov.justice.services.messaging.JsonObjects.createReader; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; import static org.jboss.resteasy.util.HttpHeaderNames.ACCEPT; diff --git a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/AddApplicationMaterialIT.java b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/AddApplicationMaterialIT.java index eef8a836..c5cb4222 100644 --- a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/AddApplicationMaterialIT.java +++ b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/AddApplicationMaterialIT.java @@ -7,7 +7,7 @@ import static com.jayway.jsonpath.matchers.JsonPathMatchers.withJsonPath; import static com.jayway.jsonpath.matchers.JsonPathMatchers.withoutJsonPath; import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; @@ -47,7 +47,7 @@ import java.util.Random; import java.util.UUID; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonReader; @@ -124,7 +124,7 @@ public void shouldUploadToMaterialContextAndSendToProgressionWhenMaterialAddedEv addMaterialHelper.verifyAddCourtDocumentCalled(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = Json.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } diff --git a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/AddMaterialIT.java b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/AddMaterialIT.java index 393a00a5..92b28b43 100644 --- a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/AddMaterialIT.java +++ b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/AddMaterialIT.java @@ -9,7 +9,7 @@ import static com.jayway.jsonpath.matchers.JsonPathMatchers.isJson; import static com.jayway.jsonpath.matchers.JsonPathMatchers.withJsonPath; import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; @@ -77,7 +77,7 @@ import java.util.UUID; import java.util.concurrent.TimeUnit; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; import javax.json.JsonReader; @@ -180,7 +180,7 @@ public void shouldUploadToMaterialContextAndSendToProgressionWhenMaterialAddedEv addMaterialHelper.verifyAddCourtDocumentCalled(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = Json.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } @@ -277,7 +277,7 @@ public void shouldUploadToMaterialContextAndSendToProgressionWhenMaterialAddedEv addMaterialHelper.verifyAddCourtDocumentCalled(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = Json.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } @@ -862,7 +862,7 @@ public void shouldUploadDocumentToCCCaseWhenSJPCaseIsReferredForCourtHearing() t addMaterialHelper.verifyAddCourtDocumentCalled(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = Json.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } @@ -1130,7 +1130,7 @@ public void shouldUploadToMaterialContextViaAddCpsCommand() throws Exception { verifyInMessagingQueueForDefendantIDPCUpdated(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = Json.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } @@ -1520,7 +1520,7 @@ public void shouldUploadToMaterialContextAndSendToProgressionWhenMaterialAddedEv addMaterialHelper.verifyAddCourtDocumentCalled(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = Json.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } @@ -1623,7 +1623,7 @@ public void shouldUploadToMaterialContextAndSendToProgressionWhenMaterialAddedEv addMaterialHelper.verifyAddCourtDocumentCalled(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = Json.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } @@ -1713,7 +1713,7 @@ public void shouldUploadToMaterialContextAndSendToProgressionWhenMaterialAddedEv addMaterialHelper.verifyAddCourtDocumentCalled(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = Json.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } @@ -2108,7 +2108,7 @@ private void verifyUploadToMaterialAndSendToProgressionForCaseLevelDocument(fina addMaterialHelper.verifyAddCourtDocumentCalled(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = Json.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } diff --git a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/InitiateGroupProsecutionIT.java b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/InitiateGroupProsecutionIT.java index bd0eddac..cadd1ef6 100644 --- a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/InitiateGroupProsecutionIT.java +++ b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/InitiateGroupProsecutionIT.java @@ -11,8 +11,8 @@ import static java.util.Arrays.asList; import static java.util.UUID.randomUUID; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; import static uk.gov.justice.services.messaging.JsonEnvelope.metadataBuilder; diff --git a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/InitiateSjpProsecutionIT.java b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/InitiateSjpProsecutionIT.java index 54130d56..5ec64810 100644 --- a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/InitiateSjpProsecutionIT.java +++ b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/InitiateSjpProsecutionIT.java @@ -77,7 +77,7 @@ import java.util.UUID; import java.util.stream.Stream; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonArray; import javax.json.JsonArrayBuilder; import javax.json.JsonObject; @@ -641,7 +641,7 @@ public void updateOffenceCodeForSjpProsecution() { assertThat(prosecutionReceivedEvent.get().metadata().name(), equalTo(EVENT_SELECTOR_SJP_PROSECUTION_RECEIVED)); - final JsonObject updateOffenceCodePayload = Json.createObjectBuilder() + final JsonObject updateOffenceCodePayload = JsonObjects.createObjectBuilder() .add("offenceCode", offenceCode2) .build(); @@ -1121,18 +1121,18 @@ public void shouldRaiseProsecutionCaseUnsupportedWhenMultipleDefendantsForSPI() } private JsonArray getProblem(final Problem... problems) { - final JsonArrayBuilder arrayBuilder = Json.createArrayBuilder(); + final JsonArrayBuilder arrayBuilder = JsonObjects.createArrayBuilder(); for (final Problem problem : problems) { - final JsonArrayBuilder valuesBuilder = Json.createArrayBuilder(); + final JsonArrayBuilder valuesBuilder = JsonObjects.createArrayBuilder(); for (final ProblemValue problemValue : problem.getValues()) { - JsonObjectBuilder problemValueJson = Json.createObjectBuilder(); + JsonObjectBuilder problemValueJson = JsonObjects.createObjectBuilder(); if (problemValue.getId() != null) { problemValueJson.add("id", problemValue.getId()); } problemValueJson.add("key", problemValue.getKey()).add("value", problemValue.getValue()); valuesBuilder.add(problemValueJson); } - arrayBuilder.add(Json.createObjectBuilder().add("code", problem.getCode()).add("values", valuesBuilder)); + arrayBuilder.add(JsonObjects.createObjectBuilder().add("code", problem.getCode()).add("values", valuesBuilder)); } return arrayBuilder.build(); } diff --git a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/ProcessCasesCreatedIT.java b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/ProcessCasesCreatedIT.java index 43b953c9..fbe0bf75 100644 --- a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/ProcessCasesCreatedIT.java +++ b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/ProcessCasesCreatedIT.java @@ -1,7 +1,7 @@ package uk.gov.moj.cpp.prosecution.casefile.it; import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.integrationtest.utils.jms.JmsMessageProducerClientProvider.newPrivateJmsMessageProducerClientProvider; import static uk.gov.justice.services.messaging.Envelope.metadataBuilder; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; diff --git a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/stub/IdMapperStub.java b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/stub/IdMapperStub.java index 823ceda0..b45a745d 100644 --- a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/stub/IdMapperStub.java +++ b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/stub/IdMapperStub.java @@ -12,7 +12,7 @@ import java.time.ZonedDateTime; import java.util.UUID; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.ws.rs.core.Response; import org.apache.http.HttpHeaders; @@ -21,7 +21,7 @@ public class IdMapperStub { public static void stubGetFromIdMapper(final String sourceType, final String sourceId, final String targetType, final String targetId) { - final String responseBody = Json.createObjectBuilder() + final String responseBody = JsonObjects.createObjectBuilder() .add("mappingId", UUID.randomUUID().toString()) .add("sourceId", sourceId) .add("sourceType", sourceType) @@ -51,7 +51,7 @@ public static void stubForIdMapper(final Response.Status status, final UUID targ .withHeader(HttpHeaders.CONTENT_TYPE, equalTo(mime)) .willReturn(aResponse() .withStatus(OK.getStatusCode()) - .withBody(Json.createObjectBuilder() + .withBody(JsonObjects.createObjectBuilder() .add("id", UUID.randomUUID().toString()) .build().toString()) ) diff --git a/prosecutioncasefile-progression-service/src/main/java/uk/gov/moj/cpp/prosecution/casefile/service/ProgressionServiceImpl.java b/prosecutioncasefile-progression-service/src/main/java/uk/gov/moj/cpp/prosecution/casefile/service/ProgressionServiceImpl.java index 358a6360..858a9b2d 100644 --- a/prosecutioncasefile-progression-service/src/main/java/uk/gov/moj/cpp/prosecution/casefile/service/ProgressionServiceImpl.java +++ b/prosecutioncasefile-progression-service/src/main/java/uk/gov/moj/cpp/prosecution/casefile/service/ProgressionServiceImpl.java @@ -1,7 +1,7 @@ package uk.gov.moj.cpp.prosecution.casefile.service; import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.annotation.Component.COMMAND_API; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; import static uk.gov.justice.services.messaging.JsonEnvelope.metadataBuilder; diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/CaseForCitizenService.java b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/CaseForCitizenService.java index b3c30a50..5354d1b4 100644 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/CaseForCitizenService.java +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/CaseForCitizenService.java @@ -9,7 +9,7 @@ import static java.util.Optional.empty; import static java.util.Optional.of; import static java.util.Optional.ofNullable; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.moj.cpp.prosecution.casefile.query.api.service.DefendantType.LEGAL_ENTITY; import static uk.gov.moj.cpp.prosecution.casefile.query.api.service.DefendantType.PERSON; import static uk.gov.moj.cpp.prosecution.casefile.query.api.service.SjpService.INITIATION_CODE; diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/ProgressionService.java b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/ProgressionService.java index 2b070661..045df8a7 100644 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/ProgressionService.java +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/ProgressionService.java @@ -23,7 +23,7 @@ import static java.util.Objects.nonNull; import static java.util.Optional.empty; import static java.util.Optional.of; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.enveloper.Enveloper.envelop; public class ProgressionService { diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/ReferenceOffencesDataService.java b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/ReferenceOffencesDataService.java index e8031d3a..aff6a20c 100644 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/ReferenceOffencesDataService.java +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/ReferenceOffencesDataService.java @@ -7,7 +7,7 @@ import javax.json.JsonObject; import javax.json.JsonValue; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.enveloper.Enveloper.envelop; public class ReferenceOffencesDataService { diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/SjpService.java b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/SjpService.java index b84e4c54..1258f1a4 100644 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/SjpService.java +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/SjpService.java @@ -5,7 +5,7 @@ import javax.json.JsonObject; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.enveloper.Enveloper.envelop; public class SjpService { diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/CasefileQueryApiTest.java b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/CasefileQueryApiTest.java index 8b878af1..b5f14422 100644 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/CasefileQueryApiTest.java +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/CasefileQueryApiTest.java @@ -1,7 +1,7 @@ package uk.gov.moj.cpp.prosecution.casefile.query.api; import static java.util.Optional.ofNullable; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/CaseDetailConverterTest.java b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/CaseDetailConverterTest.java index f1a3baac..a4dde541 100644 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/CaseDetailConverterTest.java +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/CaseDetailConverterTest.java @@ -21,7 +21,7 @@ import java.util.List; import java.util.UUID; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import org.junit.jupiter.api.Test; @@ -55,7 +55,7 @@ public class CaseDetailConverterTest { private JsonObject buildOffenceReferenceData() { - return Json.createObjectBuilder() + return JsonObjects.createObjectBuilder() .add("modeOfTrial", "SNONIMP1") .build(); } diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/CaseForCitizenServiceTest.java b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/CaseForCitizenServiceTest.java index c69e5421..df8300bf 100644 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/CaseForCitizenServiceTest.java +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/CaseForCitizenServiceTest.java @@ -5,8 +5,8 @@ import static java.util.Collections.singletonList; import static java.util.Optional.empty; import static java.util.UUID.randomUUID; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.nullValue; diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/ProgressionServiceTest.java b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/ProgressionServiceTest.java index 09432425..fdeebf27 100644 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/ProgressionServiceTest.java +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/ProgressionServiceTest.java @@ -3,8 +3,8 @@ import static java.util.Collections.singletonList; import static java.util.UUID.fromString; import static java.util.UUID.randomUUID; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/SjpServiceTest.java b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/SjpServiceTest.java index 2e18b548..8ad42af1 100644 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/SjpServiceTest.java +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/SjpServiceTest.java @@ -1,7 +1,7 @@ package uk.gov.moj.cpp.prosecution.casefile.query.api.service; import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/vo/FileUtil.java b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/vo/FileUtil.java index 539b67f0..19db841f 100644 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/vo/FileUtil.java +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/vo/FileUtil.java @@ -2,7 +2,7 @@ import static java.lang.ClassLoader.getSystemResourceAsStream; import static java.lang.String.format; -import static javax.json.Json.createReader; +import static uk.gov.justice.services.messaging.JsonObjects.createReader; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsNull.notNullValue; diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/utils/OffenceHelperTest.java b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/utils/OffenceHelperTest.java index 7246cdd3..80287b6d 100644 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/utils/OffenceHelperTest.java +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/utils/OffenceHelperTest.java @@ -1,6 +1,6 @@ package uk.gov.moj.cpp.prosecution.casefile.query.api.utils; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-view/src/main/java/uk/gov/moj/cpp/prosecutioncasefile/query/view/ProsecutionCasefileQueryView.java b/prosecutioncasefile-query/prosecutioncasefile-query-view/src/main/java/uk/gov/moj/cpp/prosecutioncasefile/query/view/ProsecutionCasefileQueryView.java index eee028f4..a4d5cb53 100644 --- a/prosecutioncasefile-query/prosecutioncasefile-query-view/src/main/java/uk/gov/moj/cpp/prosecutioncasefile/query/view/ProsecutionCasefileQueryView.java +++ b/prosecutioncasefile-query/prosecutioncasefile-query-view/src/main/java/uk/gov/moj/cpp/prosecutioncasefile/query/view/ProsecutionCasefileQueryView.java @@ -1,7 +1,7 @@ package uk.gov.moj.cpp.prosecutioncasefile.query.view; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.apache.commons.collections.CollectionUtils.isEmpty; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; import static uk.gov.justice.services.messaging.JsonEnvelope.metadataFrom; diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-view/src/main/java/uk/gov/moj/cpp/prosecutioncasefile/query/view/service/BusinessErrorDetailsService.java b/prosecutioncasefile-query/prosecutioncasefile-query-view/src/main/java/uk/gov/moj/cpp/prosecutioncasefile/query/view/service/BusinessErrorDetailsService.java index 8e20ae47..9f6efc9c 100644 --- a/prosecutioncasefile-query/prosecutioncasefile-query-view/src/main/java/uk/gov/moj/cpp/prosecutioncasefile/query/view/service/BusinessErrorDetailsService.java +++ b/prosecutioncasefile-query/prosecutioncasefile-query-view/src/main/java/uk/gov/moj/cpp/prosecutioncasefile/query/view/service/BusinessErrorDetailsService.java @@ -34,7 +34,7 @@ import java.util.stream.Collectors; import javax.inject.Inject; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonReader; @SuppressWarnings({"squid:S1612"}) @@ -103,7 +103,7 @@ private ErrorCaseDetails getErrorCaseDetails(final UUID caseId) { final List errorCaseDetails = businessValidationErrorCaseDetailsRepository.findByCaseId(caseId); ErrorCaseDetails errorCaseDetailsJson = null; if (errorCaseDetails != null && !errorCaseDetails.isEmpty()) { - try (JsonReader jsonReader = Json.createReader(new StringReader(errorCaseDetails.get(0).getCaseDetails()))) { + try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(errorCaseDetails.get(0).getCaseDetails()))) { errorCaseDetailsJson = new ErrorCaseDetails(jsonReader.readObject().getJsonArray("defendants")); } } diff --git a/prosecutioncasefile-refdata/src/main/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceImpl.java b/prosecutioncasefile-refdata/src/main/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceImpl.java index 0dc14d87..029e857e 100644 --- a/prosecutioncasefile-refdata/src/main/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceImpl.java +++ b/prosecutioncasefile-refdata/src/main/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceImpl.java @@ -5,7 +5,7 @@ import static java.util.Optional.of; import static java.util.Optional.ofNullable; import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.annotation.Component.COMMAND_API; import static uk.gov.justice.services.messaging.Envelope.metadataFrom; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; diff --git a/prosecutioncasefile-refdata/src/test/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceTest.java b/prosecutioncasefile-refdata/src/test/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceTest.java index 4fae501c..25aa0848 100644 --- a/prosecutioncasefile-refdata/src/test/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceTest.java +++ b/prosecutioncasefile-refdata/src/test/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceTest.java @@ -2,8 +2,8 @@ import static com.jayway.jsonassert.JsonAssert.with; import static java.util.UUID.randomUUID; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.nullValue; @@ -75,7 +75,7 @@ import java.util.Optional; import java.util.UUID; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; @@ -477,17 +477,17 @@ public void shouldReturnInitiationCodesRefData() { } private JsonObject getMockReferenceDataInitiationCodes() { - return Json.createObjectBuilder().add("initiationTypes", - Json.createArrayBuilder() + return JsonObjects.createObjectBuilder().add("initiationTypes", + JsonObjects.createArrayBuilder() .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add(SEQUENCE, 10) .add("code", "AA") .add(VALID_FROM, "2019-03-11") .build()) .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add(SEQUENCE, 20) .add("code", "BB") @@ -533,7 +533,7 @@ public void shouldReturnNspProsecutorsRefData() { } private JsonObject getMockReferenceDataProsecutors() { - return Json.createObjectBuilder() + return JsonObjects.createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add("sequenceNumber", 10) .add("fullName", "fullName") diff --git a/prosecutioncasefile-refdata/src/test/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceTestHelper.java b/prosecutioncasefile-refdata/src/test/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceTestHelper.java index 7df689a7..db9cda0b 100644 --- a/prosecutioncasefile-refdata/src/test/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceTestHelper.java +++ b/prosecutioncasefile-refdata/src/test/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceTestHelper.java @@ -2,8 +2,8 @@ import static java.util.Optional.ofNullable; import static java.util.UUID.randomUUID; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; @@ -17,7 +17,7 @@ import java.util.UUID; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonArrayBuilder; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; @@ -84,10 +84,10 @@ public class ReferenceDataQueryServiceTestHelper { public static JsonObject getMockReferenceDataCountryNationalities() { - return Json.createObjectBuilder().add("countryNationality", - Json.createArrayBuilder() + return JsonObjects.createObjectBuilder().add("countryNationality", + JsonObjects.createArrayBuilder() .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "22ef7a73-df50-4349-8c72-ca3b9ace6363") .add("cjseCode", 0) .add("isoCode", "GBR") @@ -96,7 +96,7 @@ public static JsonObject getMockReferenceDataCountryNationalities() { .add("nationality", "British") .build()) .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "05ad4861-7927-437e-8df1-32b4128e369f") .add("cjseCode", 0) .add("isoCode", "FRA") @@ -105,7 +105,7 @@ public static JsonObject getMockReferenceDataCountryNationalities() { .add("nationality", "French") .build()) .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "ca2438fd-2eba-4c1b-967d-3fa7c46f24d4") .add("cjseCode", 3) .add("isoCode", "ITA") @@ -119,10 +119,10 @@ public static JsonObject getMockReferenceDataCountryNationalities() { } public static JsonObject getMockReferenceDataOffenceDateCodes() { - return Json.createObjectBuilder().add("offenceDateCodes", - Json.createArrayBuilder() + return JsonObjects.createObjectBuilder().add("offenceDateCodes", + JsonObjects.createArrayBuilder() .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add("seqNum", 10) .add("dateCode", "1") @@ -130,7 +130,7 @@ public static JsonObject getMockReferenceDataOffenceDateCodes() { .add(VALID_FROM, "2019-04-01") .build()) .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add("seqNum", 20) .add("dateCode", "2") @@ -142,10 +142,10 @@ public static JsonObject getMockReferenceDataOffenceDateCodes() { } public static JsonObject getMockReferenceDataOffenderCodes() { - return Json.createObjectBuilder().add("offenderCodes", - Json.createArrayBuilder() + return JsonObjects.createObjectBuilder().add("offenderCodes", + JsonObjects.createArrayBuilder() .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add("seqNo", 10) .add("code", "1") @@ -153,7 +153,7 @@ public static JsonObject getMockReferenceDataOffenderCodes() { .add(VALID_FROM, "2019-04-01") .build()) .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add("seqNo", 20) .add("code", "2") @@ -166,10 +166,10 @@ public static JsonObject getMockReferenceDataOffenderCodes() { public static JsonObject getMockReferenceDataSummonsCodes() { - return Json.createObjectBuilder().add("summonsCodes", - Json.createArrayBuilder() + return JsonObjects.createObjectBuilder().add("summonsCodes", + JsonObjects.createArrayBuilder() .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add(SEQ_NO, 10) .add("summonsCode", "A") @@ -177,7 +177,7 @@ public static JsonObject getMockReferenceDataSummonsCodes() { .add(VALID_FROM, "2019-03-01") .build()) .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add(SEQ_NO, 20) .add("summonsCode", "B") @@ -191,29 +191,29 @@ public static JsonObject getMockReferenceDataSummonsCodes() { public static JsonObject getMockReferenceDataDocumentsTypeAccess() { - JsonArrayBuilder autorArray = Json.createArrayBuilder(); - JsonObjectBuilder autorObject = Json.createObjectBuilder(); + JsonArrayBuilder autorArray = JsonObjects.createArrayBuilder(); + JsonObjectBuilder autorObject = JsonObjects.createObjectBuilder(); - JsonObjectBuilder rbacObject = Json.createObjectBuilder(); + JsonObjectBuilder rbacObject = JsonObjects.createObjectBuilder(); - JsonObjectBuilder readUserGroupsCppGroupObject = Json.createObjectBuilder(); + JsonObjectBuilder readUserGroupsCppGroupObject = JsonObjects.createObjectBuilder(); readUserGroupsCppGroupObject .add("id","ff9fb2c8-2738-4d77-87e5-56b5781b4113") .add("groupName", "Legal Advisors"); - JsonObjectBuilder uploadUserGroupsCppGroupObject = Json.createObjectBuilder(); + JsonObjectBuilder uploadUserGroupsCppGroupObject = JsonObjects.createObjectBuilder(); uploadUserGroupsCppGroupObject .add("id","ff9fb2c8-2738-4d77-87e5-56b5781b4113") .add("groupName", "Court Admin"); - JsonObjectBuilder downloadUserCppGroupObject = Json.createObjectBuilder(); + JsonObjectBuilder downloadUserCppGroupObject = JsonObjects.createObjectBuilder(); downloadUserCppGroupObject .add("id","ff9fb2c8-2738-4d77-87e5-56b5781b4113") .add("groupName", "Crown Court Clerk"); - JsonObjectBuilder deleteUserGroupsCppGroupObject = Json.createObjectBuilder(); + JsonObjectBuilder deleteUserGroupsCppGroupObject = JsonObjects.createObjectBuilder(); deleteUserGroupsCppGroupObject .add("id","ff9fb2c8-2738-4d77-87e5-56b5781b4113") .add("groupName", "Listing Officer"); @@ -222,45 +222,45 @@ public static JsonObject getMockReferenceDataDocumentsTypeAccess() { - JsonObjectBuilder readUserGroupsInnerObject = Json.createObjectBuilder(); + JsonObjectBuilder readUserGroupsInnerObject = JsonObjects.createObjectBuilder(); readUserGroupsInnerObject .add("cppGroup",readUserGroupsCppGroupObject) .add("validFrom", "1983-05-13") .add("validTo", "2022-05-13"); - JsonObjectBuilder uploadUserGroupsInnerObject = Json.createObjectBuilder(); + JsonObjectBuilder uploadUserGroupsInnerObject = JsonObjects.createObjectBuilder(); uploadUserGroupsInnerObject .add("cppGroup",uploadUserGroupsCppGroupObject) .add("validFrom", "1983-05-13") .add("validTo", "2022-05-13"); - JsonObjectBuilder downloadUserInnerObject = Json.createObjectBuilder(); + JsonObjectBuilder downloadUserInnerObject = JsonObjects.createObjectBuilder(); downloadUserInnerObject .add("cppGroup",downloadUserCppGroupObject) .add("validFrom", "1983-05-13") .add("validTo", "2022-05-13"); - JsonObjectBuilder deleteUserGroupsInnerObject = Json.createObjectBuilder(); + JsonObjectBuilder deleteUserGroupsInnerObject = JsonObjects.createObjectBuilder(); deleteUserGroupsInnerObject .add("cppGroup",deleteUserGroupsCppGroupObject) .add("validFrom", "1983-05-13") .add("validTo", "2022-05-13"); - JsonArrayBuilder readUserGroupsArray = Json.createArrayBuilder(); + JsonArrayBuilder readUserGroupsArray = JsonObjects.createArrayBuilder(); readUserGroupsArray.add(readUserGroupsInnerObject); - JsonArrayBuilder uploadUserGroupsArray = Json.createArrayBuilder(); + JsonArrayBuilder uploadUserGroupsArray = JsonObjects.createArrayBuilder(); uploadUserGroupsArray.add(uploadUserGroupsInnerObject); - JsonArrayBuilder downloadUserArray = Json.createArrayBuilder(); + JsonArrayBuilder downloadUserArray = JsonObjects.createArrayBuilder(); downloadUserArray.add(downloadUserInnerObject); - JsonArrayBuilder deleteUserGroupsArray = Json.createArrayBuilder(); + JsonArrayBuilder deleteUserGroupsArray = JsonObjects.createArrayBuilder(); deleteUserGroupsArray.add(deleteUserGroupsInnerObject); - JsonObjectBuilder readUserGroupsAutorObject = Json.createObjectBuilder(); + JsonObjectBuilder readUserGroupsAutorObject = JsonObjects.createObjectBuilder(); readUserGroupsAutorObject.add("readUserGroups",readUserGroupsArray); readUserGroupsAutorObject.add("uploadUserGroups",uploadUserGroupsArray); readUserGroupsAutorObject.add("downloadUserGroups",downloadUserArray); @@ -276,7 +276,7 @@ public static JsonObject getMockReferenceDataDocumentsTypeAccess() { autorArray.add(autorObject); - return Json.createObjectBuilder().add("documentsTypeAccess", autorArray).build(); + return JsonObjects.createObjectBuilder().add("documentsTypeAccess", autorArray).build(); @@ -286,24 +286,24 @@ public static JsonObject getMockReferenceDataDocumentsTypeAccess() { public static JsonObject getMockReferenceDataAlcoholLevelMethods() { - return Json.createObjectBuilder().add("alcoholLevelMethods", - Json.createArrayBuilder() + return JsonObjects.createObjectBuilder().add("alcoholLevelMethods", + JsonObjects.createArrayBuilder() .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "c4ca4238-a0b9-3382-8dcc-509a6f75849b") .add(SEQ_NO, 1) .add(METHOD_CODE, "A") .add(METHOD_DESCRIPTION, "Blood") .build()) .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "c81e728d-9d4c-3f63-af06-7f89cc14862c") .add(SEQ_NO, 2) .add(METHOD_CODE, "B") .add(METHOD_DESCRIPTION, "Breath") .build()) .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "eccbc87e-4b5c-32fe-a830-8fd9f2a7baf3") .add(SEQ_NO, 3) .add(METHOD_CODE, "C") @@ -346,10 +346,10 @@ public static JsonObject getMockReferenceDataParentBundleSectionReferenceData(fi public static JsonObject getMockReferenceDataInitiationTypeJsonObject() { final String validityDate = "2017-08-01"; - return Json.createObjectBuilder().add("initiationTypes", - Json.createArrayBuilder() + return JsonObjects.createObjectBuilder().add("initiationTypes", + JsonObjects.createArrayBuilder() .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add(ID, "7e2f843e-d639-40b3-8611-8015f3a18957") .add(SEQUENCE, 1) .add(DESCRIPTION, "Charge") @@ -358,7 +358,7 @@ public static JsonObject getMockReferenceDataInitiationTypeJsonObject() { .add(VALID_TO, validityDate) .build()) .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add(ID, "8e2f843e-d639-40b3-8611-8015f3a18958") .add(SEQUENCE, 2) .add(DESCRIPTION, "Summons") @@ -517,16 +517,16 @@ public static Envelope buildOrganisationUnitWithCourtroom() { } public static JsonObject getMockReferenceDataOffenceData() { - return Json.createObjectBuilder().add("offences", - Json.createArrayBuilder() + return JsonObjects.createObjectBuilder().add("offences", + JsonObjects.createArrayBuilder() .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add("cjsOffenceCode", "cjsOffenceCode") .add("fullName", "fullName") .build()) .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add("cjsOffenceCode", "cjsOffenceCode2") .build()) @@ -535,17 +535,17 @@ public static JsonObject getMockReferenceDataOffenceData() { } public static JsonObject getMockReferenceDataLicenceCode() { - return Json.createObjectBuilder().add("licenceCodes", - Json.createArrayBuilder() + return JsonObjects.createObjectBuilder().add("licenceCodes", + JsonObjects.createArrayBuilder() .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add(SEQUENCE, 10) .add("licenceCode", "AA") .add(VALID_FROM, "2019-03-11") .build()) .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add(SEQUENCE, 20) .add("licenceCode", "BB") @@ -556,10 +556,10 @@ public static JsonObject getMockReferenceDataLicenceCode() { } public static JsonObject getMockReferenceDataPoliceForces() { - return Json.createObjectBuilder().add("policeForces", - Json.createArrayBuilder() + return JsonObjects.createObjectBuilder().add("policeForces", + JsonObjects.createArrayBuilder() .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "419a13f4-f1c6-3e1e-b0f6-f1c162d4c41a") .add(SEQUENCE, 2) .add("policeForceCode", "1") @@ -568,7 +568,7 @@ public static JsonObject getMockReferenceDataPoliceForces() { .add("oucodeL2Code","01") .build()) .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "47bb2c5d-cde9-3c13-9ae3-b3f5be9177e7") .add(SEQUENCE, 2) .add("policeForceCode", "2") @@ -580,17 +580,17 @@ public static JsonObject getMockReferenceDataPoliceForces() { } public static JsonObject getMockReferenceDataObservedEthnicity() { - return Json.createObjectBuilder().add("observedEthnicities", - Json.createArrayBuilder() + return JsonObjects.createObjectBuilder().add("observedEthnicities", + JsonObjects.createArrayBuilder() .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add(SEQ_NO, 10) .add("ethnicityCode", "AA") .add(VALID_FROM, "2019-03-11") .build()) .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add(SEQ_NO, 20) .add("ethnicityCode", "BB") @@ -602,17 +602,17 @@ public static JsonObject getMockReferenceDataObservedEthnicity() { public static JsonObject getMockReferenceDataCustodyStatus() { - return Json.createObjectBuilder().add("custodyStatuses", - Json.createArrayBuilder() + return JsonObjects.createObjectBuilder().add("custodyStatuses", + JsonObjects.createArrayBuilder() .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add(SEQUENCE, 10) .add("statusCode", "AA") .add(VALID_FROM, "2019-03-11") .build()) .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add(SEQUENCE, 20) .add("statusCode", "BB") @@ -623,17 +623,17 @@ public static JsonObject getMockReferenceDataCustodyStatus() { } public static JsonObject getMockReferenceDataPoliceRanks() { - return Json.createObjectBuilder().add("policeRanks", - Json.createArrayBuilder() + return JsonObjects.createObjectBuilder().add("policeRanks", + JsonObjects.createArrayBuilder() .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add(SEQUENCE, 10) .add("rankCode", "AA") .add(VALID_FROM, "2019-03-11") .build()) .add( - Json.createObjectBuilder() + JsonObjects.createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add(SEQUENCE, 20) .add("rankCode", "BB") diff --git a/prosecutioncasefile-validation-rules/src/main/java/uk/gov/moj/cpp/prosecution/casefile/validation/CpsFormValidator.java b/prosecutioncasefile-validation-rules/src/main/java/uk/gov/moj/cpp/prosecution/casefile/validation/CpsFormValidator.java index 91b9ee39..8f2b81a3 100644 --- a/prosecutioncasefile-validation-rules/src/main/java/uk/gov/moj/cpp/prosecution/casefile/validation/CpsFormValidator.java +++ b/prosecutioncasefile-validation-rules/src/main/java/uk/gov/moj/cpp/prosecution/casefile/validation/CpsFormValidator.java @@ -6,8 +6,8 @@ import static java.util.UUID.fromString; import static java.util.stream.Collectors.toList; import static java.util.stream.StreamSupport.stream; -import static javax.json.Json.createArrayBuilder; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.apache.commons.collections.CollectionUtils.isNotEmpty; import static uk.gov.moj.cpp.prosecution.casefile.domain.FormValidationResult.formValidationResult; import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.MatchedDefendant.matchedDefendant; @@ -101,7 +101,7 @@ import javax.enterprise.inject.Instance; import javax.inject.Inject; -import javax.json.Json; +import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonArray; import javax.json.JsonArrayBuilder; import javax.json.JsonObject; @@ -170,7 +170,7 @@ public FormValidationResult validateAndRebuildingFormDataPtph(final JsonObject p } final JsonObjectBuilder newBcmFormData = createObjectBuilder(); - final JsonArrayBuilder newBcmFormDefendantsArrayBuilder = Json.createArrayBuilder(); + final JsonArrayBuilder newBcmFormDefendantsArrayBuilder = JsonObjects.createArrayBuilder(); final Set finalMatchedDefendantSet = matchedDefendantsSet; processReceivedCpsServePtph @@ -182,7 +182,7 @@ public FormValidationResult validateAndRebuildingFormDataPtph(final JsonObject p .map(defendantFromEventPayload -> buildPtphDefendantWithDefendantId(objectToJsonObjectConverter, finalMatchedDefendantSet, defendantFromEventPayload, processReceivedCpsServePtph)) .forEach(newBcmFormDefendantsArrayBuilder::add); - final JsonArrayBuilder newFormDefendantArrayBuilder = Json.createArrayBuilder(); + final JsonArrayBuilder newFormDefendantArrayBuilder = JsonObjects.createArrayBuilder(); matchedDefendantsSet .stream() .map(this::buildFormDefendant) @@ -192,7 +192,7 @@ public FormValidationResult validateAndRebuildingFormDataPtph(final JsonObject p .withFormData(newBcmFormData .add(PTPH_DEFENDANTS, newBcmFormDefendantsArrayBuilder.build()) .build()) - .withFormDefendants(Json + .withFormDefendants(JsonObjects .createObjectBuilder() .add(FORM_DEFENDANTS, newFormDefendantArrayBuilder.build()) .build()) @@ -218,7 +218,7 @@ private void matchDefendant(final JsonObject prosecutionCase, final JsonArray de .getValuesAs(JsonObject.class); final boolean areAllDefendantsHaveCpsIds = defendantIds.size() == caseDefendantList.size(); - final JsonObject cpsDefendantIdRuleInput = Json.createObjectBuilder() + final JsonObject cpsDefendantIdRuleInput = JsonObjects.createObjectBuilder() .add("cpsDefendantIdList", defendantIds) .add("areAllDefendantsHaveCpsIds", areAllDefendantsHaveCpsIds) .build(); @@ -226,7 +226,7 @@ private void matchDefendant(final JsonObject prosecutionCase, final JsonArray de } if (matchedDefendant.getIsContinueMatching()) { - final JsonObject cpsDefendantDetailRuleInput = Json.createObjectBuilder() + final JsonObject cpsDefendantDetailRuleInput = JsonObjects.createObjectBuilder() .add("cpsDefendantIdList", defendantIds) .add("prosecutionCase", prosecutionCase) .build(); @@ -357,7 +357,7 @@ public FormValidationResult validateAndRebuildingFormDataBcm(final JsonObject pr .build(); } final JsonObjectBuilder newBcmFormData = createObjectBuilder(); - final JsonArrayBuilder newBcmFormDefendantsArrayBuilder = Json.createArrayBuilder(); + final JsonArrayBuilder newBcmFormDefendantsArrayBuilder = JsonObjects.createArrayBuilder(); final Set finalMatchedDefendantSet = matchedDefendantsSet; processReceivedCpsServeBcm @@ -369,7 +369,7 @@ public FormValidationResult validateAndRebuildingFormDataBcm(final JsonObject pr .map(defendantFromEventPayload -> buildBcmDefendantWithDefendantId(finalMatchedDefendantSet, validOffences, defendantFromEventPayload, processReceivedCpsServeBcm)) .forEach(newBcmFormDefendantsArrayBuilder::add); - final JsonArrayBuilder newFormDefendantArrayBuilder = Json.createArrayBuilder(); + final JsonArrayBuilder newFormDefendantArrayBuilder = JsonObjects.createArrayBuilder(); matchedDefendantsSet .stream() .map(this::buildFormDefendant) @@ -379,7 +379,7 @@ public FormValidationResult validateAndRebuildingFormDataBcm(final JsonObject pr .withFormData(newBcmFormData .add(BCM_DEFENDANTS, newBcmFormDefendantsArrayBuilder.build()) .build()) - .withFormDefendants(Json + .withFormDefendants(JsonObjects .createObjectBuilder() .add(FORM_DEFENDANTS, newFormDefendantArrayBuilder.build()) .build()) @@ -619,7 +619,7 @@ public FormValidationResult validateAndRebuildingFormData(final JsonObject proce } final JsonObjectBuilder newPetFormData = createObjectBuilder(); - final JsonArrayBuilder newPetFormDefenceDefendantsArrayBuilder = Json.createArrayBuilder(); + final JsonArrayBuilder newPetFormDefenceDefendantsArrayBuilder = JsonObjects.createArrayBuilder(); final Set finalMatchedDefendantSet = matchedDefendantsSet; processReceivedCpsServePet @@ -631,7 +631,7 @@ public FormValidationResult validateAndRebuildingFormData(final JsonObject proce .map(defendantFromEventPayload -> buildDefendantWithDefendantId(finalMatchedDefendantSet, validOffences, defendantFromEventPayload)) .forEach(newPetFormDefenceDefendantsArrayBuilder::add); - final JsonArrayBuilder newDefenceArrayBuilder = Json.createArrayBuilder(); + final JsonArrayBuilder newDefenceArrayBuilder = JsonObjects.createArrayBuilder(); matchedDefendantsSet .stream() .map(this::buildFormDefendant) @@ -643,7 +643,7 @@ public FormValidationResult validateAndRebuildingFormData(final JsonObject proce .add(DEFENDANTS, newPetFormDefenceDefendantsArrayBuilder.build())) .add(PROSECUTION, petFormData.getJsonObject(PROSECUTION)) .build()) - .withPetDefendants(Json + .withPetDefendants(JsonObjects .createObjectBuilder() .add(PET_DEFENDANTS, newDefenceArrayBuilder.build()) .build()) @@ -696,7 +696,7 @@ private MatchedDefendant findMatchedDefendantFromMatchingId(Set Date: Fri, 15 May 2026 14:33:24 +0000 Subject: [PATCH 02/12] updating poms for 17.0.91 branch with snapshot versions From c46fea1fec823d93172d475b6f8d29f9ce861fcc Mon Sep 17 00:00:00 2001 From: embedded_devops_sa Date: Fri, 15 May 2026 14:33:28 +0000 Subject: [PATCH 03/12] updating poms for 17.0.92-SNAPSHOT development --- pom.xml | 2 +- prosecutioncasefile-command/pom.xml | 2 +- .../prosecutioncasefile-command-api/pom.xml | 2 +- .../prosecutioncasefile-command-handler/pom.xml | 2 +- prosecutioncasefile-common/pom.xml | 2 +- prosecutioncasefile-datatypes-common/pom.xml | 2 +- prosecutioncasefile-defence-service/pom.xml | 2 +- prosecutioncasefile-domain/pom.xml | 2 +- .../prosecutioncasefile-domain-aggregate/pom.xml | 2 +- .../prosecutioncasefile-domain-event-processor/pom.xml | 2 +- .../prosecutioncasefile-domain-event/pom.xml | 2 +- .../prosecutioncasefile-domain-value-schema/pom.xml | 2 +- prosecutioncasefile-event-sources/pom.xml | 2 +- prosecutioncasefile-event/pom.xml | 2 +- .../prosecutioncasefile-event-listener/pom.xml | 2 +- .../prosecutioncasefile-event-processor/pom.xml | 2 +- prosecutioncasefile-healthchecks/pom.xml | 2 +- prosecutioncasefile-integration-test/pom.xml | 2 +- prosecutioncasefile-progression-service/pom.xml | 2 +- prosecutioncasefile-query/pom.xml | 2 +- prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml | 2 +- .../prosecutioncasefile-query-view/pom.xml | 2 +- prosecutioncasefile-refdata/pom.xml | 2 +- prosecutioncasefile-service/pom.xml | 2 +- prosecutioncasefile-validation-rules/pom.xml | 2 +- prosecutioncasefile-viewstore/pom.xml | 2 +- .../prosecutioncasefile-viewstore-liquibase/pom.xml | 2 +- .../prosecutioncasefile-viewstore-persistence/pom.xml | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/pom.xml b/pom.xml index 164b1fb0..d6f904fa 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT pom Prosecution Casefile Microservice - Parent Casefile Microservice - Prosecution Context diff --git a/prosecutioncasefile-command/pom.xml b/prosecutioncasefile-command/pom.xml index 78808f9f..6807384e 100755 --- a/prosecutioncasefile-command/pom.xml +++ b/prosecutioncasefile-command/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml b/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml index 65e5869e..d4e90ffb 100755 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-command - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml b/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml index e6a44112..93a265b1 100755 --- a/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml +++ b/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-command - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-common/pom.xml b/prosecutioncasefile-common/pom.xml index 1dda2f91..a502cc1a 100644 --- a/prosecutioncasefile-common/pom.xml +++ b/prosecutioncasefile-common/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-datatypes-common/pom.xml b/prosecutioncasefile-datatypes-common/pom.xml index 294123e5..5d75a3cd 100644 --- a/prosecutioncasefile-datatypes-common/pom.xml +++ b/prosecutioncasefile-datatypes-common/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-defence-service/pom.xml b/prosecutioncasefile-defence-service/pom.xml index 59be8cb3..6df1c93b 100644 --- a/prosecutioncasefile-defence-service/pom.xml +++ b/prosecutioncasefile-defence-service/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-domain/pom.xml b/prosecutioncasefile-domain/pom.xml index 603f7c89..47997fba 100755 --- a/prosecutioncasefile-domain/pom.xml +++ b/prosecutioncasefile-domain/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT prosecutioncasefile-domain diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml index dbd998b4..662ce44c 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-domain - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT prosecutioncasefile-domain-aggregate diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml index ecc39307..b7616de8 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-domain uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml index 266d3ec4..b52a496b 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-domain - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT prosecutioncasefile-domain-event diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml index 6eabaec4..e2cd32b8 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-domain uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-event-sources/pom.xml b/prosecutioncasefile-event-sources/pom.xml index cd3ba011..1501b913 100644 --- a/prosecutioncasefile-event-sources/pom.xml +++ b/prosecutioncasefile-event-sources/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-event/pom.xml b/prosecutioncasefile-event/pom.xml index 8a406e7a..24d0f62a 100755 --- a/prosecutioncasefile-event/pom.xml +++ b/prosecutioncasefile-event/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml b/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml index d3e8e392..6fde3e46 100755 --- a/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml +++ b/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-event - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml b/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml index 21061f5a..dea23d90 100755 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-event - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-healthchecks/pom.xml b/prosecutioncasefile-healthchecks/pom.xml index b3ecdf78..875ab02e 100644 --- a/prosecutioncasefile-healthchecks/pom.xml +++ b/prosecutioncasefile-healthchecks/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-integration-test/pom.xml b/prosecutioncasefile-integration-test/pom.xml index 541e28a2..160a8481 100755 --- a/prosecutioncasefile-integration-test/pom.xml +++ b/prosecutioncasefile-integration-test/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-progression-service/pom.xml b/prosecutioncasefile-progression-service/pom.xml index cb508e44..9aedac88 100644 --- a/prosecutioncasefile-progression-service/pom.xml +++ b/prosecutioncasefile-progression-service/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-query/pom.xml b/prosecutioncasefile-query/pom.xml index 57f991f4..0aeb5d81 100755 --- a/prosecutioncasefile-query/pom.xml +++ b/prosecutioncasefile-query/pom.xml @@ -4,7 +4,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml b/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml index 31a60ac8..07e1b3d7 100755 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-query - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml b/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml index 7bf3dc38..16ae09a8 100755 --- a/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml +++ b/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-query - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-refdata/pom.xml b/prosecutioncasefile-refdata/pom.xml index 16e88135..3ae2dcab 100644 --- a/prosecutioncasefile-refdata/pom.xml +++ b/prosecutioncasefile-refdata/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-service/pom.xml b/prosecutioncasefile-service/pom.xml index 46bfc6d6..e6f48ed5 100644 --- a/prosecutioncasefile-service/pom.xml +++ b/prosecutioncasefile-service/pom.xml @@ -4,7 +4,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-validation-rules/pom.xml b/prosecutioncasefile-validation-rules/pom.xml index acb9dfd8..9cdd72ef 100644 --- a/prosecutioncasefile-validation-rules/pom.xml +++ b/prosecutioncasefile-validation-rules/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 prosecutioncasefile-validation-rules diff --git a/prosecutioncasefile-viewstore/pom.xml b/prosecutioncasefile-viewstore/pom.xml index 94419119..fada0627 100755 --- a/prosecutioncasefile-viewstore/pom.xml +++ b/prosecutioncasefile-viewstore/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT prosecutioncasefile-viewstore diff --git a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml index 6b36d114..c1808b3b 100755 --- a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml +++ b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-viewstore - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT prosecutioncasefile-viewstore-liquibase diff --git a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml index 92fda8d5..3a6a52f5 100755 --- a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml +++ b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-viewstore uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.92-SNAPSHOT 4.0.0 From 03bfc7707c34ce1c4bc6011157136d8de20c8cdb Mon Sep 17 00:00:00 2001 From: embedded_devops_sa Date: Fri, 15 May 2026 15:16:14 +0000 Subject: [PATCH 04/12] updating poms for branch'dev/release-17.0.91' with non-snapshot versions --- pom.xml | 2 +- prosecutioncasefile-command/pom.xml | 2 +- .../prosecutioncasefile-command-api/pom.xml | 2 +- .../prosecutioncasefile-command-handler/pom.xml | 2 +- prosecutioncasefile-common/pom.xml | 2 +- prosecutioncasefile-datatypes-common/pom.xml | 2 +- prosecutioncasefile-defence-service/pom.xml | 2 +- prosecutioncasefile-domain/pom.xml | 2 +- .../prosecutioncasefile-domain-aggregate/pom.xml | 2 +- .../prosecutioncasefile-domain-event-processor/pom.xml | 2 +- .../prosecutioncasefile-domain-event/pom.xml | 2 +- .../prosecutioncasefile-domain-value-schema/pom.xml | 2 +- prosecutioncasefile-event-sources/pom.xml | 2 +- prosecutioncasefile-event/pom.xml | 2 +- .../prosecutioncasefile-event-listener/pom.xml | 2 +- .../prosecutioncasefile-event-processor/pom.xml | 2 +- prosecutioncasefile-healthchecks/pom.xml | 2 +- prosecutioncasefile-integration-test/pom.xml | 2 +- prosecutioncasefile-progression-service/pom.xml | 2 +- prosecutioncasefile-query/pom.xml | 2 +- prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml | 2 +- .../prosecutioncasefile-query-view/pom.xml | 2 +- prosecutioncasefile-refdata/pom.xml | 2 +- prosecutioncasefile-service/pom.xml | 2 +- prosecutioncasefile-validation-rules/pom.xml | 2 +- prosecutioncasefile-viewstore/pom.xml | 2 +- .../prosecutioncasefile-viewstore-liquibase/pom.xml | 2 +- .../prosecutioncasefile-viewstore-persistence/pom.xml | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/pom.xml b/pom.xml index 164b1fb0..09eb3b35 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91-SNAPSHOT + 17.0.91 pom Prosecution Casefile Microservice - Parent Casefile Microservice - Prosecution Context diff --git a/prosecutioncasefile-command/pom.xml b/prosecutioncasefile-command/pom.xml index 78808f9f..315d60dc 100755 --- a/prosecutioncasefile-command/pom.xml +++ b/prosecutioncasefile-command/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml b/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml index 65e5869e..80461451 100755 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-command - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml b/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml index e6a44112..79365ee5 100755 --- a/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml +++ b/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-command - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-common/pom.xml b/prosecutioncasefile-common/pom.xml index 1dda2f91..ac3c7e56 100644 --- a/prosecutioncasefile-common/pom.xml +++ b/prosecutioncasefile-common/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-datatypes-common/pom.xml b/prosecutioncasefile-datatypes-common/pom.xml index 294123e5..e980a101 100644 --- a/prosecutioncasefile-datatypes-common/pom.xml +++ b/prosecutioncasefile-datatypes-common/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-defence-service/pom.xml b/prosecutioncasefile-defence-service/pom.xml index 59be8cb3..17f478cc 100644 --- a/prosecutioncasefile-defence-service/pom.xml +++ b/prosecutioncasefile-defence-service/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-domain/pom.xml b/prosecutioncasefile-domain/pom.xml index 603f7c89..a068ae6b 100755 --- a/prosecutioncasefile-domain/pom.xml +++ b/prosecutioncasefile-domain/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91-SNAPSHOT + 17.0.91 prosecutioncasefile-domain diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml index dbd998b4..cde55b53 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-domain - 17.0.91-SNAPSHOT + 17.0.91 prosecutioncasefile-domain-aggregate diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml index ecc39307..f6e1b079 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-domain uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml index 266d3ec4..68708234 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-domain - 17.0.91-SNAPSHOT + 17.0.91 prosecutioncasefile-domain-event diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml index 6eabaec4..acd99ea4 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-domain uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-event-sources/pom.xml b/prosecutioncasefile-event-sources/pom.xml index cd3ba011..ac2b285c 100644 --- a/prosecutioncasefile-event-sources/pom.xml +++ b/prosecutioncasefile-event-sources/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-event/pom.xml b/prosecutioncasefile-event/pom.xml index 8a406e7a..51da1863 100755 --- a/prosecutioncasefile-event/pom.xml +++ b/prosecutioncasefile-event/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml b/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml index d3e8e392..98925b4f 100755 --- a/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml +++ b/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-event - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml b/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml index 21061f5a..9c730034 100755 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-event - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-healthchecks/pom.xml b/prosecutioncasefile-healthchecks/pom.xml index b3ecdf78..cf49fe02 100644 --- a/prosecutioncasefile-healthchecks/pom.xml +++ b/prosecutioncasefile-healthchecks/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-integration-test/pom.xml b/prosecutioncasefile-integration-test/pom.xml index 541e28a2..fefd6faa 100755 --- a/prosecutioncasefile-integration-test/pom.xml +++ b/prosecutioncasefile-integration-test/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-progression-service/pom.xml b/prosecutioncasefile-progression-service/pom.xml index cb508e44..e6e72cb6 100644 --- a/prosecutioncasefile-progression-service/pom.xml +++ b/prosecutioncasefile-progression-service/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-query/pom.xml b/prosecutioncasefile-query/pom.xml index 57f991f4..c9e9672d 100755 --- a/prosecutioncasefile-query/pom.xml +++ b/prosecutioncasefile-query/pom.xml @@ -4,7 +4,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml b/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml index 31a60ac8..75a58d20 100755 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-query - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml b/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml index 7bf3dc38..173ed73c 100755 --- a/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml +++ b/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-query - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-refdata/pom.xml b/prosecutioncasefile-refdata/pom.xml index 16e88135..e701120f 100644 --- a/prosecutioncasefile-refdata/pom.xml +++ b/prosecutioncasefile-refdata/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-service/pom.xml b/prosecutioncasefile-service/pom.xml index 46bfc6d6..6cb9de0d 100644 --- a/prosecutioncasefile-service/pom.xml +++ b/prosecutioncasefile-service/pom.xml @@ -4,7 +4,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-validation-rules/pom.xml b/prosecutioncasefile-validation-rules/pom.xml index acb9dfd8..ebb74652 100644 --- a/prosecutioncasefile-validation-rules/pom.xml +++ b/prosecutioncasefile-validation-rules/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 prosecutioncasefile-validation-rules diff --git a/prosecutioncasefile-viewstore/pom.xml b/prosecutioncasefile-viewstore/pom.xml index 94419119..8f24d999 100755 --- a/prosecutioncasefile-viewstore/pom.xml +++ b/prosecutioncasefile-viewstore/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91-SNAPSHOT + 17.0.91 prosecutioncasefile-viewstore diff --git a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml index 6b36d114..8bbab37c 100755 --- a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml +++ b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-viewstore - 17.0.91-SNAPSHOT + 17.0.91 prosecutioncasefile-viewstore-liquibase diff --git a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml index 92fda8d5..c8908676 100755 --- a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml +++ b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-viewstore uk.gov.moj.cpp.prosecution.casefile - 17.0.91-SNAPSHOT + 17.0.91 4.0.0 From 147f106f4d2ae05be239b5035c2bd1e4a163acf5 Mon Sep 17 00:00:00 2001 From: embedded_devops_sa Date: Fri, 15 May 2026 15:16:36 +0000 Subject: [PATCH 05/12] updating develop poms to master versions to avoid merge conflicts --- pom.xml | 2 +- prosecutioncasefile-command/pom.xml | 2 +- .../prosecutioncasefile-command-api/pom.xml | 2 +- .../prosecutioncasefile-command-handler/pom.xml | 2 +- prosecutioncasefile-common/pom.xml | 2 +- prosecutioncasefile-datatypes-common/pom.xml | 2 +- prosecutioncasefile-defence-service/pom.xml | 2 +- prosecutioncasefile-domain/pom.xml | 2 +- .../prosecutioncasefile-domain-aggregate/pom.xml | 2 +- .../prosecutioncasefile-domain-event-processor/pom.xml | 2 +- .../prosecutioncasefile-domain-event/pom.xml | 2 +- .../prosecutioncasefile-domain-value-schema/pom.xml | 2 +- prosecutioncasefile-event-sources/pom.xml | 2 +- prosecutioncasefile-event/pom.xml | 2 +- .../prosecutioncasefile-event-listener/pom.xml | 2 +- .../prosecutioncasefile-event-processor/pom.xml | 2 +- prosecutioncasefile-healthchecks/pom.xml | 2 +- prosecutioncasefile-integration-test/pom.xml | 2 +- prosecutioncasefile-progression-service/pom.xml | 2 +- prosecutioncasefile-query/pom.xml | 2 +- prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml | 2 +- .../prosecutioncasefile-query-view/pom.xml | 2 +- prosecutioncasefile-refdata/pom.xml | 2 +- prosecutioncasefile-service/pom.xml | 2 +- prosecutioncasefile-validation-rules/pom.xml | 2 +- prosecutioncasefile-viewstore/pom.xml | 2 +- .../prosecutioncasefile-viewstore-liquibase/pom.xml | 2 +- .../prosecutioncasefile-viewstore-persistence/pom.xml | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/pom.xml b/pom.xml index d6f904fa..09eb3b35 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.91 pom Prosecution Casefile Microservice - Parent Casefile Microservice - Prosecution Context diff --git a/prosecutioncasefile-command/pom.xml b/prosecutioncasefile-command/pom.xml index 6807384e..315d60dc 100755 --- a/prosecutioncasefile-command/pom.xml +++ b/prosecutioncasefile-command/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml b/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml index d4e90ffb..80461451 100755 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-command - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml b/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml index 93a265b1..79365ee5 100755 --- a/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml +++ b/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-command - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-common/pom.xml b/prosecutioncasefile-common/pom.xml index a502cc1a..ac3c7e56 100644 --- a/prosecutioncasefile-common/pom.xml +++ b/prosecutioncasefile-common/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-datatypes-common/pom.xml b/prosecutioncasefile-datatypes-common/pom.xml index 5d75a3cd..e980a101 100644 --- a/prosecutioncasefile-datatypes-common/pom.xml +++ b/prosecutioncasefile-datatypes-common/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-defence-service/pom.xml b/prosecutioncasefile-defence-service/pom.xml index 6df1c93b..17f478cc 100644 --- a/prosecutioncasefile-defence-service/pom.xml +++ b/prosecutioncasefile-defence-service/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-domain/pom.xml b/prosecutioncasefile-domain/pom.xml index 47997fba..a068ae6b 100755 --- a/prosecutioncasefile-domain/pom.xml +++ b/prosecutioncasefile-domain/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.91 prosecutioncasefile-domain diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml index 662ce44c..cde55b53 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-domain - 17.0.92-SNAPSHOT + 17.0.91 prosecutioncasefile-domain-aggregate diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml index b7616de8..f6e1b079 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-domain uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml index b52a496b..68708234 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-domain - 17.0.92-SNAPSHOT + 17.0.91 prosecutioncasefile-domain-event diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml index e2cd32b8..acd99ea4 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-domain uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-event-sources/pom.xml b/prosecutioncasefile-event-sources/pom.xml index 1501b913..ac2b285c 100644 --- a/prosecutioncasefile-event-sources/pom.xml +++ b/prosecutioncasefile-event-sources/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-event/pom.xml b/prosecutioncasefile-event/pom.xml index 24d0f62a..51da1863 100755 --- a/prosecutioncasefile-event/pom.xml +++ b/prosecutioncasefile-event/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml b/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml index 6fde3e46..98925b4f 100755 --- a/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml +++ b/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-event - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml b/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml index dea23d90..9c730034 100755 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-event - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-healthchecks/pom.xml b/prosecutioncasefile-healthchecks/pom.xml index 875ab02e..cf49fe02 100644 --- a/prosecutioncasefile-healthchecks/pom.xml +++ b/prosecutioncasefile-healthchecks/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-integration-test/pom.xml b/prosecutioncasefile-integration-test/pom.xml index 160a8481..fefd6faa 100755 --- a/prosecutioncasefile-integration-test/pom.xml +++ b/prosecutioncasefile-integration-test/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-progression-service/pom.xml b/prosecutioncasefile-progression-service/pom.xml index 9aedac88..e6e72cb6 100644 --- a/prosecutioncasefile-progression-service/pom.xml +++ b/prosecutioncasefile-progression-service/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-query/pom.xml b/prosecutioncasefile-query/pom.xml index 0aeb5d81..c9e9672d 100755 --- a/prosecutioncasefile-query/pom.xml +++ b/prosecutioncasefile-query/pom.xml @@ -4,7 +4,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml b/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml index 07e1b3d7..75a58d20 100755 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-query - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml b/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml index 16ae09a8..173ed73c 100755 --- a/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml +++ b/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-query - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-refdata/pom.xml b/prosecutioncasefile-refdata/pom.xml index 3ae2dcab..e701120f 100644 --- a/prosecutioncasefile-refdata/pom.xml +++ b/prosecutioncasefile-refdata/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-service/pom.xml b/prosecutioncasefile-service/pom.xml index e6f48ed5..6cb9de0d 100644 --- a/prosecutioncasefile-service/pom.xml +++ b/prosecutioncasefile-service/pom.xml @@ -4,7 +4,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 diff --git a/prosecutioncasefile-validation-rules/pom.xml b/prosecutioncasefile-validation-rules/pom.xml index 9cdd72ef..ebb74652 100644 --- a/prosecutioncasefile-validation-rules/pom.xml +++ b/prosecutioncasefile-validation-rules/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 prosecutioncasefile-validation-rules diff --git a/prosecutioncasefile-viewstore/pom.xml b/prosecutioncasefile-viewstore/pom.xml index fada0627..8f24d999 100755 --- a/prosecutioncasefile-viewstore/pom.xml +++ b/prosecutioncasefile-viewstore/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.91 prosecutioncasefile-viewstore diff --git a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml index c1808b3b..8bbab37c 100755 --- a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml +++ b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-viewstore - 17.0.92-SNAPSHOT + 17.0.91 prosecutioncasefile-viewstore-liquibase diff --git a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml index 3a6a52f5..c8908676 100755 --- a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml +++ b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-viewstore uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.91 4.0.0 From 197308f40db1895432a58b6795e04de38544dd55 Mon Sep 17 00:00:00 2001 From: embedded_devops_sa Date: Fri, 15 May 2026 15:16:40 +0000 Subject: [PATCH 06/12] Updating develop poms back to pre merge state --- pom.xml | 2 +- prosecutioncasefile-command/pom.xml | 2 +- .../prosecutioncasefile-command-api/pom.xml | 2 +- .../prosecutioncasefile-command-handler/pom.xml | 2 +- prosecutioncasefile-common/pom.xml | 2 +- prosecutioncasefile-datatypes-common/pom.xml | 2 +- prosecutioncasefile-defence-service/pom.xml | 2 +- prosecutioncasefile-domain/pom.xml | 2 +- .../prosecutioncasefile-domain-aggregate/pom.xml | 2 +- .../prosecutioncasefile-domain-event-processor/pom.xml | 2 +- .../prosecutioncasefile-domain-event/pom.xml | 2 +- .../prosecutioncasefile-domain-value-schema/pom.xml | 2 +- prosecutioncasefile-event-sources/pom.xml | 2 +- prosecutioncasefile-event/pom.xml | 2 +- .../prosecutioncasefile-event-listener/pom.xml | 2 +- .../prosecutioncasefile-event-processor/pom.xml | 2 +- prosecutioncasefile-healthchecks/pom.xml | 2 +- prosecutioncasefile-integration-test/pom.xml | 2 +- prosecutioncasefile-progression-service/pom.xml | 2 +- prosecutioncasefile-query/pom.xml | 2 +- prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml | 2 +- .../prosecutioncasefile-query-view/pom.xml | 2 +- prosecutioncasefile-refdata/pom.xml | 2 +- prosecutioncasefile-service/pom.xml | 2 +- prosecutioncasefile-validation-rules/pom.xml | 2 +- prosecutioncasefile-viewstore/pom.xml | 2 +- .../prosecutioncasefile-viewstore-liquibase/pom.xml | 2 +- .../prosecutioncasefile-viewstore-persistence/pom.xml | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/pom.xml b/pom.xml index 09eb3b35..d6f904fa 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91 + 17.0.92-SNAPSHOT pom Prosecution Casefile Microservice - Parent Casefile Microservice - Prosecution Context diff --git a/prosecutioncasefile-command/pom.xml b/prosecutioncasefile-command/pom.xml index 315d60dc..6807384e 100755 --- a/prosecutioncasefile-command/pom.xml +++ b/prosecutioncasefile-command/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml b/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml index 80461451..d4e90ffb 100755 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-command - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml b/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml index 79365ee5..93a265b1 100755 --- a/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml +++ b/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-command - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-common/pom.xml b/prosecutioncasefile-common/pom.xml index ac3c7e56..a502cc1a 100644 --- a/prosecutioncasefile-common/pom.xml +++ b/prosecutioncasefile-common/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-datatypes-common/pom.xml b/prosecutioncasefile-datatypes-common/pom.xml index e980a101..5d75a3cd 100644 --- a/prosecutioncasefile-datatypes-common/pom.xml +++ b/prosecutioncasefile-datatypes-common/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-defence-service/pom.xml b/prosecutioncasefile-defence-service/pom.xml index 17f478cc..6df1c93b 100644 --- a/prosecutioncasefile-defence-service/pom.xml +++ b/prosecutioncasefile-defence-service/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-domain/pom.xml b/prosecutioncasefile-domain/pom.xml index a068ae6b..47997fba 100755 --- a/prosecutioncasefile-domain/pom.xml +++ b/prosecutioncasefile-domain/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91 + 17.0.92-SNAPSHOT prosecutioncasefile-domain diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml index cde55b53..662ce44c 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-domain - 17.0.91 + 17.0.92-SNAPSHOT prosecutioncasefile-domain-aggregate diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml index f6e1b079..b7616de8 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-domain uk.gov.moj.cpp.prosecution.casefile - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml index 68708234..b52a496b 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-domain - 17.0.91 + 17.0.92-SNAPSHOT prosecutioncasefile-domain-event diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml index acd99ea4..e2cd32b8 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-domain uk.gov.moj.cpp.prosecution.casefile - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-event-sources/pom.xml b/prosecutioncasefile-event-sources/pom.xml index ac2b285c..1501b913 100644 --- a/prosecutioncasefile-event-sources/pom.xml +++ b/prosecutioncasefile-event-sources/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-event/pom.xml b/prosecutioncasefile-event/pom.xml index 51da1863..24d0f62a 100755 --- a/prosecutioncasefile-event/pom.xml +++ b/prosecutioncasefile-event/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml b/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml index 98925b4f..6fde3e46 100755 --- a/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml +++ b/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-event - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml b/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml index 9c730034..dea23d90 100755 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-event - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-healthchecks/pom.xml b/prosecutioncasefile-healthchecks/pom.xml index cf49fe02..875ab02e 100644 --- a/prosecutioncasefile-healthchecks/pom.xml +++ b/prosecutioncasefile-healthchecks/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-integration-test/pom.xml b/prosecutioncasefile-integration-test/pom.xml index fefd6faa..160a8481 100755 --- a/prosecutioncasefile-integration-test/pom.xml +++ b/prosecutioncasefile-integration-test/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-progression-service/pom.xml b/prosecutioncasefile-progression-service/pom.xml index e6e72cb6..9aedac88 100644 --- a/prosecutioncasefile-progression-service/pom.xml +++ b/prosecutioncasefile-progression-service/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-query/pom.xml b/prosecutioncasefile-query/pom.xml index c9e9672d..0aeb5d81 100755 --- a/prosecutioncasefile-query/pom.xml +++ b/prosecutioncasefile-query/pom.xml @@ -4,7 +4,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml b/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml index 75a58d20..07e1b3d7 100755 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-query - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml b/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml index 173ed73c..16ae09a8 100755 --- a/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml +++ b/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-query - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-refdata/pom.xml b/prosecutioncasefile-refdata/pom.xml index e701120f..3ae2dcab 100644 --- a/prosecutioncasefile-refdata/pom.xml +++ b/prosecutioncasefile-refdata/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-service/pom.xml b/prosecutioncasefile-service/pom.xml index 6cb9de0d..e6f48ed5 100644 --- a/prosecutioncasefile-service/pom.xml +++ b/prosecutioncasefile-service/pom.xml @@ -4,7 +4,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-validation-rules/pom.xml b/prosecutioncasefile-validation-rules/pom.xml index ebb74652..9cdd72ef 100644 --- a/prosecutioncasefile-validation-rules/pom.xml +++ b/prosecutioncasefile-validation-rules/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 prosecutioncasefile-validation-rules diff --git a/prosecutioncasefile-viewstore/pom.xml b/prosecutioncasefile-viewstore/pom.xml index 8f24d999..fada0627 100755 --- a/prosecutioncasefile-viewstore/pom.xml +++ b/prosecutioncasefile-viewstore/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.91 + 17.0.92-SNAPSHOT prosecutioncasefile-viewstore diff --git a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml index 8bbab37c..c1808b3b 100755 --- a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml +++ b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-viewstore - 17.0.91 + 17.0.92-SNAPSHOT prosecutioncasefile-viewstore-liquibase diff --git a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml index c8908676..3a6a52f5 100755 --- a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml +++ b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-viewstore uk.gov.moj.cpp.prosecution.casefile - 17.0.91 + 17.0.92-SNAPSHOT 4.0.0 From 3b7829c2678cfa717fe7cd11bd25f3e7a381d41a Mon Sep 17 00:00:00 2001 From: erolkurelihmcts <134499553+erolkurelihmcts@users.noreply.github.com> Date: Fri, 29 May 2026 11:13:11 +0100 Subject: [PATCH 07/12] CIMD-3360 Code Merge (#80) Co-authored-by: Erol Kureli <> --- pom.xml | 6 +- .../casefile/command/api/AddMaterialApi.java | 4 +- .../casefile/command/api/PleadOnlineApi.java | 5 +- .../SjpProsecutionUpdateOffenceCodeApi.java | 4 +- ...jpProsecutionUpdateOffenceCodeApiTest.java | 61 +++++ .../validator/PleadOnlineValidatorTest.java | 45 ++-- .../handler/AcceptCaseHandlerTest.java | 11 +- prosecutioncasefile-domain/pom.xml | 2 +- .../aggregate/ProsecutionCaseFile.java | 19 +- ...rosecutionCaseFileErrorCorrectionTest.java | 5 +- .../ProsecutionReceivedListenerTest.java | 12 +- .../CpsServeMaterialEventProcessor.java | 15 +- .../event/processor/PocaEventProcessor.java | 5 +- .../activiti/delegates/AddMaterialToCase.java | 4 +- .../PendingIdpcMaterialExpiredDelegate.java | 4 +- .../activiti/delegates/UploadFile.java | 4 +- .../processor/service/MaterialService.java | 32 +-- .../event/processor/utils/MetadataHelper.java | 19 +- .../ProsecutionReceivedProcessorTest.java | 6 +- .../sjp/CaseDocumentUploadedListenerTest.java | 5 +- .../service/MaterialServiceTest.java | 58 +++++ .../event/processor/utils/FileUtil.java | 4 +- .../casefile/helper/ActivitiHelper.java | 6 +- .../casefile/helper/AddMaterialHelper.java | 13 +- .../casefile/it/AddApplicationMaterialIT.java | 6 +- .../casefile/it/AddMaterialIT.java | 22 +- .../casefile/it/InitiateSjpProsecutionIT.java | 12 +- .../casefile/stub/IdMapperStub.java | 6 +- .../api/service/CaseDetailConverterTest.java | 4 +- .../service/BusinessErrorDetailsService.java | 4 +- .../BusinessErrorDetailsServiceTest.java | 17 ++ .../ReferenceDataQueryServiceTest.java | 20 +- .../ReferenceDataQueryServiceTestHelper.java | 234 +++++++----------- .../casefile/validation/CpsFormValidator.java | 45 ++-- .../validation/CpsFormValidatorTest.java | 61 +++-- .../forms/NameAndDOBValidationRuleTest.java | 39 ++- .../casefile/validation/utils/FileUtil.java | 4 +- 37 files changed, 450 insertions(+), 373 deletions(-) create mode 100644 prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/SjpProsecutionUpdateOffenceCodeApiTest.java create mode 100644 prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/MaterialServiceTest.java diff --git a/pom.xml b/pom.xml index d6f904fa..93f0aede 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.common service-parent-pom - 17.103.9 + 17.104.0 uk.gov.moj.cpp.prosecution.casefile @@ -23,14 +23,14 @@ file://${project.build.directory}/site true 0.1.49 - 17.103.13 + 17.104.4 2.0.335 3.1.3 17.103.131 17.0.38 0.0.3 17.0.42 - 17.0.252 + 17.0.260 17.0.87 ${coredomain.version} 17.0.24 diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/AddMaterialApi.java b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/AddMaterialApi.java index a45f391a..7e3d2d62 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/AddMaterialApi.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/AddMaterialApi.java @@ -4,6 +4,7 @@ import static uk.gov.justice.services.core.annotation.Component.COMMAND_API; import static uk.gov.justice.services.messaging.Envelope.metadataFrom; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import uk.gov.justice.services.core.annotation.Handles; @@ -19,7 +20,6 @@ import java.util.UUID; import javax.inject.Inject; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonArray; import javax.json.JsonArrayBuilder; import javax.json.JsonObject; @@ -62,7 +62,7 @@ public void addMaterials(final JsonEnvelope addMaterialCommand) throws FileServi final JsonObject addMaterialPayload = addMaterialCommand.payloadAsJsonObject(); final JsonArray materials = addMaterialPayload.getJsonArray(MATERIALS); - final JsonArrayBuilder enrichedMaterialsBuilder = JsonObjects.createArrayBuilder(); + final JsonArrayBuilder enrichedMaterialsBuilder = createArrayBuilder(); for (final JsonObject material : materials.getValuesAs(JsonObject.class)) { final JsonObjectBuilder enrichedMaterialBuilder = createObjectBuilder(material); getFileType(material).ifPresent(fileType -> enrichedMaterialBuilder.add(FILE_TYPE, fileType)); diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/PleadOnlineApi.java b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/PleadOnlineApi.java index 97e4e7e0..76e1326e 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/PleadOnlineApi.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/PleadOnlineApi.java @@ -2,11 +2,11 @@ import static java.util.Arrays.asList; import static java.util.Objects.nonNull; -import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.annotation.Component.COMMAND_API; import static uk.gov.justice.services.core.enveloper.Enveloper.envelop; import static uk.gov.justice.services.messaging.Envelope.envelopeFrom; import static uk.gov.justice.services.messaging.Envelope.metadataFrom; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilderWithFilter; import static uk.gov.moj.cpp.prosecution.casefile.command.api.service.AddressService.normalizePostcodeInAddress; import static uk.gov.moj.cpp.prosecution.casefile.plea.json.schemas.InitiationCode.J; @@ -29,7 +29,6 @@ import java.util.Map; import javax.inject.Inject; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; @@ -126,7 +125,7 @@ private void checkValidationErrors(Map> validationErrors) { private JsonObject getCaseDetailFromSjp(final Envelope envelope) { - final JsonObject queryCasePayload = JsonObjects.createObjectBuilder() + final JsonObject queryCasePayload = createObjectBuilder() .add(CASE_ID, envelope.payload().getCaseId().toString()) .build(); final Envelope requestEnvelope = envelop(queryCasePayload) diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/SjpProsecutionUpdateOffenceCodeApi.java b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/SjpProsecutionUpdateOffenceCodeApi.java index 31e5e401..25880c9b 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/SjpProsecutionUpdateOffenceCodeApi.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/main/java/uk/gov/moj/cpp/prosecution/casefile/command/api/SjpProsecutionUpdateOffenceCodeApi.java @@ -2,6 +2,7 @@ import static uk.gov.justice.services.core.annotation.Component.COMMAND_API; import static uk.gov.justice.services.messaging.Envelope.metadataFrom; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import uk.gov.justice.services.common.converter.ObjectToJsonObjectConverter; import uk.gov.justice.services.core.annotation.Handles; @@ -16,7 +17,6 @@ import java.util.Optional; import javax.inject.Inject; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import com.google.common.collect.Lists; @@ -42,7 +42,7 @@ public void updateOffenceCode(final JsonEnvelope envelope) { final List offencesRefData = referenceDataQueryService.retrieveOffenceDataList(Lists.newArrayList(payload.getString(OFFENCE_CODE)), Optional.empty()); final OffenceReferenceData offenceReferenceData = offencesRefData.get(0); - final JsonObject commandPayload = JsonObjects.createObjectBuilder() + final JsonObject commandPayload = createObjectBuilder() .add("caseId", payload.getString("caseId")) .add(OFFENCE_CODE, payload.getString(OFFENCE_CODE)) .add("offenceReferenceData", objectToJsonObjectConverter.convert(offenceReferenceData)) diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/SjpProsecutionUpdateOffenceCodeApiTest.java b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/SjpProsecutionUpdateOffenceCodeApiTest.java new file mode 100644 index 00000000..2895fe91 --- /dev/null +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/SjpProsecutionUpdateOffenceCodeApiTest.java @@ -0,0 +1,61 @@ +package uk.gov.moj.cpp.prosecution.casefile.command.api; + +import static java.util.Collections.singletonList; +import static java.util.UUID.randomUUID; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; +import static uk.gov.justice.services.test.utils.core.messaging.MetadataBuilderFactory.metadataWithRandomUUID; + +import uk.gov.justice.services.common.converter.ObjectToJsonObjectConverter; +import uk.gov.justice.services.core.sender.Sender; +import uk.gov.justice.services.messaging.Envelope; +import uk.gov.justice.services.messaging.JsonEnvelope; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.OffenceReferenceData; +import uk.gov.moj.cpp.prosecution.casefile.service.ReferenceDataQueryService; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +public class SjpProsecutionUpdateOffenceCodeApiTest { + + @Mock + private Sender sender; + + @Mock + private ReferenceDataQueryService referenceDataQueryService; + + @Mock + private ObjectToJsonObjectConverter objectToJsonObjectConverter; + + @Mock + private OffenceReferenceData offenceReferenceData; + + @InjectMocks + private SjpProsecutionUpdateOffenceCodeApi sjpProsecutionUpdateOffenceCodeApi; + + @Test + public void shouldSendCommandWhenUpdatingOffenceCode() { + when(referenceDataQueryService.retrieveOffenceDataList(any(), any())) + .thenReturn(singletonList(offenceReferenceData)); + when(objectToJsonObjectConverter.convert(offenceReferenceData)) + .thenReturn(createObjectBuilder().build()); + + final JsonEnvelope envelope = envelopeFrom( + metadataWithRandomUUID("prosecutioncasefile.sjp-prosecution-update-offence-code").build(), + createObjectBuilder() + .add("caseId", randomUUID().toString()) + .add("offenceCode", "TH68001") + .build()); + + sjpProsecutionUpdateOffenceCodeApi.updateOffenceCode(envelope); + + verify(sender).send(any(Envelope.class)); + } +} \ No newline at end of file diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/validator/PleadOnlineValidatorTest.java b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/validator/PleadOnlineValidatorTest.java index 7166d3fa..29135695 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/validator/PleadOnlineValidatorTest.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/api/validator/PleadOnlineValidatorTest.java @@ -7,15 +7,14 @@ import static uk.gov.justice.core.courts.Defendant.defendant; import static uk.gov.justice.core.courts.Plea.plea; import static uk.gov.justice.core.courts.ProsecutionCase.prosecutionCase; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.moj.cpp.prosecution.casefile.plea.json.schemas.FinancialMeans.financialMeans; import static uk.gov.moj.cpp.prosecution.casefile.plea.json.schemas.Offence.offence; import static uk.gov.moj.cpp.prosecution.casefile.plea.json.schemas.PersonalDetails.personalDetails; import static uk.gov.moj.cpp.prosecution.casefile.plea.json.schemas.PleaType.GUILTY; import static uk.gov.moj.cps.prosecutioncasefile.command.api.PleadOnline.pleadOnline; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.junit.jupiter.MockitoExtension; import uk.gov.justice.core.courts.Offence; import uk.gov.justice.core.courts.ProsecutionCase; import uk.gov.moj.cpp.prosecution.casefile.plea.json.schemas.Benefits; @@ -24,10 +23,12 @@ import java.util.List; import java.util.Map; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; +import org.mockito.junit.jupiter.MockitoExtension; @ExtendWith(MockitoExtension.class) public class PleadOnlineValidatorTest { @@ -131,14 +132,13 @@ public void shouldValidateWithProsecutionCasePayload() { @Test public void shouldValidateWithJsonPayload_WhenCaseAlreadyReviewed() { - final JsonObject jsonObject = JsonObjects.createObjectBuilder() + final JsonObject jsonObject = createObjectBuilder() .add("status", "") .add("completed", false) .add("assigned", false) - .add("defendant", JsonObjects - .createObjectBuilder() - .add("offences", JsonObjects.createArrayBuilder() - .add(JsonObjects.createObjectBuilder() + .add("defendant", createObjectBuilder() + .add("offences", createArrayBuilder() + .add(createObjectBuilder() .add("pendingWithdrawal", true) .build()) .build() @@ -153,14 +153,13 @@ public void shouldValidateWithJsonPayload_WhenCaseAlreadyReviewed() { @Test public void shouldValidateWithJsonPayload_WhenCaseAdjournedPostConviction() { - final JsonObject jsonObject = JsonObjects.createObjectBuilder() + final JsonObject jsonObject = createObjectBuilder() .add("status", "") .add("completed", false) .add("assigned", false) - .add("defendant", JsonObjects - .createObjectBuilder() - .add("offences", JsonObjects.createArrayBuilder() - .add(JsonObjects.createObjectBuilder() + .add("defendant", createObjectBuilder() + .add("offences", createArrayBuilder() + .add(createObjectBuilder() .add("pendingWithdrawal", false) .add("convictionDate", "2020-12-23") .build()) @@ -176,14 +175,13 @@ public void shouldValidateWithJsonPayload_WhenCaseAdjournedPostConviction() { @Test public void shouldValidateWithJsonPayload_WhenPleaAlreadySubmitted() { - final JsonObject jsonObject = JsonObjects.createObjectBuilder() + final JsonObject jsonObject = createObjectBuilder() .add("status", "") .add("completed", false) .add("assigned", false) - .add("defendant", JsonObjects - .createObjectBuilder() - .add("offences", JsonObjects.createArrayBuilder() - .add(JsonObjects.createObjectBuilder() + .add("defendant", createObjectBuilder() + .add("offences", createArrayBuilder() + .add(createObjectBuilder() .add("pendingWithdrawal", false) .add("plea", "Guilty") .build()) @@ -199,14 +197,13 @@ public void shouldValidateWithJsonPayload_WhenPleaAlreadySubmitted() { @Test public void shouldValidateWithJsonPayload() { - final JsonObject jsonObject = JsonObjects.createObjectBuilder() + final JsonObject jsonObject = createObjectBuilder() .add("status", "") .add("completed", false) .add("assigned", false) - .add("defendant", JsonObjects - .createObjectBuilder() - .add("offences", JsonObjects.createArrayBuilder() - .add(JsonObjects.createObjectBuilder() + .add("defendant", createObjectBuilder() + .add("offences", createArrayBuilder() + .add(createObjectBuilder() .add("pendingWithdrawal", false) .build()) .build()) diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/AcceptCaseHandlerTest.java b/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/AcceptCaseHandlerTest.java index 3697d6b0..f6f4281b 100644 --- a/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/AcceptCaseHandlerTest.java +++ b/prosecutioncasefile-command/prosecutioncasefile-command-handler/src/test/java/uk/gov/moj/cpp/prosecution/casefile/command/handler/AcceptCaseHandlerTest.java @@ -21,7 +21,7 @@ import static uk.gov.justice.services.core.annotation.Component.COMMAND_HANDLER; import static uk.gov.justice.services.messaging.Envelope.envelopeFrom; import static uk.gov.justice.services.messaging.Envelope.metadataFrom; -import static uk.gov.justice.services.messaging.JsonObjects.*; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.test.utils.core.enveloper.EnveloperFactory.createEnveloperWithEvents; import static uk.gov.justice.services.test.utils.core.helper.EventStreamMockHelper.verifyAppendAndGetArgumentFrom; import static uk.gov.justice.services.test.utils.core.matchers.HandlerMatcher.isHandler; @@ -48,9 +48,7 @@ import uk.gov.justice.services.eventsourcing.source.core.exception.EventStreamException; import uk.gov.justice.services.messaging.Envelope; import uk.gov.justice.services.messaging.JsonEnvelope; -import uk.gov.justice.services.messaging.JsonObjects; import uk.gov.justice.services.messaging.Metadata; - import uk.gov.justice.services.test.utils.core.reflection.ReflectionUtil; import uk.gov.moj.cpp.prosecution.casefile.aggregate.ProsecutionCaseFile; import uk.gov.moj.cpp.prosecution.casefile.command.service.ProsecutionCaseQueryService; @@ -60,7 +58,6 @@ import uk.gov.moj.cpp.prosecution.casefile.json.schemas.DefendantSubject; import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Exhibit; import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Individual; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.OrganisationUnitReferenceData; import uk.gov.moj.cpp.prosecution.casefile.json.schemas.PersonalInformation; import uk.gov.moj.cpp.prosecution.casefile.json.schemas.ProsecutionCaseSubject; import uk.gov.moj.cpp.prosecution.casefile.json.schemas.ProsecutorPersonDefendantDetails; @@ -469,7 +466,7 @@ private JsonEnvelope materialPendingEventEnvelope(final UUID submissionId, final .add("caseId", materialPending.getCaseId().toString()) .add("prosecutingAuthority", materialPending.getProsecutingAuthority()) .add("prosecutorDefendantId", materialPending.getProsecutorDefendantId()) - .add("material", JsonObjects.createObjectBuilder() + .add("material", createObjectBuilder() .add("fileStoreId", materialPending.getMaterial().getFileStoreId().toString()) .add("documentType", materialPending.getMaterial().getDocumentType()) .add("fileType", materialPending.getMaterial().getFileType()) @@ -480,7 +477,7 @@ private JsonEnvelope materialPendingEventEnvelope(final UUID submissionId, final } private JsonEnvelope materialPendingEventEnvelopeV2(final UUID submissionId, final MaterialPendingV2 materialPending) { - final Metadata metadata = metadataFrom(JsonObjects.createObjectBuilder(metadataWithRandomUUID("prosecutioncasefile.events.material-pending-v2").build().asJsonObject()) + final Metadata metadata = metadataFrom(createObjectBuilder(metadataWithRandomUUID("prosecutioncasefile.events.material-pending-v2").build().asJsonObject()) .add("submissionId", submissionId.toString()).build()) .build(); @@ -501,6 +498,6 @@ private JsonEnvelope materialPendingEventEnvelopeV2(final UUID submissionId, fin } private Metadata withSubmissionId(final Metadata metadata, final String submissionId) { - return metadataFrom(JsonObjects.createObjectBuilder(metadata.asJsonObject()).add("submissionId", submissionId).build()).build(); + return metadataFrom(createObjectBuilder(metadata.asJsonObject()).add("submissionId", submissionId).build()).build(); } } diff --git a/prosecutioncasefile-domain/pom.xml b/prosecutioncasefile-domain/pom.xml index 47997fba..84e6fbee 100755 --- a/prosecutioncasefile-domain/pom.xml +++ b/prosecutioncasefile-domain/pom.xml @@ -14,7 +14,7 @@ prosecutioncasefile-domain-aggregate prosecutioncasefile-domain-event prosecutioncasefile-domain-value-schema - prosecutioncasefile-domain-event-processor + prosecutioncasefile-domain-event-processor diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/main/java/uk/gov/moj/cpp/prosecution/casefile/aggregate/ProsecutionCaseFile.java b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/main/java/uk/gov/moj/cpp/prosecution/casefile/aggregate/ProsecutionCaseFile.java index a1e14a7d..2a9b075e 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/main/java/uk/gov/moj/cpp/prosecution/casefile/aggregate/ProsecutionCaseFile.java +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/main/java/uk/gov/moj/cpp/prosecution/casefile/aggregate/ProsecutionCaseFile.java @@ -17,7 +17,6 @@ import static java.util.stream.Collectors.toSet; import static java.util.stream.Stream.builder; import static java.util.stream.Stream.of; -import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; import static org.apache.commons.collections.CollectionUtils.isEmpty; import static org.apache.commons.collections.CollectionUtils.isNotEmpty; import static org.apache.commons.collections.ListUtils.union; @@ -25,12 +24,19 @@ import static uk.gov.justice.domain.aggregate.matcher.EventSwitcher.match; import static uk.gov.justice.domain.aggregate.matcher.EventSwitcher.otherwiseDoNothing; import static uk.gov.justice.domain.aggregate.matcher.EventSwitcher.when; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createReader; import static uk.gov.moj.cpp.json.schemas.prosecutioncasefile.events.CaseReceivedWithDuplicateDefendants.caseReceivedWithDuplicateDefendants; import static uk.gov.moj.cpp.prosecution.casefile.CaseType.CC; import static uk.gov.moj.cpp.prosecution.casefile.CaseType.SJP; import static uk.gov.moj.cpp.prosecution.casefile.CaseType.UNKNOWN; -import static uk.gov.moj.cpp.prosecution.casefile.ProsecutionCaseFileHelper.*; +import static uk.gov.moj.cpp.prosecution.casefile.ProsecutionCaseFileHelper.addJsonProperty; +import static uk.gov.moj.cpp.prosecution.casefile.ProsecutionCaseFileHelper.buildDefendantWithReferenceData; +import static uk.gov.moj.cpp.prosecution.casefile.ProsecutionCaseFileHelper.getDefendantId; +import static uk.gov.moj.cpp.prosecution.casefile.ProsecutionCaseFileHelper.setCivilFees; +import static uk.gov.moj.cpp.prosecution.casefile.ProsecutionCaseFileHelper.validateDefendantErrors; +import static uk.gov.moj.cpp.prosecution.casefile.ProsecutionCaseFileHelper.validateDefendantWarnings; import static uk.gov.moj.cpp.prosecution.casefile.ValidationHelper.buildCaseValidationFailedEvent; import static uk.gov.moj.cpp.prosecution.casefile.domain.DomainConstants.PROBLEM_CODE_DOCUMENT_NOT_MATCHED; import static uk.gov.moj.cpp.prosecution.casefile.domain.DomainConstants.SOURCE_CPS_FOR_PUBLIC_EVENTS; @@ -105,13 +111,13 @@ import uk.gov.moj.cpp.prosecution.casefile.json.schemas.DefendantSubject; import uk.gov.moj.cpp.prosecution.casefile.json.schemas.DocumentCategory; import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Individual; +import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Language; import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Material; import uk.gov.moj.cpp.prosecution.casefile.json.schemas.OffenceReferenceData; import uk.gov.moj.cpp.prosecution.casefile.json.schemas.PersonalInformation; import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Problem; import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Prosecution; import uk.gov.moj.cpp.prosecution.casefile.json.schemas.SelfDefinedInformation; -import uk.gov.moj.cpp.prosecution.casefile.json.schemas.Language; import uk.gov.moj.cpp.prosecution.casefile.plea.json.schemas.PleadOnline; import uk.gov.moj.cpp.prosecution.casefile.plea.json.schemas.PleadOnlinePcqVisited; import uk.gov.moj.cpp.prosecution.casefile.refdata.defendant.DefendantRefDataEnricher; @@ -171,7 +177,6 @@ import java.util.stream.Stream; import java.util.stream.Stream.Builder; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonArray; import javax.json.JsonArrayBuilder; import javax.json.JsonObject; @@ -420,7 +425,7 @@ private void updateCaseCorrections(final JsonObject correctedFields, final JsonO final String id = errorField.containsKey("id") ? errorField.getString("id") : null; addJsonProperty(mutableJsonObject, value, fieldName, id); })); - try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(mutableJsonObject.getAsJsonObject().toString()))) { + try (JsonReader jsonReader = createReader(new StringReader(mutableJsonObject.getAsJsonObject().toString()))) { final JsonObject updatedJsonObject = jsonReader.readObject(); this.caseDetails = jsonObjectToObjectConverter.convert(updatedJsonObject, CaseDetails.class); } @@ -446,7 +451,7 @@ private List updateDefendantCorrections(final JsonObject correctedFi } ); - try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(mutableJsonObject.getAsJsonObject().toString()))) { + try (JsonReader jsonReader = createReader(new StringReader(mutableJsonObject.getAsJsonObject().toString()))) { return jsonReader.readObject(); } }).collect(toList()); @@ -1950,7 +1955,7 @@ public Stream updateOffenceCode(final String offenceCode, final OffenceR .stream() .map((d) -> { final JsonObjectBuilder defendantJsonObjectBuilder = createObjectBuilder(objectToJsonObjectConverter.convert(d)); - final JsonArrayBuilder jsonArrayBuilder = JsonObjects.createArrayBuilder(); + final JsonArrayBuilder jsonArrayBuilder = createArrayBuilder(); d.getOffences().forEach((o) -> { final JsonObjectBuilder offenceJsonObjectBuilder = createObjectBuilder(objectToJsonObjectConverter.convert(o)); diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/test/java/uk/gov/moj/cps/prosecutioncasefile/ProsecutionCaseFileErrorCorrectionTest.java b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/test/java/uk/gov/moj/cps/prosecutioncasefile/ProsecutionCaseFileErrorCorrectionTest.java index 5dcee51d..9782a640 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/test/java/uk/gov/moj/cps/prosecutioncasefile/ProsecutionCaseFileErrorCorrectionTest.java +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/src/test/java/uk/gov/moj/cps/prosecutioncasefile/ProsecutionCaseFileErrorCorrectionTest.java @@ -84,7 +84,6 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import org.junit.Rule; @@ -818,8 +817,8 @@ private JsonObject getCaseDetailsWithInvalidInitiationCodeAndCaseMarkerJsonObjec .add("initiationCode", INVALID_INITIATION_CODE) .add("caseMarkers", createArrayBuilder() - .add(JsonObjects.createObjectBuilder().add("markerTypeCode", VALID_CASE_MARKER_CODE).build()) - .add(JsonObjects.createObjectBuilder().add("markerTypeCode", INVALID_CASE_MARKER_CODE).build()) + .add(createObjectBuilder().add("markerTypeCode", VALID_CASE_MARKER_CODE).build()) + .add(createObjectBuilder().add("markerTypeCode", INVALID_CASE_MARKER_CODE).build()) .build()) .add("prosecutorCaseReference", PROSECUTOR_CASE_REFERENCE) .add("policeSystemId", POLICE_SYSTEM_ID) diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-listener/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/listener/ProsecutionReceivedListenerTest.java b/prosecutioncasefile-event/prosecutioncasefile-event-listener/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/listener/ProsecutionReceivedListenerTest.java index 0490d8c3..49e47e70 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-listener/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/listener/ProsecutionReceivedListenerTest.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-listener/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/listener/ProsecutionReceivedListenerTest.java @@ -5,8 +5,6 @@ import static java.util.Collections.singletonList; import static java.util.UUID.fromString; import static java.util.UUID.randomUUID; -import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; -import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.codehaus.groovy.runtime.InvokerHelper.asList; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.hasSize; @@ -21,6 +19,8 @@ import static org.mockito.Mockito.when; import static uk.gov.justice.cps.prosecutioncasefile.InitialHearing.initialHearing; import static uk.gov.justice.services.messaging.Envelope.envelopeFrom; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.test.utils.core.messaging.MetadataBuilderFactory.metadataWithDefaults; import static uk.gov.moj.cpp.prosecution.casefile.event.listener.converter.TestDataProvider.FIRST_NAME; import static uk.gov.moj.cpp.prosecution.casefile.event.listener.converter.TestDataProvider.LAST_NAME; @@ -43,7 +43,6 @@ import uk.gov.moj.cpp.json.schemas.prosecutioncasefile.events.DefendantValidationPassed; import uk.gov.moj.cpp.prosecution.casefile.domain.DefendantProblemsVO; import uk.gov.moj.cpp.prosecution.casefile.domain.ProsecutionWithReferenceData; -import uk.gov.moj.cpp.prosecution.casefile.domain.ReferenceDataVO; import uk.gov.moj.cpp.prosecution.casefile.event.CaseValidationFailed; import uk.gov.moj.cpp.prosecution.casefile.event.CcCaseReceived; import uk.gov.moj.cpp.prosecution.casefile.event.DefendantValidationFailed; @@ -81,6 +80,8 @@ import java.util.Set; import java.util.UUID; +import javax.json.JsonObject; + import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; @@ -89,9 +90,6 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import uk.gov.justice.services.messaging.JsonObjects; -import javax.json.JsonObject; - @ExtendWith(MockitoExtension.class) public class ProsecutionReceivedListenerTest { @@ -467,7 +465,7 @@ public void shouldUpdateSjpCaseValidationFailed() { .add("firstName", "FirstName") .add("lastName", "LastName") .add("offences", createArrayBuilder() - .add(JsonObjects.createObjectBuilder() + .add(createObjectBuilder() .add("id", offenceId.toString()) .add("description", "Duty not paid") .build())) diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CpsServeMaterialEventProcessor.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CpsServeMaterialEventProcessor.java index eef07894..c0260f30 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CpsServeMaterialEventProcessor.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/CpsServeMaterialEventProcessor.java @@ -6,8 +6,6 @@ import static java.util.UUID.fromString; import static java.util.UUID.nameUUIDFromBytes; import static java.util.stream.Collectors.toList; -import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; -import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static javax.json.JsonValue.NULL; import static org.apache.commons.collections.CollectionUtils.isNotEmpty; import static org.apache.commons.lang3.StringUtils.isNotEmpty; @@ -15,6 +13,8 @@ import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; import static uk.gov.justice.services.core.enveloper.Enveloper.envelop; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.ProblemValue.problemValue; import static uk.gov.moj.cpp.prosecution.casefile.validation.ValidationError.CASE_URN_NOT_FOUND; import static uk.gov.moj.cps.prosecutioncasefile.domain.event.CpsServeBcmSubmitted.cpsServeBcmSubmitted; @@ -73,7 +73,6 @@ import java.util.UUID; import javax.inject.Inject; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonArray; import javax.json.JsonArrayBuilder; import javax.json.JsonObject; @@ -502,7 +501,7 @@ private String createStringFromFormDataForPtph(PtphFormData ptphFormData) { ptphHeaderJson.add(CASE_URN, ptphHeader.getUrn()); //defendants - final JsonArrayBuilder defendantArrayBuilder = JsonObjects.createArrayBuilder(); + final JsonArrayBuilder defendantArrayBuilder = createArrayBuilder(); ptphFormData.getPtphFormdefendants().forEach(ptphFormdefendants -> { final JsonObjectBuilder defendant = createObjectBuilder(); defendant.add(ID, ptphFormdefendants.getId()); @@ -531,7 +530,7 @@ private String createStringFromFormDataForPtph(PtphFormData ptphFormData) { //Contacts final JsonObjectBuilder contacts = constructContacts(ptphFormData.getContacts()); - final JsonArrayBuilder defenceInformationArrayBuilder = JsonObjects.createArrayBuilder(); + final JsonArrayBuilder defenceInformationArrayBuilder = createArrayBuilder(); if (isNotEmpty(ptphFormData.getDefenceInformation())) { ptphFormData.getDefenceInformation().forEach(defenceInformation -> defenceInformationArrayBuilder.add(objectToJsonObjectConverter.convert(defenceInformation))); } @@ -649,7 +648,7 @@ private void sendCpsServePetSubmittedPublicEvent(final Envelope defendantArrayBuilder.add(createJsonObjectFromBcmDefendants(bcmDefendants))); return createObjectBuilder() .add(DEFENDANTS, defendantArrayBuilder.build()) @@ -734,7 +733,7 @@ private JsonObject createJsonObjectFromBcmDefendants(BcmDefendants bcmDefendants } private JsonArray createProsecutorOffences(List prosecutorOffencesList) { - final JsonArrayBuilder offencesArrayBuilder = JsonObjects.createArrayBuilder(); + final JsonArrayBuilder offencesArrayBuilder = createArrayBuilder(); prosecutorOffencesList.forEach(prosecutorOffences -> offencesArrayBuilder.add(createObjectBuilder() .add(DATE, DateUtil.convertToStringFromLocalDate(prosecutorOffences.getDate())) .add(OFFENCE_CODE, prosecutorOffences.getOffenceCode()) diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/PocaEventProcessor.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/PocaEventProcessor.java index 036a35ba..dd336948 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/PocaEventProcessor.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/PocaEventProcessor.java @@ -1,10 +1,10 @@ package uk.gov.moj.cpp.prosecution.casefile.event.processor; import static java.util.Objects.nonNull; -import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; import static uk.gov.justice.services.messaging.Envelope.metadataFrom; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import uk.gov.justice.core.courts.CourtApplication; import uk.gov.justice.core.courts.CourtApplicationParty; @@ -28,7 +28,6 @@ import java.util.UUID; import javax.inject.Inject; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; @@ -87,7 +86,7 @@ public void handleSubmitApplicationAccepted(final JsonEnvelope envelope) throws final CourtApplicationSubject courtApplicationSubject = CourtApplicationSubject.courtApplicationSubject().withCourtApplicationId(courtApplication.getId()).build(); - final JsonObject applicationMaterialCommandPayload = JsonObjects.createObjectBuilder() + final JsonObject applicationMaterialCommandPayload = createObjectBuilder() .add("applicationId", courtApplication.getId().toString()) .add("submissionId", UUID.randomUUID().toString()) .add("material", fileId) diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/AddMaterialToCase.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/AddMaterialToCase.java index 3597705e..641c73d1 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/AddMaterialToCase.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/AddMaterialToCase.java @@ -3,6 +3,7 @@ import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; import static uk.gov.justice.services.messaging.JsonEnvelope.metadataFrom; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.moj.cpp.prosecution.casefile.event.processor.utils.MetadataHelper.metadataFromString; import uk.gov.justice.services.core.annotation.FrameworkComponent; @@ -12,7 +13,6 @@ import javax.inject.Inject; import javax.inject.Named; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import org.activiti.engine.delegate.DelegateExecution; @@ -43,7 +43,7 @@ public void execute(final DelegateExecution execution) { final Metadata metadata = metadataFromString(metadataAsString); - final JsonObject payload = JsonObjects.createObjectBuilder() + final JsonObject payload = createObjectBuilder() .add("id", documentReference) .add("caseId", caseId) .add("materialId", materialId) diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingIdpcMaterialExpiredDelegate.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingIdpcMaterialExpiredDelegate.java index cf43d358..cd7897dc 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingIdpcMaterialExpiredDelegate.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/PendingIdpcMaterialExpiredDelegate.java @@ -4,6 +4,7 @@ import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; import static uk.gov.justice.services.messaging.JsonEnvelope.metadataFrom; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.moj.cpp.prosecution.casefile.event.processor.utils.MetadataHelper.metadataFromString; import uk.gov.justice.services.core.annotation.FrameworkComponent; @@ -16,7 +17,6 @@ import javax.inject.Inject; import javax.inject.Named; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import org.activiti.engine.delegate.DelegateExecution; @@ -38,7 +38,7 @@ public void execute(final DelegateExecution execution) { final UUID fileStoreId = fromString(execution.getProcessBusinessKey()); final UUID caseId = execution.getVariable("caseId", UUID.class); final Metadata metadata = metadataFromString(execution.getVariable("metadata", String.class)); - final JsonObject payload = JsonObjects.createObjectBuilder() + final JsonObject payload = createObjectBuilder() .add("caseId", caseId.toString()) .add("fileServiceId", fileStoreId.toString()) .build(); diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/UploadFile.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/UploadFile.java index 0d310a25..f735b1c2 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/UploadFile.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/activiti/delegates/UploadFile.java @@ -2,6 +2,7 @@ import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; import static uk.gov.justice.services.messaging.JsonEnvelope.metadataFrom; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.moj.cpp.prosecution.casefile.event.processor.utils.MetadataHelper.envelopeWithIdpcProcessId; import static uk.gov.moj.cpp.prosecution.casefile.event.processor.utils.MetadataHelper.metadataFromString; @@ -14,7 +15,6 @@ import javax.inject.Inject; import javax.inject.Named; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import org.activiti.engine.delegate.DelegateExecution; @@ -40,7 +40,7 @@ public void execute(final DelegateExecution execution) { final String metadataAsString = execution.getVariable("metadata", String.class); final Metadata originalMetadata = metadataFromString(metadataAsString); - final JsonObject uploadFileCommandPayload = JsonObjects.createObjectBuilder() + final JsonObject uploadFileCommandPayload = createObjectBuilder() .add("materialId", UUID.randomUUID().toString()) .add("fileServiceId", documentReference) .build(); diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/MaterialService.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/MaterialService.java index 05aa4779..0f61e4ff 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/MaterialService.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/MaterialService.java @@ -1,7 +1,14 @@ package uk.gov.moj.cpp.prosecution.casefile.event.processor.service; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import static java.util.UUID.fromString; +import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; +import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; +import static uk.gov.justice.services.messaging.JsonEnvelope.metadataFrom; +import static uk.gov.justice.services.messaging.JsonMetadata.ID; +import static uk.gov.justice.services.messaging.JsonMetadata.NAME; +import static uk.gov.justice.services.messaging.JsonMetadata.USER_ID; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; + import uk.gov.justice.services.core.annotation.ServiceComponent; import uk.gov.justice.services.core.enveloper.Enveloper; import uk.gov.justice.services.core.requester.Requester; @@ -10,19 +17,14 @@ import uk.gov.justice.services.messaging.JsonEnvelope; import uk.gov.justice.services.messaging.Metadata; +import java.util.UUID; + import javax.inject.Inject; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; -import java.util.UUID; -import static java.util.UUID.fromString; -import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR; -import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; -import static uk.gov.justice.services.messaging.JsonEnvelope.metadataFrom; -import static uk.gov.justice.services.messaging.JsonMetadata.ID; -import static uk.gov.justice.services.messaging.JsonMetadata.NAME; -import static uk.gov.justice.services.messaging.JsonMetadata.USER_ID; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class MaterialService { public static final String CONTEXT = "context"; @@ -49,7 +51,7 @@ public class MaterialService { public void uploadMaterial(final UUID fileServiceId, final UUID materialId, final Envelope envelope) { LOGGER.info("material being uploaded '{}' file service id '{}'", materialId, fileServiceId); final UUID userId = fromString(envelope.metadata().userId().orElseThrow(() -> new RuntimeException("UserId missing from event."))); - final JsonObject uploadMaterialPayload = JsonObjects.createObjectBuilder() + final JsonObject uploadMaterialPayload = createObjectBuilder() .add(FIELD_MATERIAL_ID, materialId.toString()) .add(FIELD_FILE_SERVICE_ID, fileServiceId.toString()) .build(); @@ -64,17 +66,17 @@ private static JsonEnvelope assembleEnvelopeWithPayloadAndMetaDetails(final Json } private static Metadata createMetadataWithProcessIdAndUserId(final String id, final String name, final String userId) { - return metadataFrom(JsonObjects.createObjectBuilder() + return metadataFrom(createObjectBuilder() .add(ID, id) .add(NAME, name) .add(SOURCE, ORIGINATOR_VALUE) - .add(CONTEXT, JsonObjects.createObjectBuilder() + .add(CONTEXT, createObjectBuilder() .add(USER_ID, userId)) .build()).build(); } private static JsonObject addMetadataToPayload(final JsonObject load, final Metadata metadata) { - final JsonObjectBuilder job = JsonObjects.createObjectBuilder(); + final JsonObjectBuilder job = createObjectBuilder(); load.entrySet().forEach(entry -> job.add(entry.getKey(), entry.getValue())); job.add(JsonEnvelope.METADATA, metadata.asJsonObject()); return job.build(); diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/MetadataHelper.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/MetadataHelper.java index c7c4136e..95cf7aca 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/MetadataHelper.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/main/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/MetadataHelper.java @@ -1,22 +1,23 @@ package uk.gov.moj.cpp.prosecution.casefile.event.processor.utils; +import static java.util.Optional.ofNullable; +import static uk.gov.justice.services.messaging.Envelope.metadataFrom; +import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createReader; + import uk.gov.justice.services.messaging.JsonEnvelope; import uk.gov.justice.services.messaging.JsonMetadata; import uk.gov.justice.services.messaging.JsonObjects; import uk.gov.justice.services.messaging.Metadata; -import uk.gov.justice.services.messaging.JsonObjects; -import javax.json.JsonObject; -import javax.json.JsonObjectBuilder; -import javax.json.JsonReader; import java.io.StringReader; import java.util.Optional; -import static java.util.Optional.ofNullable; -import static uk.gov.justice.services.messaging.Envelope.metadataFrom; -import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; -import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; +import javax.json.JsonObject; +import javax.json.JsonObjectBuilder; +import javax.json.JsonReader; public class MetadataHelper { @@ -37,7 +38,7 @@ public static String metadataToString(final Metadata metadata) { } private static JsonObject readJson(final String json) { - try (final JsonReader jsonReader = JsonObjects.createReader(new StringReader(json))) { + try (final JsonReader jsonReader = createReader(new StringReader(json))) { return jsonReader.readObject(); } } diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ProsecutionReceivedProcessorTest.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ProsecutionReceivedProcessorTest.java index c02865b7..116662d0 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ProsecutionReceivedProcessorTest.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/ProsecutionReceivedProcessorTest.java @@ -13,6 +13,7 @@ import static org.mockito.Mockito.when; import static uk.gov.justice.services.messaging.Envelope.envelopeFrom; import static uk.gov.justice.services.messaging.Envelope.metadataBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createReader; import static uk.gov.justice.services.test.utils.core.messaging.MetadataBuilderFactory.metadataWithRandomUUIDAndName; import static uk.gov.moj.cpp.prosecution.casefile.event.CcCaseReceived.ccCaseReceived; import static uk.gov.moj.cpp.prosecution.casefile.event.CcCaseReceivedWithWarnings.ccCaseReceivedWithWarnings; @@ -53,7 +54,6 @@ import java.time.ZonedDateTime; import java.util.List; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonReader; @@ -157,7 +157,7 @@ private List setUpTestEnvelopeListForCCCase(final CcCaseReceived ccCas final String initiateCourtProceedingsJson = readResourcesFile("initiate-court-proceedings.json"); - final JsonReader reader = JsonObjects.createReader(new StringReader(initiateCourtProceedingsJson)); + final JsonReader reader = createReader(new StringReader(initiateCourtProceedingsJson)); final JsonObject jsonObject = reader.readObject(); reader.close(); when(objectToJsonObjectConverter.convert(any())).thenReturn(jsonObject); @@ -241,7 +241,7 @@ private JsonEnvelope getJsonEnvelope(final String prosecutorDefendantReference, final String initiateCourtProceedingsJson = readResourcesFile("initiate-court-proceedings.json"); - final JsonReader reader = JsonObjects.createReader(new StringReader(initiateCourtProceedingsJson)); + final JsonReader reader = createReader(new StringReader(initiateCourtProceedingsJson)); final JsonObject jsonObject = reader.readObject(); reader.close(); when(objectToJsonObjectConverter.convert(any())).thenReturn(jsonObject); diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/listener/external/sjp/CaseDocumentUploadedListenerTest.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/listener/external/sjp/CaseDocumentUploadedListenerTest.java index 3df4df58..5f584a39 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/listener/external/sjp/CaseDocumentUploadedListenerTest.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/listener/external/sjp/CaseDocumentUploadedListenerTest.java @@ -2,6 +2,7 @@ import static org.mockito.Mockito.verify; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.test.utils.core.enveloper.EnveloperFactory.createEnveloper; import static uk.gov.justice.services.test.utils.core.messaging.MetadataBuilderFactory.metadataWithRandomUUID; @@ -10,8 +11,6 @@ import uk.gov.justice.services.messaging.JsonEnvelope; import uk.gov.justice.services.messaging.spi.DefaultEnvelope; -import uk.gov.justice.services.messaging.JsonObjects; - import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; @@ -39,7 +38,7 @@ public class CaseDocumentUploadedListenerTest { public void shouldProcessRecordUploadCaseDocument() { final JsonEnvelope event = envelopeFrom(metadataWithRandomUUID("prosecutioncasefile.command.record-upload-case-document"), - JsonObjects.createObjectBuilder().build()); + createObjectBuilder().build()); testObj.handleSjpCaseDocumentUploaded(event); diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/MaterialServiceTest.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/MaterialServiceTest.java new file mode 100644 index 00000000..4c080bed --- /dev/null +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/service/MaterialServiceTest.java @@ -0,0 +1,58 @@ +package uk.gov.moj.cpp.prosecution.casefile.event.processor.service; + +import static java.util.Optional.of; +import static java.util.UUID.randomUUID; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import uk.gov.justice.services.core.enveloper.Enveloper; +import uk.gov.justice.services.core.requester.Requester; +import uk.gov.justice.services.core.sender.Sender; +import uk.gov.justice.services.messaging.Envelope; +import uk.gov.justice.services.messaging.JsonEnvelope; +import uk.gov.justice.services.messaging.Metadata; + +import java.util.UUID; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +public class MaterialServiceTest { + + @Mock + private Sender sender; + + @Mock + private Requester requester; + + @Mock + private Enveloper enveloper; + + @Mock + private Envelope envelope; + + @Mock + private Metadata metadata; + + @InjectMocks + private MaterialService materialService; + + @Test + public void shouldUploadMaterial() { + final UUID fileServiceId = randomUUID(); + final UUID materialId = randomUUID(); + final UUID userId = randomUUID(); + + when(envelope.metadata()).thenReturn(metadata); + when(metadata.userId()).thenReturn(of(userId.toString())); + + materialService.uploadMaterial(fileServiceId, materialId, envelope); + + verify(sender).send(any(JsonEnvelope.class)); + } +} \ No newline at end of file diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/FileUtil.java b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/FileUtil.java index 24243b74..7e9ba928 100644 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/FileUtil.java +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/src/test/java/uk/gov/moj/cpp/prosecution/casefile/event/processor/utils/FileUtil.java @@ -4,11 +4,11 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.IsNull.notNullValue; import static org.junit.jupiter.api.Assertions.fail; +import static uk.gov.justice.services.messaging.JsonObjects.createReader; import java.io.InputStream; import java.io.StringReader; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonReader; @@ -34,7 +34,7 @@ public static String getPayload(final String path) { public static JsonObject jsonFromString(String jsonObjectStr) { - JsonReader jsonReader = JsonObjects.createReader(new StringReader(jsonObjectStr)); + JsonReader jsonReader = createReader(new StringReader(jsonObjectStr)); JsonObject object = jsonReader.readObject(); jsonReader.close(); diff --git a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/ActivitiHelper.java b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/ActivitiHelper.java index 938fe434..e62f8375 100644 --- a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/ActivitiHelper.java +++ b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/ActivitiHelper.java @@ -3,10 +3,11 @@ import static com.jayway.awaitility.Awaitility.await; import static com.jayway.jsonpath.matchers.JsonPathMatchers.withJsonPath; import static java.util.Optional.empty; -import static uk.gov.justice.services.messaging.JsonObjects.createReader; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.Matchers.not; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createReader; import static uk.gov.justice.services.test.utils.core.http.BaseUriProvider.getBaseUri; import static uk.gov.justice.services.test.utils.core.matchers.JsonValueIsJsonMatcher.isJson; @@ -17,7 +18,6 @@ import java.util.Objects; import java.util.Optional; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonValue; import javax.ws.rs.client.Entity; @@ -88,7 +88,7 @@ private static JsonObject getTimerJobs(final String processInstanceId) { private static void executeJob(final String jobId) { final String url = ACTIVITI_BASE_PATH + "management/jobs/" + jobId; - sendPostRequest(url, JsonObjects.createObjectBuilder().add("action", "execute").build()); + sendPostRequest(url, createObjectBuilder().add("action", "execute").build()); } private static JsonObject runQuery(final String url) { diff --git a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/AddMaterialHelper.java b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/AddMaterialHelper.java index 4a3dda1a..e2cae619 100644 --- a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/AddMaterialHelper.java +++ b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/helper/AddMaterialHelper.java @@ -7,7 +7,7 @@ import static com.jayway.awaitility.Awaitility.await; import static java.lang.ClassLoader.getSystemResourceAsStream; import static java.lang.String.format; -import static uk.gov.justice.services.test.utils.core.messaging.JsonObjects.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.moj.cpp.prosecution.casefile.helper.EventSelector.EVENT_SELECTOR_MATERIAL_ADDED; import static uk.gov.moj.cpp.prosecution.casefile.helper.EventSelector.EVENT_SELECTOR_MATERIAL_ADDED_V2; import static uk.gov.moj.cpp.prosecution.casefile.helper.EventSelector.EVENT_SELECTOR_MATERIAL_ADDED_WITH_WARNINGS; @@ -38,7 +38,6 @@ import java.util.UUID; import java.util.concurrent.TimeUnit; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import com.jayway.awaitility.Awaitility; @@ -81,7 +80,7 @@ public void addMaterial(final UUID caseId, final UUID submissionId, final JsonOb makePostCall(getWriteUrl(format("/cases/%s/material", caseId.toString())), "application/vnd.prosecutioncasefile.add-material+json", createObjectBuilder(addMaterialRequest) - .add(JsonEnvelope.METADATA, JsonObjects.createObjectBuilder() + .add(JsonEnvelope.METADATA, createObjectBuilder() .add("id", UUID.randomUUID().toString()) .add("name", "prosecutioncasefile.add-material") .add("submissionId", submissionId.toString()) @@ -99,7 +98,7 @@ public void addMaterials(final UUID caseId, final UUID submissionId, final JsonO makePostCall(getWriteUrl(format("/cases/%s/material", caseId.toString())), "application/vnd.prosecutioncasefile.add-materials+json", createObjectBuilder(addMaterialRequest) - .add(JsonEnvelope.METADATA, JsonObjects.createObjectBuilder() + .add(JsonEnvelope.METADATA, createObjectBuilder() .add("id", UUID.randomUUID().toString()) .add("name", "prosecutioncasefile.add-materials") .add("submissionId", submissionId.toString()) @@ -114,7 +113,7 @@ public void addMaterialV2(final UUID caseId, final UUID submissionId, final Json makePostCall(getWriteUrl(format("/cases/%s/material", caseId)), "application/vnd.prosecutioncasefile.add-material-v2+json", createObjectBuilder(addMaterialRequest) - .add(JsonEnvelope.METADATA, JsonObjects.createObjectBuilder() + .add(JsonEnvelope.METADATA, createObjectBuilder() .add("id", UUID.randomUUID().toString()) .add("name", "prosecutioncasefile.add-material-v2") .add("submissionId", submissionId.toString()) @@ -129,7 +128,7 @@ public void addApplicationMaterialV2(final UUID applicationId, final UUID submis makePostCall(getWriteUrl(format("/applications/%s/material", applicationId.toString())), "application/vnd.prosecutioncasefile.add-application-material-v2+json", createObjectBuilder(addMaterialRequest) - .add(JsonEnvelope.METADATA, JsonObjects.createObjectBuilder() + .add(JsonEnvelope.METADATA, createObjectBuilder() .add("id", UUID.randomUUID().toString()) .add("name", "prosecutioncasefile.add-application-material-v2") .add("submissionId", submissionId.toString()) @@ -144,7 +143,7 @@ public void addCpsMaterial(final UUID caseId, final UUID submissionId, final Jso makePostCall(getWriteUrl(format("/cases/%s/material", caseId.toString())), "application/vnd.prosecutioncasefile.add-cps-material+json", createObjectBuilder(addCpsMaterialRequest) - .add(JsonEnvelope.METADATA, JsonObjects.createObjectBuilder() + .add(JsonEnvelope.METADATA, createObjectBuilder() .add("id", UUID.randomUUID().toString()) .add("name", "prosecutioncasefile.add-cps-material") .add("submissionId", submissionId.toString()) diff --git a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/AddApplicationMaterialIT.java b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/AddApplicationMaterialIT.java index c5cb4222..97215674 100644 --- a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/AddApplicationMaterialIT.java +++ b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/AddApplicationMaterialIT.java @@ -7,7 +7,6 @@ import static com.jayway.jsonpath.matchers.JsonPathMatchers.withJsonPath; import static com.jayway.jsonpath.matchers.JsonPathMatchers.withoutJsonPath; import static java.util.UUID.randomUUID; -import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; @@ -16,6 +15,8 @@ import static uk.gov.justice.services.integrationtest.utils.jms.JmsMessageConsumerClientProvider.newPublicJmsMessageConsumerClientProvider; import static uk.gov.justice.services.messaging.Envelope.metadataBuilder; import static uk.gov.justice.services.messaging.Envelope.metadataFrom; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createReader; import static uk.gov.justice.services.test.utils.core.matchers.JsonEnvelopeMatcher.jsonEnvelope; import static uk.gov.justice.services.test.utils.core.matchers.JsonEnvelopeMetadataMatcher.metadata; import static uk.gov.justice.services.test.utils.core.matchers.JsonEnvelopePayloadMatcher.payload; @@ -47,7 +48,6 @@ import java.util.Random; import java.util.UUID; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonReader; @@ -124,7 +124,7 @@ public void shouldUploadToMaterialContextAndSendToProgressionWhenMaterialAddedEv addMaterialHelper.verifyAddCourtDocumentCalled(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } diff --git a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/AddMaterialIT.java b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/AddMaterialIT.java index 92b28b43..7b91db77 100644 --- a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/AddMaterialIT.java +++ b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/AddMaterialIT.java @@ -9,7 +9,6 @@ import static com.jayway.jsonpath.matchers.JsonPathMatchers.isJson; import static com.jayway.jsonpath.matchers.JsonPathMatchers.withJsonPath; import static java.util.UUID.randomUUID; -import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; @@ -19,6 +18,8 @@ import static uk.gov.justice.services.integrationtest.utils.jms.JmsMessageConsumerClientProvider.newPublicJmsMessageConsumerClientProvider; import static uk.gov.justice.services.messaging.Envelope.metadataBuilder; import static uk.gov.justice.services.messaging.Envelope.metadataFrom; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createReader; import static uk.gov.justice.services.test.utils.core.matchers.JsonEnvelopeMatcher.jsonEnvelope; import static uk.gov.justice.services.test.utils.core.matchers.JsonEnvelopeMetadataMatcher.metadata; import static uk.gov.justice.services.test.utils.core.matchers.JsonEnvelopePayloadMatcher.payload; @@ -48,8 +49,8 @@ import static uk.gov.moj.cpp.prosecution.casefile.stub.ProgressionStub.stubForAddCourtDocument; import static uk.gov.moj.cpp.prosecution.casefile.stub.ReferenceDataStub.stubGetCaseMarkersWithCode; import static uk.gov.moj.cpp.prosecution.casefile.stub.ReferenceDataStub.stubGetDocumentsTypeAccess; -import static uk.gov.moj.cpp.prosecution.casefile.stub.ReferenceDataStub.stubGetReferenceDataBySectionCode; import static uk.gov.moj.cpp.prosecution.casefile.stub.ReferenceDataStub.stubGetParentBundleSection; +import static uk.gov.moj.cpp.prosecution.casefile.stub.ReferenceDataStub.stubGetReferenceDataBySectionCode; import static uk.gov.moj.cpp.prosecution.casefile.stub.TestUtils.readFile; import uk.gov.justice.services.common.converter.LocalDates; @@ -77,7 +78,6 @@ import java.util.UUID; import java.util.concurrent.TimeUnit; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; import javax.json.JsonReader; @@ -180,7 +180,7 @@ public void shouldUploadToMaterialContextAndSendToProgressionWhenMaterialAddedEv addMaterialHelper.verifyAddCourtDocumentCalled(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } @@ -277,7 +277,7 @@ public void shouldUploadToMaterialContextAndSendToProgressionWhenMaterialAddedEv addMaterialHelper.verifyAddCourtDocumentCalled(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } @@ -862,7 +862,7 @@ public void shouldUploadDocumentToCCCaseWhenSJPCaseIsReferredForCourtHearing() t addMaterialHelper.verifyAddCourtDocumentCalled(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } @@ -1130,7 +1130,7 @@ public void shouldUploadToMaterialContextViaAddCpsCommand() throws Exception { verifyInMessagingQueueForDefendantIDPCUpdated(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } @@ -1520,7 +1520,7 @@ public void shouldUploadToMaterialContextAndSendToProgressionWhenMaterialAddedEv addMaterialHelper.verifyAddCourtDocumentCalled(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } @@ -1623,7 +1623,7 @@ public void shouldUploadToMaterialContextAndSendToProgressionWhenMaterialAddedEv addMaterialHelper.verifyAddCourtDocumentCalled(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } @@ -1713,7 +1713,7 @@ public void shouldUploadToMaterialContextAndSendToProgressionWhenMaterialAddedEv addMaterialHelper.verifyAddCourtDocumentCalled(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } @@ -2108,7 +2108,7 @@ private void verifyUploadToMaterialAndSendToProgressionForCaseLevelDocument(fina addMaterialHelper.verifyAddCourtDocumentCalled(materialId); final JsonObject courtDocumentPayload; - try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { + try (JsonReader jsonReader = createReader(new StringReader(getLastLoggedRequest(ADD_COURT_DOCUMENT_COMMAND + materialId)))) { courtDocumentPayload = jsonReader.readObject(); } diff --git a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/InitiateSjpProsecutionIT.java b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/InitiateSjpProsecutionIT.java index 5ec64810..71e18441 100644 --- a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/InitiateSjpProsecutionIT.java +++ b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/it/InitiateSjpProsecutionIT.java @@ -19,6 +19,7 @@ import static org.skyscreamer.jsonassert.JSONCompareMode.NON_EXTENSIBLE; import static org.skyscreamer.jsonassert.JSONCompareMode.STRICT; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilderWithFilter; import static uk.gov.justice.services.test.utils.core.http.RestPoller.poll; @@ -77,7 +78,6 @@ import java.util.UUID; import java.util.stream.Stream; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonArray; import javax.json.JsonArrayBuilder; import javax.json.JsonObject; @@ -641,7 +641,7 @@ public void updateOffenceCodeForSjpProsecution() { assertThat(prosecutionReceivedEvent.get().metadata().name(), equalTo(EVENT_SELECTOR_SJP_PROSECUTION_RECEIVED)); - final JsonObject updateOffenceCodePayload = JsonObjects.createObjectBuilder() + final JsonObject updateOffenceCodePayload = createObjectBuilder() .add("offenceCode", offenceCode2) .build(); @@ -1121,18 +1121,18 @@ public void shouldRaiseProsecutionCaseUnsupportedWhenMultipleDefendantsForSPI() } private JsonArray getProblem(final Problem... problems) { - final JsonArrayBuilder arrayBuilder = JsonObjects.createArrayBuilder(); + final JsonArrayBuilder arrayBuilder = createArrayBuilder(); for (final Problem problem : problems) { - final JsonArrayBuilder valuesBuilder = JsonObjects.createArrayBuilder(); + final JsonArrayBuilder valuesBuilder = createArrayBuilder(); for (final ProblemValue problemValue : problem.getValues()) { - JsonObjectBuilder problemValueJson = JsonObjects.createObjectBuilder(); + JsonObjectBuilder problemValueJson = createObjectBuilder(); if (problemValue.getId() != null) { problemValueJson.add("id", problemValue.getId()); } problemValueJson.add("key", problemValue.getKey()).add("value", problemValue.getValue()); valuesBuilder.add(problemValueJson); } - arrayBuilder.add(JsonObjects.createObjectBuilder().add("code", problem.getCode()).add("values", valuesBuilder)); + arrayBuilder.add(createObjectBuilder().add("code", problem.getCode()).add("values", valuesBuilder)); } return arrayBuilder.build(); } diff --git a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/stub/IdMapperStub.java b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/stub/IdMapperStub.java index b45a745d..a8d2b888 100644 --- a/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/stub/IdMapperStub.java +++ b/prosecutioncasefile-integration-test/src/test/java/uk/gov/moj/cpp/prosecution/casefile/stub/IdMapperStub.java @@ -7,12 +7,12 @@ import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching; import static javax.ws.rs.core.Response.Status.OK; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.moj.cpp.prosecution.casefile.helper.WiremockTestHelper.waitForStubToBeReady; import java.time.ZonedDateTime; import java.util.UUID; -import uk.gov.justice.services.messaging.JsonObjects; import javax.ws.rs.core.Response; import org.apache.http.HttpHeaders; @@ -21,7 +21,7 @@ public class IdMapperStub { public static void stubGetFromIdMapper(final String sourceType, final String sourceId, final String targetType, final String targetId) { - final String responseBody = JsonObjects.createObjectBuilder() + final String responseBody = createObjectBuilder() .add("mappingId", UUID.randomUUID().toString()) .add("sourceId", sourceId) .add("sourceType", sourceType) @@ -51,7 +51,7 @@ public static void stubForIdMapper(final Response.Status status, final UUID targ .withHeader(HttpHeaders.CONTENT_TYPE, equalTo(mime)) .willReturn(aResponse() .withStatus(OK.getStatusCode()) - .withBody(JsonObjects.createObjectBuilder() + .withBody(createObjectBuilder() .add("id", UUID.randomUUID().toString()) .build().toString()) ) diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/CaseDetailConverterTest.java b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/CaseDetailConverterTest.java index a4dde541..78e9658e 100644 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/CaseDetailConverterTest.java +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/src/test/java/uk/gov/moj/cpp/prosecution/casefile/query/api/service/CaseDetailConverterTest.java @@ -6,6 +6,7 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.Mockito.when; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.test.utils.core.messaging.JsonEnvelopeBuilder.envelope; import static uk.gov.justice.services.test.utils.core.messaging.MetadataBuilderFactory.metadataWithRandomUUID; @@ -21,7 +22,6 @@ import java.util.List; import java.util.UUID; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import org.junit.jupiter.api.Test; @@ -55,7 +55,7 @@ public class CaseDetailConverterTest { private JsonObject buildOffenceReferenceData() { - return JsonObjects.createObjectBuilder() + return createObjectBuilder() .add("modeOfTrial", "SNONIMP1") .build(); } diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-view/src/main/java/uk/gov/moj/cpp/prosecutioncasefile/query/view/service/BusinessErrorDetailsService.java b/prosecutioncasefile-query/prosecutioncasefile-query-view/src/main/java/uk/gov/moj/cpp/prosecutioncasefile/query/view/service/BusinessErrorDetailsService.java index 9f6efc9c..717da1ec 100644 --- a/prosecutioncasefile-query/prosecutioncasefile-query-view/src/main/java/uk/gov/moj/cpp/prosecutioncasefile/query/view/service/BusinessErrorDetailsService.java +++ b/prosecutioncasefile-query/prosecutioncasefile-query-view/src/main/java/uk/gov/moj/cpp/prosecutioncasefile/query/view/service/BusinessErrorDetailsService.java @@ -5,6 +5,7 @@ import static java.util.Comparator.naturalOrder; import static java.util.Comparator.nullsLast; import static java.util.stream.Collectors.toList; +import static uk.gov.justice.services.messaging.JsonObjects.createReader; import uk.gov.justice.services.common.converter.ObjectToJsonObjectConverter; import uk.gov.moj.cpp.prosecutioncasefile.mapping.FilterParameter; @@ -34,7 +35,6 @@ import java.util.stream.Collectors; import javax.inject.Inject; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonReader; @SuppressWarnings({"squid:S1612"}) @@ -103,7 +103,7 @@ private ErrorCaseDetails getErrorCaseDetails(final UUID caseId) { final List errorCaseDetails = businessValidationErrorCaseDetailsRepository.findByCaseId(caseId); ErrorCaseDetails errorCaseDetailsJson = null; if (errorCaseDetails != null && !errorCaseDetails.isEmpty()) { - try (JsonReader jsonReader = JsonObjects.createReader(new StringReader(errorCaseDetails.get(0).getCaseDetails()))) { + try (JsonReader jsonReader = createReader(new StringReader(errorCaseDetails.get(0).getCaseDetails()))) { errorCaseDetailsJson = new ErrorCaseDetails(jsonReader.readObject().getJsonArray("defendants")); } } diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-view/src/test/java/uk/gov/moj/cpp/prosecutioncasefile/query/view/service/BusinessErrorDetailsServiceTest.java b/prosecutioncasefile-query/prosecutioncasefile-query-view/src/test/java/uk/gov/moj/cpp/prosecutioncasefile/query/view/service/BusinessErrorDetailsServiceTest.java index 1745764c..bfcc3a4c 100644 --- a/prosecutioncasefile-query/prosecutioncasefile-query-view/src/test/java/uk/gov/moj/cpp/prosecutioncasefile/query/view/service/BusinessErrorDetailsServiceTest.java +++ b/prosecutioncasefile-query/prosecutioncasefile-query-view/src/test/java/uk/gov/moj/cpp/prosecutioncasefile/query/view/service/BusinessErrorDetailsServiceTest.java @@ -33,6 +33,7 @@ import static uk.gov.moj.cpp.prosecutioncasefile.query.view.utils.TestUtils.newBusinessValidationErrorSummary; import uk.gov.moj.cpp.prosecutioncasefile.mapping.FilterParameter; +import uk.gov.moj.cpp.prosecutioncasefile.persistence.entity.BusinessValidationErrorCaseDetails; import uk.gov.moj.cpp.prosecutioncasefile.persistence.entity.BusinessValidationErrorDetails; import uk.gov.moj.cpp.prosecutioncasefile.persistence.entity.BusinessValidationErrorSummary; import uk.gov.moj.cpp.prosecutioncasefile.persistence.pagination.PaginationParameter; @@ -250,6 +251,22 @@ public void shouldFindAllBusinessErrors() { verify(businessValidationErrorRepository).fetchAllCaseErrorDetailsByCaseIds(caseIds, paginationParameter); } + @Test + public void shouldFindAllErrorsByCaseIdWithPopulatedCaseDetails() { + final BusinessValidationErrorCaseDetails caseDetails = new BusinessValidationErrorCaseDetails(); + caseDetails.setCaseDetails("{\"defendants\": []}"); + + when(businessValidationErrorRepository.findByCaseId(CASE_ID)) + .thenReturn(asList(createCaseLevelError())); + when(businessValidationErrorCaseDetailsRepository.findByCaseId(CASE_ID)) + .thenReturn(asList(caseDetails)); + + final List result = businessErrorDetailsService.findAllErrorsByCaseId(CASE_ID); + + assertThat(result, notNullValue()); + assertThat(result.size(), is(1)); + } + @Test public void shouldReturnEmptyPaginationResult() { final List businessValidationErrorSummaryList = new ArrayList<>(); diff --git a/prosecutioncasefile-refdata/src/test/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceTest.java b/prosecutioncasefile-refdata/src/test/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceTest.java index 25aa0848..e998fbdd 100644 --- a/prosecutioncasefile-refdata/src/test/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceTest.java +++ b/prosecutioncasefile-refdata/src/test/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceTest.java @@ -2,8 +2,6 @@ import static com.jayway.jsonassert.JsonAssert.with; import static java.util.UUID.randomUUID; -import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; -import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.nullValue; @@ -14,12 +12,13 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static uk.gov.justice.services.messaging.spi.DefaultJsonMetadata.metadataBuilder; import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Offence.offence; import static uk.gov.moj.cpp.prosecution.casefile.service.ReferenceDataQueryServiceTestHelper.buildCommandWith; import static uk.gov.moj.cpp.prosecution.casefile.service.ReferenceDataQueryServiceTestHelper.buildCourtLocations; import static uk.gov.moj.cpp.prosecution.casefile.service.ReferenceDataQueryServiceTestHelper.buildHearingTypes; -//import static uk.gov.moj.cpp.prosecution.casefile.service.ReferenceDataQueryServiceTestHelper.buildLjaDetails; import static uk.gov.moj.cpp.prosecution.casefile.service.ReferenceDataQueryServiceTestHelper.buildOrganisationUnitWithCourtroom; import static uk.gov.moj.cpp.prosecution.casefile.service.ReferenceDataQueryServiceTestHelper.buildSelfDefinedInformationEthnicity; import static uk.gov.moj.cpp.prosecution.casefile.service.ReferenceDataQueryServiceTestHelper.buildVehicleCodes; @@ -75,7 +74,6 @@ import java.util.Optional; import java.util.UUID; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; @@ -477,23 +475,21 @@ public void shouldReturnInitiationCodesRefData() { } private JsonObject getMockReferenceDataInitiationCodes() { - return JsonObjects.createObjectBuilder().add("initiationTypes", - JsonObjects.createArrayBuilder() - .add( - JsonObjects.createObjectBuilder() + return createObjectBuilder().add("initiationTypes", + createArrayBuilder() + .add(createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add(SEQUENCE, 10) .add("code", "AA") .add(VALID_FROM, "2019-03-11") .build()) - .add( - JsonObjects.createObjectBuilder() + .add(createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add(SEQUENCE, 20) .add("code", "BB") .add(VALID_FROM, "2019-03-01") .build()) - .build()) + .build()) .build(); } @@ -533,7 +529,7 @@ public void shouldReturnNspProsecutorsRefData() { } private JsonObject getMockReferenceDataProsecutors() { - return JsonObjects.createObjectBuilder() + return createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add("sequenceNumber", 10) .add("fullName", "fullName") diff --git a/prosecutioncasefile-refdata/src/test/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceTestHelper.java b/prosecutioncasefile-refdata/src/test/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceTestHelper.java index db9cda0b..679203e0 100644 --- a/prosecutioncasefile-refdata/src/test/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceTestHelper.java +++ b/prosecutioncasefile-refdata/src/test/java/uk/gov/moj/cpp/prosecution/casefile/service/ReferenceDataQueryServiceTestHelper.java @@ -2,22 +2,17 @@ import static java.util.Optional.ofNullable; import static java.util.UUID.randomUUID; +import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; -import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; import static uk.gov.justice.services.messaging.spi.DefaultJsonMetadata.metadataBuilder; import static uk.gov.justice.services.test.utils.core.messaging.JsonEnvelopeBuilder.envelope; -import uk.gov.justice.core.courts.LjaDetails; -import uk.gov.justice.hearing.courts.referencedata.EnforcementArea; import uk.gov.justice.services.messaging.Envelope; import uk.gov.justice.services.messaging.JsonEnvelope; import java.util.UUID; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonArrayBuilder; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; @@ -84,10 +79,9 @@ public class ReferenceDataQueryServiceTestHelper { public static JsonObject getMockReferenceDataCountryNationalities() { - return JsonObjects.createObjectBuilder().add("countryNationality", - JsonObjects.createArrayBuilder() - .add( - JsonObjects.createObjectBuilder() + return createObjectBuilder().add("countryNationality", + createArrayBuilder() + .add(createObjectBuilder() .add("id", "22ef7a73-df50-4349-8c72-ca3b9ace6363") .add("cjseCode", 0) .add("isoCode", "GBR") @@ -95,8 +89,7 @@ public static JsonObject getMockReferenceDataCountryNationalities() { .add("countryName", "United Kingdom") .add("nationality", "British") .build()) - .add( - JsonObjects.createObjectBuilder() + .add(createObjectBuilder() .add("id", "05ad4861-7927-437e-8df1-32b4128e369f") .add("cjseCode", 0) .add("isoCode", "FRA") @@ -104,8 +97,7 @@ public static JsonObject getMockReferenceDataCountryNationalities() { .add("countryName", "France") .add("nationality", "French") .build()) - .add( - JsonObjects.createObjectBuilder() + .add(createObjectBuilder() .add("id", "ca2438fd-2eba-4c1b-967d-3fa7c46f24d4") .add("cjseCode", 3) .add("isoCode", "ITA") @@ -114,157 +106,144 @@ public static JsonObject getMockReferenceDataCountryNationalities() { .add("nationality", "Italian") .build()) - .build()) + .build()) .build(); } public static JsonObject getMockReferenceDataOffenceDateCodes() { - return JsonObjects.createObjectBuilder().add("offenceDateCodes", - JsonObjects.createArrayBuilder() - .add( - JsonObjects.createObjectBuilder() + return createObjectBuilder().add("offenceDateCodes", + createArrayBuilder() + .add(createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add("seqNum", 10) .add("dateCode", "1") .add("dateCodeDescription", "on or in") .add(VALID_FROM, "2019-04-01") .build()) - .add( - JsonObjects.createObjectBuilder() + .add(createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add("seqNum", 20) .add("dateCode", "2") .add("dateCodeDescription", "before") .add(VALID_FROM, "2019-04-01") .build()) - .build()) + .build()) .build(); } public static JsonObject getMockReferenceDataOffenderCodes() { - return JsonObjects.createObjectBuilder().add("offenderCodes", - JsonObjects.createArrayBuilder() - .add( - JsonObjects.createObjectBuilder() + return createObjectBuilder().add("offenderCodes", + createArrayBuilder() + .add(createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add("seqNo", 10) .add("code", "1") .add("description", "on or in") .add(VALID_FROM, "2019-04-01") .build()) - .add( - JsonObjects.createObjectBuilder() + .add(createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add("seqNo", 20) .add("code", "2") .add("description", "before") .add(VALID_FROM, "2019-04-01") .build()) - .build()) + .build()) .build(); } public static JsonObject getMockReferenceDataSummonsCodes() { - return JsonObjects.createObjectBuilder().add("summonsCodes", - JsonObjects.createArrayBuilder() - .add( - JsonObjects.createObjectBuilder() + return createObjectBuilder().add("summonsCodes", + createArrayBuilder() + .add(createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add(SEQ_NO, 10) .add("summonsCode", "A") .add("summonsCodeDescription", "Application / Complaint") .add(VALID_FROM, "2019-03-01") .build()) - .add( - JsonObjects.createObjectBuilder() + .add(createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add(SEQ_NO, 20) .add("summonsCode", "B") .add("summonsCodeDescription", "Breach offences") .add(VALID_FROM, "2019-03-01") .build()) - .build()) + .build()) .build(); } public static JsonObject getMockReferenceDataDocumentsTypeAccess() { - JsonArrayBuilder autorArray = JsonObjects.createArrayBuilder(); - JsonObjectBuilder autorObject = JsonObjects.createObjectBuilder(); - - JsonObjectBuilder rbacObject = JsonObjects.createObjectBuilder(); + JsonArrayBuilder autorArray = createArrayBuilder(); + JsonObjectBuilder autorObject = createObjectBuilder(); - - - JsonObjectBuilder readUserGroupsCppGroupObject = JsonObjects.createObjectBuilder(); + JsonObjectBuilder readUserGroupsCppGroupObject = createObjectBuilder(); readUserGroupsCppGroupObject - .add("id","ff9fb2c8-2738-4d77-87e5-56b5781b4113") + .add("id", "ff9fb2c8-2738-4d77-87e5-56b5781b4113") .add("groupName", "Legal Advisors"); - JsonObjectBuilder uploadUserGroupsCppGroupObject = JsonObjects.createObjectBuilder(); + JsonObjectBuilder uploadUserGroupsCppGroupObject = createObjectBuilder(); uploadUserGroupsCppGroupObject - .add("id","ff9fb2c8-2738-4d77-87e5-56b5781b4113") + .add("id", "ff9fb2c8-2738-4d77-87e5-56b5781b4113") .add("groupName", "Court Admin"); - JsonObjectBuilder downloadUserCppGroupObject = JsonObjects.createObjectBuilder(); + JsonObjectBuilder downloadUserCppGroupObject = createObjectBuilder(); downloadUserCppGroupObject - .add("id","ff9fb2c8-2738-4d77-87e5-56b5781b4113") + .add("id", "ff9fb2c8-2738-4d77-87e5-56b5781b4113") .add("groupName", "Crown Court Clerk"); - JsonObjectBuilder deleteUserGroupsCppGroupObject = JsonObjects.createObjectBuilder(); + JsonObjectBuilder deleteUserGroupsCppGroupObject = createObjectBuilder(); deleteUserGroupsCppGroupObject - .add("id","ff9fb2c8-2738-4d77-87e5-56b5781b4113") + .add("id", "ff9fb2c8-2738-4d77-87e5-56b5781b4113") .add("groupName", "Listing Officer"); - - - - JsonObjectBuilder readUserGroupsInnerObject = JsonObjects.createObjectBuilder(); + JsonObjectBuilder readUserGroupsInnerObject = createObjectBuilder(); readUserGroupsInnerObject - .add("cppGroup",readUserGroupsCppGroupObject) + .add("cppGroup", readUserGroupsCppGroupObject) .add("validFrom", "1983-05-13") .add("validTo", "2022-05-13"); - JsonObjectBuilder uploadUserGroupsInnerObject = JsonObjects.createObjectBuilder(); + JsonObjectBuilder uploadUserGroupsInnerObject = createObjectBuilder(); uploadUserGroupsInnerObject - .add("cppGroup",uploadUserGroupsCppGroupObject) + .add("cppGroup", uploadUserGroupsCppGroupObject) .add("validFrom", "1983-05-13") .add("validTo", "2022-05-13"); - JsonObjectBuilder downloadUserInnerObject = JsonObjects.createObjectBuilder(); + JsonObjectBuilder downloadUserInnerObject = createObjectBuilder(); downloadUserInnerObject - .add("cppGroup",downloadUserCppGroupObject) + .add("cppGroup", downloadUserCppGroupObject) .add("validFrom", "1983-05-13") .add("validTo", "2022-05-13"); - JsonObjectBuilder deleteUserGroupsInnerObject = JsonObjects.createObjectBuilder(); + JsonObjectBuilder deleteUserGroupsInnerObject = createObjectBuilder(); deleteUserGroupsInnerObject - .add("cppGroup",deleteUserGroupsCppGroupObject) + .add("cppGroup", deleteUserGroupsCppGroupObject) .add("validFrom", "1983-05-13") .add("validTo", "2022-05-13"); - JsonArrayBuilder readUserGroupsArray = JsonObjects.createArrayBuilder(); + JsonArrayBuilder readUserGroupsArray = createArrayBuilder(); readUserGroupsArray.add(readUserGroupsInnerObject); - JsonArrayBuilder uploadUserGroupsArray = JsonObjects.createArrayBuilder(); + JsonArrayBuilder uploadUserGroupsArray = createArrayBuilder(); uploadUserGroupsArray.add(uploadUserGroupsInnerObject); - JsonArrayBuilder downloadUserArray = JsonObjects.createArrayBuilder(); + JsonArrayBuilder downloadUserArray = createArrayBuilder(); downloadUserArray.add(downloadUserInnerObject); - JsonArrayBuilder deleteUserGroupsArray = JsonObjects.createArrayBuilder(); + JsonArrayBuilder deleteUserGroupsArray = createArrayBuilder(); deleteUserGroupsArray.add(deleteUserGroupsInnerObject); - JsonObjectBuilder readUserGroupsAutorObject = JsonObjects.createObjectBuilder(); - readUserGroupsAutorObject.add("readUserGroups",readUserGroupsArray); - readUserGroupsAutorObject.add("uploadUserGroups",uploadUserGroupsArray); - readUserGroupsAutorObject.add("downloadUserGroups",downloadUserArray); - readUserGroupsAutorObject.add("deleteUserGroups",deleteUserGroupsArray); + JsonObjectBuilder readUserGroupsAutorObject = createObjectBuilder(); + readUserGroupsAutorObject.add("readUserGroups", readUserGroupsArray); + readUserGroupsAutorObject.add("uploadUserGroups", uploadUserGroupsArray); + readUserGroupsAutorObject.add("downloadUserGroups", downloadUserArray); + readUserGroupsAutorObject.add("deleteUserGroups", deleteUserGroupsArray); autorObject.add("id", "460f6f7a-c002-11e8-a355-529269fb1459") .add("section", "CITN") @@ -272,44 +251,38 @@ public static JsonObject getMockReferenceDataDocumentsTypeAccess() { .add("actionRequired", false) .add("validFrom", "1983-05-13") .add("validTo", "2022-05-13") - .add("courtDocumentTypeRBAC",readUserGroupsAutorObject); + .add("courtDocumentTypeRBAC", readUserGroupsAutorObject); autorArray.add(autorObject); - return JsonObjects.createObjectBuilder().add("documentsTypeAccess", autorArray).build(); - + return createObjectBuilder().add("documentsTypeAccess", autorArray).build(); } - - public static JsonObject getMockReferenceDataAlcoholLevelMethods() { - return JsonObjects.createObjectBuilder().add("alcoholLevelMethods", - JsonObjects.createArrayBuilder() - .add( - JsonObjects.createObjectBuilder() + return createObjectBuilder().add("alcoholLevelMethods", + createArrayBuilder() + .add(createObjectBuilder() .add("id", "c4ca4238-a0b9-3382-8dcc-509a6f75849b") .add(SEQ_NO, 1) .add(METHOD_CODE, "A") .add(METHOD_DESCRIPTION, "Blood") .build()) - .add( - JsonObjects.createObjectBuilder() + .add(createObjectBuilder() .add("id", "c81e728d-9d4c-3f63-af06-7f89cc14862c") .add(SEQ_NO, 2) .add(METHOD_CODE, "B") .add(METHOD_DESCRIPTION, "Breath") .build()) - .add( - JsonObjects.createObjectBuilder() + .add(createObjectBuilder() .add("id", "eccbc87e-4b5c-32fe-a830-8fd9f2a7baf3") .add(SEQ_NO, 3) .add(METHOD_CODE, "C") .add(METHOD_DESCRIPTION, "Urine") .build()) - .build()) + .build()) .build(); } @@ -336,9 +309,8 @@ public static JsonObject getMockReferenceDataParentBundleSectionReferenceData(fi builder.add("unbundleFlag", true); - builder.add(VALID_FROM, validityDate); - builder .add(VALID_TO, validityDate); + builder.add(VALID_TO, validityDate); return builder.build(); @@ -346,10 +318,9 @@ public static JsonObject getMockReferenceDataParentBundleSectionReferenceData(fi public static JsonObject getMockReferenceDataInitiationTypeJsonObject() { final String validityDate = "2017-08-01"; - return JsonObjects.createObjectBuilder().add("initiationTypes", - JsonObjects.createArrayBuilder() - .add( - JsonObjects.createObjectBuilder() + return createObjectBuilder().add("initiationTypes", + createArrayBuilder() + .add(createObjectBuilder() .add(ID, "7e2f843e-d639-40b3-8611-8015f3a18957") .add(SEQUENCE, 1) .add(DESCRIPTION, "Charge") @@ -357,8 +328,7 @@ public static JsonObject getMockReferenceDataInitiationTypeJsonObject() { .add(VALID_FROM, validityDate) .add(VALID_TO, validityDate) .build()) - .add( - JsonObjects.createObjectBuilder() + .add(createObjectBuilder() .add(ID, "8e2f843e-d639-40b3-8611-8015f3a18958") .add(SEQUENCE, 2) .add(DESCRIPTION, "Summons") @@ -366,7 +336,7 @@ public static JsonObject getMockReferenceDataInitiationTypeJsonObject() { .add(VALID_FROM, validityDate) .add(VALID_TO, validityDate) .build()) - .build()) + .build()) .build(); } @@ -394,7 +364,7 @@ public static Envelope buildSelfDefinedInformationEthnicity() { } - public static Envelope buildVehicleCodes() { + public static Envelope buildVehicleCodes() { final JsonArrayBuilder courtLocationsArrayBuilder = createArrayBuilder(); final JsonObject vehicleCode1 = createObjectBuilder() @@ -508,7 +478,7 @@ public static Envelope buildOrganisationUnitWithCourtroom() { .add(OUCODE, VALUE_COURT_ID_MATCHING) .add(OUCODEL1CODE, "B") .add(WELSHVENUENAME, WELSHVENUENAMEVALUE) - .add(OUCODEL3NAME,OUCODEL3NAMEVALUE) + .add(OUCODEL3NAME, OUCODEL3NAMEVALUE) .add(COURTROOM, courtRoom) .build(); @@ -517,129 +487,117 @@ public static Envelope buildOrganisationUnitWithCourtroom() { } public static JsonObject getMockReferenceDataOffenceData() { - return JsonObjects.createObjectBuilder().add("offences", - JsonObjects.createArrayBuilder() - .add( - JsonObjects.createObjectBuilder() + return createObjectBuilder().add("offences", + createArrayBuilder() + .add(createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add("cjsOffenceCode", "cjsOffenceCode") .add("fullName", "fullName") .build()) - .add( - JsonObjects.createObjectBuilder() + .add(createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add("cjsOffenceCode", "cjsOffenceCode2") .build()) - .build()) + .build()) .build(); } public static JsonObject getMockReferenceDataLicenceCode() { - return JsonObjects.createObjectBuilder().add("licenceCodes", - JsonObjects.createArrayBuilder() - .add( - JsonObjects.createObjectBuilder() + return createObjectBuilder().add("licenceCodes", + createArrayBuilder() + .add(createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add(SEQUENCE, 10) .add("licenceCode", "AA") .add(VALID_FROM, "2019-03-11") .build()) - .add( - JsonObjects.createObjectBuilder() + .add(createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add(SEQUENCE, 20) .add("licenceCode", "BB") .add(VALID_FROM, "2019-03-01") .build()) - .build()) + .build()) .build(); } public static JsonObject getMockReferenceDataPoliceForces() { - return JsonObjects.createObjectBuilder().add("policeForces", - JsonObjects.createArrayBuilder() - .add( - JsonObjects.createObjectBuilder() + return createObjectBuilder().add("policeForces", + createArrayBuilder() + .add(createObjectBuilder() .add("id", "419a13f4-f1c6-3e1e-b0f6-f1c162d4c41a") .add(SEQUENCE, 2) .add("policeForceCode", "1") .add("policeForceName", "London") .add("validForSpiOut", true) - .add("oucodeL2Code","01") + .add("oucodeL2Code", "01") .build()) - .add( - JsonObjects.createObjectBuilder() + .add(createObjectBuilder() .add("id", "47bb2c5d-cde9-3c13-9ae3-b3f5be9177e7") .add(SEQUENCE, 2) .add("policeForceCode", "2") .add("policeForceName", "London") .add("validForSpiOut", true) .build()) - .build()) + .build()) .build(); } public static JsonObject getMockReferenceDataObservedEthnicity() { - return JsonObjects.createObjectBuilder().add("observedEthnicities", - JsonObjects.createArrayBuilder() - .add( - JsonObjects.createObjectBuilder() + return createObjectBuilder().add("observedEthnicities", + createArrayBuilder() + .add(createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add(SEQ_NO, 10) .add("ethnicityCode", "AA") .add(VALID_FROM, "2019-03-11") .build()) - .add( - JsonObjects.createObjectBuilder() + .add(createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add(SEQ_NO, 20) .add("ethnicityCode", "BB") .add(VALID_FROM, "2019-03-01") .build()) - .build()) + .build()) .build(); } public static JsonObject getMockReferenceDataCustodyStatus() { - return JsonObjects.createObjectBuilder().add("custodyStatuses", - JsonObjects.createArrayBuilder() - .add( - JsonObjects.createObjectBuilder() + return createObjectBuilder().add("custodyStatuses", + createArrayBuilder() + .add(createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add(SEQUENCE, 10) .add("statusCode", "AA") .add(VALID_FROM, "2019-03-11") .build()) - .add( - JsonObjects.createObjectBuilder() + .add(createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add(SEQUENCE, 20) .add("statusCode", "BB") .add(VALID_FROM, "2019-03-01") .build()) - .build()) + .build()) .build(); } public static JsonObject getMockReferenceDataPoliceRanks() { - return JsonObjects.createObjectBuilder().add("policeRanks", - JsonObjects.createArrayBuilder() - .add( - JsonObjects.createObjectBuilder() + return createObjectBuilder().add("policeRanks", + createArrayBuilder() + .add(createObjectBuilder() .add("id", "4aaecac5-222b-402d-9047-84803679edac") .add(SEQUENCE, 10) .add("rankCode", "AA") .add(VALID_FROM, "2019-03-11") .build()) - .add( - JsonObjects.createObjectBuilder() + .add(createObjectBuilder() .add("id", "5aaecac5-222b-402d-9047-84803679edac") .add(SEQUENCE, 20) .add("rankCode", "BB") .add(VALID_FROM, "2019-03-01") .build()) - .build()) + .build()) .build(); } } \ No newline at end of file diff --git a/prosecutioncasefile-validation-rules/src/main/java/uk/gov/moj/cpp/prosecution/casefile/validation/CpsFormValidator.java b/prosecutioncasefile-validation-rules/src/main/java/uk/gov/moj/cpp/prosecution/casefile/validation/CpsFormValidator.java index 8f2b81a3..aac5dcd6 100644 --- a/prosecutioncasefile-validation-rules/src/main/java/uk/gov/moj/cpp/prosecution/casefile/validation/CpsFormValidator.java +++ b/prosecutioncasefile-validation-rules/src/main/java/uk/gov/moj/cpp/prosecution/casefile/validation/CpsFormValidator.java @@ -6,9 +6,9 @@ import static java.util.UUID.fromString; import static java.util.stream.Collectors.toList; import static java.util.stream.StreamSupport.stream; +import static org.apache.commons.collections.CollectionUtils.isNotEmpty; import static uk.gov.justice.services.messaging.JsonObjects.createArrayBuilder; import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; -import static org.apache.commons.collections.CollectionUtils.isNotEmpty; import static uk.gov.moj.cpp.prosecution.casefile.domain.FormValidationResult.formValidationResult; import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.MatchedDefendant.matchedDefendant; import static uk.gov.moj.cpp.prosecution.casefile.json.schemas.Problem.problem; @@ -101,7 +101,6 @@ import javax.enterprise.inject.Instance; import javax.inject.Inject; -import uk.gov.justice.services.messaging.JsonObjects; import javax.json.JsonArray; import javax.json.JsonArrayBuilder; import javax.json.JsonObject; @@ -170,7 +169,7 @@ public FormValidationResult validateAndRebuildingFormDataPtph(final JsonObject p } final JsonObjectBuilder newBcmFormData = createObjectBuilder(); - final JsonArrayBuilder newBcmFormDefendantsArrayBuilder = JsonObjects.createArrayBuilder(); + final JsonArrayBuilder newBcmFormDefendantsArrayBuilder = createArrayBuilder(); final Set finalMatchedDefendantSet = matchedDefendantsSet; processReceivedCpsServePtph @@ -182,7 +181,7 @@ public FormValidationResult validateAndRebuildingFormDataPtph(final JsonObject p .map(defendantFromEventPayload -> buildPtphDefendantWithDefendantId(objectToJsonObjectConverter, finalMatchedDefendantSet, defendantFromEventPayload, processReceivedCpsServePtph)) .forEach(newBcmFormDefendantsArrayBuilder::add); - final JsonArrayBuilder newFormDefendantArrayBuilder = JsonObjects.createArrayBuilder(); + final JsonArrayBuilder newFormDefendantArrayBuilder = createArrayBuilder(); matchedDefendantsSet .stream() .map(this::buildFormDefendant) @@ -192,8 +191,7 @@ public FormValidationResult validateAndRebuildingFormDataPtph(final JsonObject p .withFormData(newBcmFormData .add(PTPH_DEFENDANTS, newBcmFormDefendantsArrayBuilder.build()) .build()) - .withFormDefendants(JsonObjects - .createObjectBuilder() + .withFormDefendants(createObjectBuilder() .add(FORM_DEFENDANTS, newFormDefendantArrayBuilder.build()) .build()) .withErrorList(errorList) @@ -218,7 +216,7 @@ private void matchDefendant(final JsonObject prosecutionCase, final JsonArray de .getValuesAs(JsonObject.class); final boolean areAllDefendantsHaveCpsIds = defendantIds.size() == caseDefendantList.size(); - final JsonObject cpsDefendantIdRuleInput = JsonObjects.createObjectBuilder() + final JsonObject cpsDefendantIdRuleInput = createObjectBuilder() .add("cpsDefendantIdList", defendantIds) .add("areAllDefendantsHaveCpsIds", areAllDefendantsHaveCpsIds) .build(); @@ -226,7 +224,7 @@ private void matchDefendant(final JsonObject prosecutionCase, final JsonArray de } if (matchedDefendant.getIsContinueMatching()) { - final JsonObject cpsDefendantDetailRuleInput = JsonObjects.createObjectBuilder() + final JsonObject cpsDefendantDetailRuleInput = createObjectBuilder() .add("cpsDefendantIdList", defendantIds) .add("prosecutionCase", prosecutionCase) .build(); @@ -357,7 +355,7 @@ public FormValidationResult validateAndRebuildingFormDataBcm(final JsonObject pr .build(); } final JsonObjectBuilder newBcmFormData = createObjectBuilder(); - final JsonArrayBuilder newBcmFormDefendantsArrayBuilder = JsonObjects.createArrayBuilder(); + final JsonArrayBuilder newBcmFormDefendantsArrayBuilder = createArrayBuilder(); final Set finalMatchedDefendantSet = matchedDefendantsSet; processReceivedCpsServeBcm @@ -369,7 +367,7 @@ public FormValidationResult validateAndRebuildingFormDataBcm(final JsonObject pr .map(defendantFromEventPayload -> buildBcmDefendantWithDefendantId(finalMatchedDefendantSet, validOffences, defendantFromEventPayload, processReceivedCpsServeBcm)) .forEach(newBcmFormDefendantsArrayBuilder::add); - final JsonArrayBuilder newFormDefendantArrayBuilder = JsonObjects.createArrayBuilder(); + final JsonArrayBuilder newFormDefendantArrayBuilder = createArrayBuilder(); matchedDefendantsSet .stream() .map(this::buildFormDefendant) @@ -379,8 +377,7 @@ public FormValidationResult validateAndRebuildingFormDataBcm(final JsonObject pr .withFormData(newBcmFormData .add(BCM_DEFENDANTS, newBcmFormDefendantsArrayBuilder.build()) .build()) - .withFormDefendants(JsonObjects - .createObjectBuilder() + .withFormDefendants(createObjectBuilder() .add(FORM_DEFENDANTS, newFormDefendantArrayBuilder.build()) .build()) .withErrorList(errorList) @@ -619,7 +616,7 @@ public FormValidationResult validateAndRebuildingFormData(final JsonObject proce } final JsonObjectBuilder newPetFormData = createObjectBuilder(); - final JsonArrayBuilder newPetFormDefenceDefendantsArrayBuilder = JsonObjects.createArrayBuilder(); + final JsonArrayBuilder newPetFormDefenceDefendantsArrayBuilder = createArrayBuilder(); final Set finalMatchedDefendantSet = matchedDefendantsSet; processReceivedCpsServePet @@ -631,7 +628,7 @@ public FormValidationResult validateAndRebuildingFormData(final JsonObject proce .map(defendantFromEventPayload -> buildDefendantWithDefendantId(finalMatchedDefendantSet, validOffences, defendantFromEventPayload)) .forEach(newPetFormDefenceDefendantsArrayBuilder::add); - final JsonArrayBuilder newDefenceArrayBuilder = JsonObjects.createArrayBuilder(); + final JsonArrayBuilder newDefenceArrayBuilder = createArrayBuilder(); matchedDefendantsSet .stream() .map(this::buildFormDefendant) @@ -643,8 +640,7 @@ public FormValidationResult validateAndRebuildingFormData(final JsonObject proce .add(DEFENDANTS, newPetFormDefenceDefendantsArrayBuilder.build())) .add(PROSECUTION, petFormData.getJsonObject(PROSECUTION)) .build()) - .withPetDefendants(JsonObjects - .createObjectBuilder() + .withPetDefendants(createObjectBuilder() .add(PET_DEFENDANTS, newDefenceArrayBuilder.build()) .build()) .withErrorList(errorList) @@ -683,7 +679,7 @@ private JsonObject buildDefendantWithDefendantId(final Set mat defendantBuilder.add(PROSECUTOR_DEFENDANT_ID, defendantJson.getString(PROSECUTOR_DEFENDANT_ID)); } - buildAssociatedPerson(defendantJson,defendantBuilder); + buildAssociatedPerson(defendantJson, defendantBuilder); return defendantBuilder.build(); } @@ -696,7 +692,7 @@ private MatchedDefendant findMatchedDefendantFromMatchingId(Set Date: Fri, 29 May 2026 10:20:04 +0000 Subject: [PATCH 08/12] updating poms for 17.0.92 branch with snapshot versions From d84f284eb6085f361d67631acab29914332a035a Mon Sep 17 00:00:00 2001 From: embedded_devops_sa Date: Fri, 29 May 2026 10:20:08 +0000 Subject: [PATCH 09/12] updating poms for 17.0.93-SNAPSHOT development --- pom.xml | 2 +- prosecutioncasefile-command/pom.xml | 2 +- .../prosecutioncasefile-command-api/pom.xml | 2 +- .../prosecutioncasefile-command-handler/pom.xml | 2 +- prosecutioncasefile-common/pom.xml | 2 +- prosecutioncasefile-datatypes-common/pom.xml | 2 +- prosecutioncasefile-defence-service/pom.xml | 2 +- prosecutioncasefile-domain/pom.xml | 2 +- .../prosecutioncasefile-domain-aggregate/pom.xml | 2 +- .../prosecutioncasefile-domain-event-processor/pom.xml | 2 +- .../prosecutioncasefile-domain-event/pom.xml | 2 +- .../prosecutioncasefile-domain-value-schema/pom.xml | 2 +- prosecutioncasefile-event-sources/pom.xml | 2 +- prosecutioncasefile-event/pom.xml | 2 +- .../prosecutioncasefile-event-listener/pom.xml | 2 +- .../prosecutioncasefile-event-processor/pom.xml | 2 +- prosecutioncasefile-healthchecks/pom.xml | 2 +- prosecutioncasefile-integration-test/pom.xml | 2 +- prosecutioncasefile-progression-service/pom.xml | 2 +- prosecutioncasefile-query/pom.xml | 2 +- prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml | 2 +- .../prosecutioncasefile-query-view/pom.xml | 2 +- prosecutioncasefile-refdata/pom.xml | 2 +- prosecutioncasefile-service/pom.xml | 2 +- prosecutioncasefile-validation-rules/pom.xml | 2 +- prosecutioncasefile-viewstore/pom.xml | 2 +- .../prosecutioncasefile-viewstore-liquibase/pom.xml | 2 +- .../prosecutioncasefile-viewstore-persistence/pom.xml | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/pom.xml b/pom.xml index 93f0aede..10aa7072 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT pom Prosecution Casefile Microservice - Parent Casefile Microservice - Prosecution Context diff --git a/prosecutioncasefile-command/pom.xml b/prosecutioncasefile-command/pom.xml index 6807384e..844de262 100755 --- a/prosecutioncasefile-command/pom.xml +++ b/prosecutioncasefile-command/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml b/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml index d4e90ffb..fdd4b697 100755 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-command - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml b/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml index 93a265b1..d4818843 100755 --- a/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml +++ b/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-command - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-common/pom.xml b/prosecutioncasefile-common/pom.xml index a502cc1a..d55ae9fb 100644 --- a/prosecutioncasefile-common/pom.xml +++ b/prosecutioncasefile-common/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-datatypes-common/pom.xml b/prosecutioncasefile-datatypes-common/pom.xml index 5d75a3cd..d80c9816 100644 --- a/prosecutioncasefile-datatypes-common/pom.xml +++ b/prosecutioncasefile-datatypes-common/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-defence-service/pom.xml b/prosecutioncasefile-defence-service/pom.xml index 6df1c93b..5544d0d1 100644 --- a/prosecutioncasefile-defence-service/pom.xml +++ b/prosecutioncasefile-defence-service/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-domain/pom.xml b/prosecutioncasefile-domain/pom.xml index 84e6fbee..5c70631c 100755 --- a/prosecutioncasefile-domain/pom.xml +++ b/prosecutioncasefile-domain/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT prosecutioncasefile-domain diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml index 662ce44c..ddbc9de6 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-domain - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT prosecutioncasefile-domain-aggregate diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml index b7616de8..33b7202d 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-domain uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml index b52a496b..5a0775cb 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-domain - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT prosecutioncasefile-domain-event diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml index e2cd32b8..5830b4fa 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-domain uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-event-sources/pom.xml b/prosecutioncasefile-event-sources/pom.xml index 1501b913..82a5654c 100644 --- a/prosecutioncasefile-event-sources/pom.xml +++ b/prosecutioncasefile-event-sources/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-event/pom.xml b/prosecutioncasefile-event/pom.xml index 24d0f62a..f222c37b 100755 --- a/prosecutioncasefile-event/pom.xml +++ b/prosecutioncasefile-event/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml b/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml index 6fde3e46..eb4599e4 100755 --- a/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml +++ b/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-event - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml b/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml index dea23d90..5e977539 100755 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-event - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-healthchecks/pom.xml b/prosecutioncasefile-healthchecks/pom.xml index 875ab02e..4ce8933c 100644 --- a/prosecutioncasefile-healthchecks/pom.xml +++ b/prosecutioncasefile-healthchecks/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-integration-test/pom.xml b/prosecutioncasefile-integration-test/pom.xml index 160a8481..2f04641f 100755 --- a/prosecutioncasefile-integration-test/pom.xml +++ b/prosecutioncasefile-integration-test/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-progression-service/pom.xml b/prosecutioncasefile-progression-service/pom.xml index 9aedac88..b460dabc 100644 --- a/prosecutioncasefile-progression-service/pom.xml +++ b/prosecutioncasefile-progression-service/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-query/pom.xml b/prosecutioncasefile-query/pom.xml index 0aeb5d81..729c7b05 100755 --- a/prosecutioncasefile-query/pom.xml +++ b/prosecutioncasefile-query/pom.xml @@ -4,7 +4,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml b/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml index 07e1b3d7..034f742e 100755 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-query - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml b/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml index 16ae09a8..43d74dd7 100755 --- a/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml +++ b/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-query - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-refdata/pom.xml b/prosecutioncasefile-refdata/pom.xml index 3ae2dcab..05a295b6 100644 --- a/prosecutioncasefile-refdata/pom.xml +++ b/prosecutioncasefile-refdata/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-service/pom.xml b/prosecutioncasefile-service/pom.xml index e6f48ed5..d76e0ff4 100644 --- a/prosecutioncasefile-service/pom.xml +++ b/prosecutioncasefile-service/pom.xml @@ -4,7 +4,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-validation-rules/pom.xml b/prosecutioncasefile-validation-rules/pom.xml index 9cdd72ef..1dec9178 100644 --- a/prosecutioncasefile-validation-rules/pom.xml +++ b/prosecutioncasefile-validation-rules/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 prosecutioncasefile-validation-rules diff --git a/prosecutioncasefile-viewstore/pom.xml b/prosecutioncasefile-viewstore/pom.xml index fada0627..acc760cb 100755 --- a/prosecutioncasefile-viewstore/pom.xml +++ b/prosecutioncasefile-viewstore/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT prosecutioncasefile-viewstore diff --git a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml index c1808b3b..9fe06c4a 100755 --- a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml +++ b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-viewstore - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT prosecutioncasefile-viewstore-liquibase diff --git a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml index 3a6a52f5..b6b018d7 100755 --- a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml +++ b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-viewstore uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.93-SNAPSHOT 4.0.0 From 96932cec2d75b3ab03c02482a68db5797cd147ef Mon Sep 17 00:00:00 2001 From: embedded_devops_sa Date: Fri, 29 May 2026 11:01:45 +0000 Subject: [PATCH 10/12] updating poms for branch'dev/release-17.0.92' with non-snapshot versions --- pom.xml | 2 +- prosecutioncasefile-command/pom.xml | 2 +- .../prosecutioncasefile-command-api/pom.xml | 2 +- .../prosecutioncasefile-command-handler/pom.xml | 2 +- prosecutioncasefile-common/pom.xml | 2 +- prosecutioncasefile-datatypes-common/pom.xml | 2 +- prosecutioncasefile-defence-service/pom.xml | 2 +- prosecutioncasefile-domain/pom.xml | 2 +- .../prosecutioncasefile-domain-aggregate/pom.xml | 2 +- .../prosecutioncasefile-domain-event-processor/pom.xml | 2 +- .../prosecutioncasefile-domain-event/pom.xml | 2 +- .../prosecutioncasefile-domain-value-schema/pom.xml | 2 +- prosecutioncasefile-event-sources/pom.xml | 2 +- prosecutioncasefile-event/pom.xml | 2 +- .../prosecutioncasefile-event-listener/pom.xml | 2 +- .../prosecutioncasefile-event-processor/pom.xml | 2 +- prosecutioncasefile-healthchecks/pom.xml | 2 +- prosecutioncasefile-integration-test/pom.xml | 2 +- prosecutioncasefile-progression-service/pom.xml | 2 +- prosecutioncasefile-query/pom.xml | 2 +- prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml | 2 +- .../prosecutioncasefile-query-view/pom.xml | 2 +- prosecutioncasefile-refdata/pom.xml | 2 +- prosecutioncasefile-service/pom.xml | 2 +- prosecutioncasefile-validation-rules/pom.xml | 2 +- prosecutioncasefile-viewstore/pom.xml | 2 +- .../prosecutioncasefile-viewstore-liquibase/pom.xml | 2 +- .../prosecutioncasefile-viewstore-persistence/pom.xml | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/pom.xml b/pom.xml index 93f0aede..15f94775 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.92 pom Prosecution Casefile Microservice - Parent Casefile Microservice - Prosecution Context diff --git a/prosecutioncasefile-command/pom.xml b/prosecutioncasefile-command/pom.xml index 6807384e..bc48414f 100755 --- a/prosecutioncasefile-command/pom.xml +++ b/prosecutioncasefile-command/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml b/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml index d4e90ffb..ea4dc10c 100755 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-command - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml b/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml index 93a265b1..532bf40c 100755 --- a/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml +++ b/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-command - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-common/pom.xml b/prosecutioncasefile-common/pom.xml index a502cc1a..a82cb997 100644 --- a/prosecutioncasefile-common/pom.xml +++ b/prosecutioncasefile-common/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-datatypes-common/pom.xml b/prosecutioncasefile-datatypes-common/pom.xml index 5d75a3cd..bce374fb 100644 --- a/prosecutioncasefile-datatypes-common/pom.xml +++ b/prosecutioncasefile-datatypes-common/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-defence-service/pom.xml b/prosecutioncasefile-defence-service/pom.xml index 6df1c93b..9e70d9bc 100644 --- a/prosecutioncasefile-defence-service/pom.xml +++ b/prosecutioncasefile-defence-service/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-domain/pom.xml b/prosecutioncasefile-domain/pom.xml index 84e6fbee..db665e33 100755 --- a/prosecutioncasefile-domain/pom.xml +++ b/prosecutioncasefile-domain/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.92 prosecutioncasefile-domain diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml index 662ce44c..b977b8d0 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-domain - 17.0.92-SNAPSHOT + 17.0.92 prosecutioncasefile-domain-aggregate diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml index b7616de8..bf7f3c46 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-domain uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml index b52a496b..e2a3507f 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-domain - 17.0.92-SNAPSHOT + 17.0.92 prosecutioncasefile-domain-event diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml index e2cd32b8..16c49645 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-domain uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-event-sources/pom.xml b/prosecutioncasefile-event-sources/pom.xml index 1501b913..c605ee52 100644 --- a/prosecutioncasefile-event-sources/pom.xml +++ b/prosecutioncasefile-event-sources/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-event/pom.xml b/prosecutioncasefile-event/pom.xml index 24d0f62a..41f839b5 100755 --- a/prosecutioncasefile-event/pom.xml +++ b/prosecutioncasefile-event/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml b/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml index 6fde3e46..45228d73 100755 --- a/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml +++ b/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-event - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml b/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml index dea23d90..db796345 100755 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-event - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-healthchecks/pom.xml b/prosecutioncasefile-healthchecks/pom.xml index 875ab02e..95752ce6 100644 --- a/prosecutioncasefile-healthchecks/pom.xml +++ b/prosecutioncasefile-healthchecks/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-integration-test/pom.xml b/prosecutioncasefile-integration-test/pom.xml index 160a8481..e526a58e 100755 --- a/prosecutioncasefile-integration-test/pom.xml +++ b/prosecutioncasefile-integration-test/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-progression-service/pom.xml b/prosecutioncasefile-progression-service/pom.xml index 9aedac88..86dacabe 100644 --- a/prosecutioncasefile-progression-service/pom.xml +++ b/prosecutioncasefile-progression-service/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-query/pom.xml b/prosecutioncasefile-query/pom.xml index 0aeb5d81..b7d1092f 100755 --- a/prosecutioncasefile-query/pom.xml +++ b/prosecutioncasefile-query/pom.xml @@ -4,7 +4,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml b/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml index 07e1b3d7..bfc5fa2d 100755 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-query - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml b/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml index 16ae09a8..0dd7d444 100755 --- a/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml +++ b/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-query - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-refdata/pom.xml b/prosecutioncasefile-refdata/pom.xml index 3ae2dcab..b5f69e74 100644 --- a/prosecutioncasefile-refdata/pom.xml +++ b/prosecutioncasefile-refdata/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-service/pom.xml b/prosecutioncasefile-service/pom.xml index e6f48ed5..7b829378 100644 --- a/prosecutioncasefile-service/pom.xml +++ b/prosecutioncasefile-service/pom.xml @@ -4,7 +4,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-validation-rules/pom.xml b/prosecutioncasefile-validation-rules/pom.xml index 9cdd72ef..b8218e3e 100644 --- a/prosecutioncasefile-validation-rules/pom.xml +++ b/prosecutioncasefile-validation-rules/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 prosecutioncasefile-validation-rules diff --git a/prosecutioncasefile-viewstore/pom.xml b/prosecutioncasefile-viewstore/pom.xml index fada0627..a8d070ac 100755 --- a/prosecutioncasefile-viewstore/pom.xml +++ b/prosecutioncasefile-viewstore/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92-SNAPSHOT + 17.0.92 prosecutioncasefile-viewstore diff --git a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml index c1808b3b..7e2ca146 100755 --- a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml +++ b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-viewstore - 17.0.92-SNAPSHOT + 17.0.92 prosecutioncasefile-viewstore-liquibase diff --git a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml index 3a6a52f5..c11ab1a7 100755 --- a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml +++ b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-viewstore uk.gov.moj.cpp.prosecution.casefile - 17.0.92-SNAPSHOT + 17.0.92 4.0.0 From 9f87dd9f2ecf6c93d3ee2a36268b8a687f17d67a Mon Sep 17 00:00:00 2001 From: embedded_devops_sa Date: Fri, 29 May 2026 11:02:07 +0000 Subject: [PATCH 11/12] updating develop poms to master versions to avoid merge conflicts --- pom.xml | 2 +- prosecutioncasefile-command/pom.xml | 2 +- .../prosecutioncasefile-command-api/pom.xml | 2 +- .../prosecutioncasefile-command-handler/pom.xml | 2 +- prosecutioncasefile-common/pom.xml | 2 +- prosecutioncasefile-datatypes-common/pom.xml | 2 +- prosecutioncasefile-defence-service/pom.xml | 2 +- prosecutioncasefile-domain/pom.xml | 2 +- .../prosecutioncasefile-domain-aggregate/pom.xml | 2 +- .../prosecutioncasefile-domain-event-processor/pom.xml | 2 +- .../prosecutioncasefile-domain-event/pom.xml | 2 +- .../prosecutioncasefile-domain-value-schema/pom.xml | 2 +- prosecutioncasefile-event-sources/pom.xml | 2 +- prosecutioncasefile-event/pom.xml | 2 +- .../prosecutioncasefile-event-listener/pom.xml | 2 +- .../prosecutioncasefile-event-processor/pom.xml | 2 +- prosecutioncasefile-healthchecks/pom.xml | 2 +- prosecutioncasefile-integration-test/pom.xml | 2 +- prosecutioncasefile-progression-service/pom.xml | 2 +- prosecutioncasefile-query/pom.xml | 2 +- prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml | 2 +- .../prosecutioncasefile-query-view/pom.xml | 2 +- prosecutioncasefile-refdata/pom.xml | 2 +- prosecutioncasefile-service/pom.xml | 2 +- prosecutioncasefile-validation-rules/pom.xml | 2 +- prosecutioncasefile-viewstore/pom.xml | 2 +- .../prosecutioncasefile-viewstore-liquibase/pom.xml | 2 +- .../prosecutioncasefile-viewstore-persistence/pom.xml | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/pom.xml b/pom.xml index 10aa7072..15f94775 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.93-SNAPSHOT + 17.0.92 pom Prosecution Casefile Microservice - Parent Casefile Microservice - Prosecution Context diff --git a/prosecutioncasefile-command/pom.xml b/prosecutioncasefile-command/pom.xml index 844de262..bc48414f 100755 --- a/prosecutioncasefile-command/pom.xml +++ b/prosecutioncasefile-command/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml b/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml index fdd4b697..ea4dc10c 100755 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-command - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml b/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml index d4818843..532bf40c 100755 --- a/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml +++ b/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-command - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-common/pom.xml b/prosecutioncasefile-common/pom.xml index d55ae9fb..a82cb997 100644 --- a/prosecutioncasefile-common/pom.xml +++ b/prosecutioncasefile-common/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-datatypes-common/pom.xml b/prosecutioncasefile-datatypes-common/pom.xml index d80c9816..bce374fb 100644 --- a/prosecutioncasefile-datatypes-common/pom.xml +++ b/prosecutioncasefile-datatypes-common/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-defence-service/pom.xml b/prosecutioncasefile-defence-service/pom.xml index 5544d0d1..9e70d9bc 100644 --- a/prosecutioncasefile-defence-service/pom.xml +++ b/prosecutioncasefile-defence-service/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-domain/pom.xml b/prosecutioncasefile-domain/pom.xml index 5c70631c..db665e33 100755 --- a/prosecutioncasefile-domain/pom.xml +++ b/prosecutioncasefile-domain/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.93-SNAPSHOT + 17.0.92 prosecutioncasefile-domain diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml index ddbc9de6..b977b8d0 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-domain - 17.0.93-SNAPSHOT + 17.0.92 prosecutioncasefile-domain-aggregate diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml index 33b7202d..bf7f3c46 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-domain uk.gov.moj.cpp.prosecution.casefile - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml index 5a0775cb..e2a3507f 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-domain - 17.0.93-SNAPSHOT + 17.0.92 prosecutioncasefile-domain-event diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml index 5830b4fa..16c49645 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-domain uk.gov.moj.cpp.prosecution.casefile - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-event-sources/pom.xml b/prosecutioncasefile-event-sources/pom.xml index 82a5654c..c605ee52 100644 --- a/prosecutioncasefile-event-sources/pom.xml +++ b/prosecutioncasefile-event-sources/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-event/pom.xml b/prosecutioncasefile-event/pom.xml index f222c37b..41f839b5 100755 --- a/prosecutioncasefile-event/pom.xml +++ b/prosecutioncasefile-event/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml b/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml index eb4599e4..45228d73 100755 --- a/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml +++ b/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-event - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml b/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml index 5e977539..db796345 100755 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-event - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-healthchecks/pom.xml b/prosecutioncasefile-healthchecks/pom.xml index 4ce8933c..95752ce6 100644 --- a/prosecutioncasefile-healthchecks/pom.xml +++ b/prosecutioncasefile-healthchecks/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-integration-test/pom.xml b/prosecutioncasefile-integration-test/pom.xml index 2f04641f..e526a58e 100755 --- a/prosecutioncasefile-integration-test/pom.xml +++ b/prosecutioncasefile-integration-test/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-progression-service/pom.xml b/prosecutioncasefile-progression-service/pom.xml index b460dabc..86dacabe 100644 --- a/prosecutioncasefile-progression-service/pom.xml +++ b/prosecutioncasefile-progression-service/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-query/pom.xml b/prosecutioncasefile-query/pom.xml index 729c7b05..b7d1092f 100755 --- a/prosecutioncasefile-query/pom.xml +++ b/prosecutioncasefile-query/pom.xml @@ -4,7 +4,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml b/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml index 034f742e..bfc5fa2d 100755 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-query - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml b/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml index 43d74dd7..0dd7d444 100755 --- a/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml +++ b/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-query - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-refdata/pom.xml b/prosecutioncasefile-refdata/pom.xml index 05a295b6..b5f69e74 100644 --- a/prosecutioncasefile-refdata/pom.xml +++ b/prosecutioncasefile-refdata/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-service/pom.xml b/prosecutioncasefile-service/pom.xml index d76e0ff4..7b829378 100644 --- a/prosecutioncasefile-service/pom.xml +++ b/prosecutioncasefile-service/pom.xml @@ -4,7 +4,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 diff --git a/prosecutioncasefile-validation-rules/pom.xml b/prosecutioncasefile-validation-rules/pom.xml index 1dec9178..b8218e3e 100644 --- a/prosecutioncasefile-validation-rules/pom.xml +++ b/prosecutioncasefile-validation-rules/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 prosecutioncasefile-validation-rules diff --git a/prosecutioncasefile-viewstore/pom.xml b/prosecutioncasefile-viewstore/pom.xml index acc760cb..a8d070ac 100755 --- a/prosecutioncasefile-viewstore/pom.xml +++ b/prosecutioncasefile-viewstore/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.93-SNAPSHOT + 17.0.92 prosecutioncasefile-viewstore diff --git a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml index 9fe06c4a..7e2ca146 100755 --- a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml +++ b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-viewstore - 17.0.93-SNAPSHOT + 17.0.92 prosecutioncasefile-viewstore-liquibase diff --git a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml index b6b018d7..c11ab1a7 100755 --- a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml +++ b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-viewstore uk.gov.moj.cpp.prosecution.casefile - 17.0.93-SNAPSHOT + 17.0.92 4.0.0 From 8ef2f31ee26fa9dd1f68c36cdd4946f4220c5bc0 Mon Sep 17 00:00:00 2001 From: embedded_devops_sa Date: Fri, 29 May 2026 11:02:12 +0000 Subject: [PATCH 12/12] Updating develop poms back to pre merge state --- pom.xml | 2 +- prosecutioncasefile-command/pom.xml | 2 +- .../prosecutioncasefile-command-api/pom.xml | 2 +- .../prosecutioncasefile-command-handler/pom.xml | 2 +- prosecutioncasefile-common/pom.xml | 2 +- prosecutioncasefile-datatypes-common/pom.xml | 2 +- prosecutioncasefile-defence-service/pom.xml | 2 +- prosecutioncasefile-domain/pom.xml | 2 +- .../prosecutioncasefile-domain-aggregate/pom.xml | 2 +- .../prosecutioncasefile-domain-event-processor/pom.xml | 2 +- .../prosecutioncasefile-domain-event/pom.xml | 2 +- .../prosecutioncasefile-domain-value-schema/pom.xml | 2 +- prosecutioncasefile-event-sources/pom.xml | 2 +- prosecutioncasefile-event/pom.xml | 2 +- .../prosecutioncasefile-event-listener/pom.xml | 2 +- .../prosecutioncasefile-event-processor/pom.xml | 2 +- prosecutioncasefile-healthchecks/pom.xml | 2 +- prosecutioncasefile-integration-test/pom.xml | 2 +- prosecutioncasefile-progression-service/pom.xml | 2 +- prosecutioncasefile-query/pom.xml | 2 +- prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml | 2 +- .../prosecutioncasefile-query-view/pom.xml | 2 +- prosecutioncasefile-refdata/pom.xml | 2 +- prosecutioncasefile-service/pom.xml | 2 +- prosecutioncasefile-validation-rules/pom.xml | 2 +- prosecutioncasefile-viewstore/pom.xml | 2 +- .../prosecutioncasefile-viewstore-liquibase/pom.xml | 2 +- .../prosecutioncasefile-viewstore-persistence/pom.xml | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/pom.xml b/pom.xml index 15f94775..10aa7072 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92 + 17.0.93-SNAPSHOT pom Prosecution Casefile Microservice - Parent Casefile Microservice - Prosecution Context diff --git a/prosecutioncasefile-command/pom.xml b/prosecutioncasefile-command/pom.xml index bc48414f..844de262 100755 --- a/prosecutioncasefile-command/pom.xml +++ b/prosecutioncasefile-command/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml b/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml index ea4dc10c..fdd4b697 100755 --- a/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml +++ b/prosecutioncasefile-command/prosecutioncasefile-command-api/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-command - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml b/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml index 532bf40c..d4818843 100755 --- a/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml +++ b/prosecutioncasefile-command/prosecutioncasefile-command-handler/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-command - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-common/pom.xml b/prosecutioncasefile-common/pom.xml index a82cb997..d55ae9fb 100644 --- a/prosecutioncasefile-common/pom.xml +++ b/prosecutioncasefile-common/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-datatypes-common/pom.xml b/prosecutioncasefile-datatypes-common/pom.xml index bce374fb..d80c9816 100644 --- a/prosecutioncasefile-datatypes-common/pom.xml +++ b/prosecutioncasefile-datatypes-common/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-defence-service/pom.xml b/prosecutioncasefile-defence-service/pom.xml index 9e70d9bc..5544d0d1 100644 --- a/prosecutioncasefile-defence-service/pom.xml +++ b/prosecutioncasefile-defence-service/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-domain/pom.xml b/prosecutioncasefile-domain/pom.xml index db665e33..5c70631c 100755 --- a/prosecutioncasefile-domain/pom.xml +++ b/prosecutioncasefile-domain/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92 + 17.0.93-SNAPSHOT prosecutioncasefile-domain diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml index b977b8d0..ddbc9de6 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-aggregate/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-domain - 17.0.92 + 17.0.93-SNAPSHOT prosecutioncasefile-domain-aggregate diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml index bf7f3c46..33b7202d 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-event-processor/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-domain uk.gov.moj.cpp.prosecution.casefile - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml index e2a3507f..5a0775cb 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-event/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-domain - 17.0.92 + 17.0.93-SNAPSHOT prosecutioncasefile-domain-event diff --git a/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml b/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml index 16c49645..5830b4fa 100644 --- a/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml +++ b/prosecutioncasefile-domain/prosecutioncasefile-domain-value-schema/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-domain uk.gov.moj.cpp.prosecution.casefile - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-event-sources/pom.xml b/prosecutioncasefile-event-sources/pom.xml index c605ee52..82a5654c 100644 --- a/prosecutioncasefile-event-sources/pom.xml +++ b/prosecutioncasefile-event-sources/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-event/pom.xml b/prosecutioncasefile-event/pom.xml index 41f839b5..f222c37b 100755 --- a/prosecutioncasefile-event/pom.xml +++ b/prosecutioncasefile-event/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml b/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml index 45228d73..eb4599e4 100755 --- a/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml +++ b/prosecutioncasefile-event/prosecutioncasefile-event-listener/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-event - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml b/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml index db796345..5e977539 100755 --- a/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml +++ b/prosecutioncasefile-event/prosecutioncasefile-event-processor/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-event - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-healthchecks/pom.xml b/prosecutioncasefile-healthchecks/pom.xml index 95752ce6..4ce8933c 100644 --- a/prosecutioncasefile-healthchecks/pom.xml +++ b/prosecutioncasefile-healthchecks/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-integration-test/pom.xml b/prosecutioncasefile-integration-test/pom.xml index e526a58e..2f04641f 100755 --- a/prosecutioncasefile-integration-test/pom.xml +++ b/prosecutioncasefile-integration-test/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-progression-service/pom.xml b/prosecutioncasefile-progression-service/pom.xml index 86dacabe..b460dabc 100644 --- a/prosecutioncasefile-progression-service/pom.xml +++ b/prosecutioncasefile-progression-service/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-query/pom.xml b/prosecutioncasefile-query/pom.xml index b7d1092f..729c7b05 100755 --- a/prosecutioncasefile-query/pom.xml +++ b/prosecutioncasefile-query/pom.xml @@ -4,7 +4,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml b/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml index bfc5fa2d..034f742e 100755 --- a/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml +++ b/prosecutioncasefile-query/prosecutioncasefile-query-api/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-query - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml b/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml index 0dd7d444..43d74dd7 100755 --- a/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml +++ b/prosecutioncasefile-query/prosecutioncasefile-query-view/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-query - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-refdata/pom.xml b/prosecutioncasefile-refdata/pom.xml index b5f69e74..05a295b6 100644 --- a/prosecutioncasefile-refdata/pom.xml +++ b/prosecutioncasefile-refdata/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-service/pom.xml b/prosecutioncasefile-service/pom.xml index 7b829378..d76e0ff4 100644 --- a/prosecutioncasefile-service/pom.xml +++ b/prosecutioncasefile-service/pom.xml @@ -4,7 +4,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 diff --git a/prosecutioncasefile-validation-rules/pom.xml b/prosecutioncasefile-validation-rules/pom.xml index b8218e3e..1dec9178 100644 --- a/prosecutioncasefile-validation-rules/pom.xml +++ b/prosecutioncasefile-validation-rules/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-parent uk.gov.moj.cpp.prosecution.casefile - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0 prosecutioncasefile-validation-rules diff --git a/prosecutioncasefile-viewstore/pom.xml b/prosecutioncasefile-viewstore/pom.xml index a8d070ac..acc760cb 100755 --- a/prosecutioncasefile-viewstore/pom.xml +++ b/prosecutioncasefile-viewstore/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-parent - 17.0.92 + 17.0.93-SNAPSHOT prosecutioncasefile-viewstore diff --git a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml index 7e2ca146..9fe06c4a 100755 --- a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml +++ b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-liquibase/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.prosecution.casefile prosecutioncasefile-viewstore - 17.0.92 + 17.0.93-SNAPSHOT prosecutioncasefile-viewstore-liquibase diff --git a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml index c11ab1a7..b6b018d7 100755 --- a/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml +++ b/prosecutioncasefile-viewstore/prosecutioncasefile-viewstore-persistence/pom.xml @@ -3,7 +3,7 @@ prosecutioncasefile-viewstore uk.gov.moj.cpp.prosecution.casefile - 17.0.92 + 17.0.93-SNAPSHOT 4.0.0