diff --git a/README.md b/README.md
index 9cbd45f79..dd190d6a9 100644
--- a/README.md
+++ b/README.md
@@ -119,5 +119,4 @@ X-Powered-By: Undertow/1
Server: WildFly/10
Content-Length: 0
Date: Tue, 03 Dec 2019 16:14:28 GMT
-```
-
+```
\ No newline at end of file
diff --git a/listing-command/listing-command-api/pom.xml b/listing-command/listing-command-api/pom.xml
index b03a5de74..c40b847bd 100644
--- a/listing-command/listing-command-api/pom.xml
+++ b/listing-command/listing-command-api/pom.xml
@@ -4,7 +4,7 @@
listing-command
uk.gov.moj.cpp.listing
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-command/listing-command-handler/pom.xml b/listing-command/listing-command-handler/pom.xml
index bde8e4e41..6a54af5d8 100644
--- a/listing-command/listing-command-handler/pom.xml
+++ b/listing-command/listing-command-handler/pom.xml
@@ -3,7 +3,7 @@
listing-command
uk.gov.moj.cpp.listing
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-command/pom.xml b/listing-command/pom.xml
index 223c8b311..a77283e2b 100644
--- a/listing-command/pom.xml
+++ b/listing-command/pom.xml
@@ -3,7 +3,7 @@
listing-parent
uk.gov.moj.cpp.listing
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-common/pom.xml b/listing-common/pom.xml
index 97adf0268..3b0095226 100644
--- a/listing-common/pom.xml
+++ b/listing-common/pom.xml
@@ -3,7 +3,7 @@
listing-parent
uk.gov.moj.cpp.listing
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-domain/listing-domain-aggregate/pom.xml b/listing-domain/listing-domain-aggregate/pom.xml
index 63f4bc76f..36afe3c9b 100644
--- a/listing-domain/listing-domain-aggregate/pom.xml
+++ b/listing-domain/listing-domain-aggregate/pom.xml
@@ -3,7 +3,7 @@
listing-domain
uk.gov.moj.cpp.listing
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-domain/listing-domain-common/pom.xml b/listing-domain/listing-domain-common/pom.xml
index 29105131f..892f4f79b 100644
--- a/listing-domain/listing-domain-common/pom.xml
+++ b/listing-domain/listing-domain-common/pom.xml
@@ -3,7 +3,7 @@
listing-domain
uk.gov.moj.cpp.listing
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-domain/listing-domain-event/pom.xml b/listing-domain/listing-domain-event/pom.xml
index 9ac53a823..7074a4330 100644
--- a/listing-domain/listing-domain-event/pom.xml
+++ b/listing-domain/listing-domain-event/pom.xml
@@ -3,7 +3,7 @@
listing-domain
uk.gov.moj.cpp.listing
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-domain/listing-domain-xhibit/pom.xml b/listing-domain/listing-domain-xhibit/pom.xml
index 237feac6b..ef2c8da77 100644
--- a/listing-domain/listing-domain-xhibit/pom.xml
+++ b/listing-domain/listing-domain-xhibit/pom.xml
@@ -3,7 +3,7 @@
listing-domain
uk.gov.moj.cpp.listing
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-domain/pom.xml b/listing-domain/pom.xml
index fa57f5034..65c6854a9 100644
--- a/listing-domain/pom.xml
+++ b/listing-domain/pom.xml
@@ -4,7 +4,7 @@
uk.gov.moj.cpp.listing
listing-parent
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
listing-domain
diff --git a/listing-event-sources/pom.xml b/listing-event-sources/pom.xml
index cc3f32006..43b800121 100644
--- a/listing-event-sources/pom.xml
+++ b/listing-event-sources/pom.xml
@@ -3,7 +3,7 @@
listing-parent
uk.gov.moj.cpp.listing
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-event/listing-event-listener/pom.xml b/listing-event/listing-event-listener/pom.xml
index 5cff5df90..24b6887b1 100644
--- a/listing-event/listing-event-listener/pom.xml
+++ b/listing-event/listing-event-listener/pom.xml
@@ -3,7 +3,7 @@
listing-event
uk.gov.moj.cpp.listing
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-event/listing-event-processor/pom.xml b/listing-event/listing-event-processor/pom.xml
index ef6642647..e31afb41e 100644
--- a/listing-event/listing-event-processor/pom.xml
+++ b/listing-event/listing-event-processor/pom.xml
@@ -3,7 +3,7 @@
listing-event
uk.gov.moj.cpp.listing
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-event/pom.xml b/listing-event/pom.xml
index 84d188d00..d7cf0640e 100644
--- a/listing-event/pom.xml
+++ b/listing-event/pom.xml
@@ -3,7 +3,7 @@
uk.gov.moj.cpp.listing
listing-parent
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-healthchecks/pom.xml b/listing-healthchecks/pom.xml
index 8d1805b06..aed678e95 100644
--- a/listing-healthchecks/pom.xml
+++ b/listing-healthchecks/pom.xml
@@ -3,7 +3,7 @@
listing-parent
uk.gov.moj.cpp.listing
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-integration-test-persistence/pom.xml b/listing-integration-test-persistence/pom.xml
index 860c91908..cc0819ad4 100644
--- a/listing-integration-test-persistence/pom.xml
+++ b/listing-integration-test-persistence/pom.xml
@@ -3,7 +3,7 @@
listing-parent
uk.gov.moj.cpp.listing
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-integration-test/pom.xml b/listing-integration-test/pom.xml
index dd019932f..4b5278502 100644
--- a/listing-integration-test/pom.xml
+++ b/listing-integration-test/pom.xml
@@ -3,7 +3,7 @@
listing-parent
uk.gov.moj.cpp.listing
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/it/AbstractIT.java b/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/it/AbstractIT.java
index 51c8e4799..86b42610b 100644
--- a/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/it/AbstractIT.java
+++ b/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/it/AbstractIT.java
@@ -73,7 +73,7 @@ void setUp() {
setupProgressionNotesStubs();
setupUsersGroupPermissionsForApplicationTypeStub();
databaseCleaner.cleanEventStoreTables(CONTEXT_NAME);
- databaseCleaner.cleanViewStoreTables(CONTEXT_NAME, "stream_status",
+ databaseCleaner.cleanViewStoreTables(CONTEXT_NAME, "stream_status","processed_event",
"stream_buffer", "hearing", "hearing_days", "listing_notes", "cache_refdata_courtroom", "court_list_publish_status", "published_court_list");
}
diff --git a/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/it/RangeSearchQueryForCourtCalendarIT.java b/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/it/RangeSearchQueryForCourtCalendarIT.java
index cbe83d4f6..94465aa6b 100644
--- a/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/it/RangeSearchQueryForCourtCalendarIT.java
+++ b/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/it/RangeSearchQueryForCourtCalendarIT.java
@@ -43,7 +43,6 @@
@SuppressWarnings({"squid:S1607"})
public class RangeSearchQueryForCourtCalendarIT extends AbstractIT {
- private static final String CONTEXT_NAME = "listing";
private static final Map COURT_ROOMS = new LinkedHashMap<>() {{
put(fromString("1d0199f8-8812-48a2-b13c-837e1c03ff19"), "Courtroom 01");
put(fromString("18982e9c-2475-36a4-a852-09ab720acfc9"), "Courtroom 03");
diff --git a/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/steps/WeekCommencingHearingSteps.java b/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/steps/WeekCommencingHearingSteps.java
index dda443fc1..84b8ad467 100644
--- a/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/steps/WeekCommencingHearingSteps.java
+++ b/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/steps/WeekCommencingHearingSteps.java
@@ -7,7 +7,7 @@
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasSize;
-import static org.hamcrest.core.IsEqual.equalTo;
+import static org.hamcrest.Matchers.is;
import static uk.gov.moj.cpp.listing.helper.SearchHearingHelper.getHearingFilter;
import static uk.gov.moj.cpp.listing.helper.SearchHearingHelper.pollForHearing;
import static uk.gov.moj.cpp.listing.steps.UpdateHearingSteps.DEFAULT_DURATION_HOURS_MINS;
@@ -46,10 +46,17 @@ public void whenHearingIsUpdatedForListingForWeekCommencingDate() {
request = prepareJsonForUpdatedHearingData(updatedHearingData);
- final Response response = restClient.postCommand(updateHearingUrl, MEDIA_TYPE_UPDATE_HEARING_FOR_LISTING,
- request, getLoggedInHeader());
-
- assertThat(response.getStatus(), equalTo(SC_ACCEPTED));
+ try (Response response = restClient.postCommand(updateHearingUrl, MEDIA_TYPE_UPDATE_HEARING_FOR_LISTING, request, getLoggedInHeader())) {
+
+ String responseBody = "";
+ try {
+ responseBody = response.readEntity(String.class);
+ } catch (IllegalStateException e) {
+ //no-op in case of no response
+ }
+ assertThat(format("Post returned not expected status code with body: %s", responseBody),
+ response.getStatus(), is(SC_ACCEPTED));
+ }
}
public void verifyHearingUpdatedWithWeekCommencingDateAndUnallocatedWhenQueryingFromAPI() {
diff --git a/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/utils/FileUtil.java b/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/utils/FileUtil.java
index b26641c28..2bd993f6a 100644
--- a/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/utils/FileUtil.java
+++ b/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/utils/FileUtil.java
@@ -1,7 +1,7 @@
package uk.gov.moj.cpp.listing.utils;
import static java.nio.charset.Charset.defaultCharset;
-import static javax.json.Json.createReader;
+import static uk.gov.justice.services.messaging.JsonObjects.createReader;
import static org.apache.commons.io.FileUtils.readFileToString;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.IsNull.notNullValue;
diff --git a/listing-json/pom.xml b/listing-json/pom.xml
index 284064574..15c299526 100644
--- a/listing-json/pom.xml
+++ b/listing-json/pom.xml
@@ -4,7 +4,7 @@
listing-parent
uk.gov.moj.cpp.listing
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
listing-json
diff --git a/listing-performance-test/pom.xml b/listing-performance-test/pom.xml
index c219e68ff..a78625586 100644
--- a/listing-performance-test/pom.xml
+++ b/listing-performance-test/pom.xml
@@ -5,7 +5,7 @@
uk.gov.moj.cpp.listing
listing-parent
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
listing-performance-test
diff --git a/listing-query/listing-query-api/pom.xml b/listing-query/listing-query-api/pom.xml
index 5311a7e21..47e948d2f 100644
--- a/listing-query/listing-query-api/pom.xml
+++ b/listing-query/listing-query-api/pom.xml
@@ -4,7 +4,7 @@
uk.gov.moj.cpp.listing
listing-query
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
listing-query-api
diff --git a/listing-query/listing-query-api/src/main/java/uk/gov/moj/cpp/listing/query/api/HearingQueryApi.java b/listing-query/listing-query-api/src/main/java/uk/gov/moj/cpp/listing/query/api/HearingQueryApi.java
index 627a80017..ee32a3f51 100644
--- a/listing-query/listing-query-api/src/main/java/uk/gov/moj/cpp/listing/query/api/HearingQueryApi.java
+++ b/listing-query/listing-query-api/src/main/java/uk/gov/moj/cpp/listing/query/api/HearingQueryApi.java
@@ -9,6 +9,8 @@
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.createObjectBuilderWithFilter;
+import static uk.gov.moj.cpp.listing.domain.CourtListType.ALPHABETICAL;
+import static uk.gov.moj.cpp.listing.domain.CourtListType.JUDGE;
import static uk.gov.moj.cpp.listing.domain.CourtListType.ONLINE_PUBLIC;
import static uk.gov.moj.cpp.listing.domain.CourtListType.PUBLIC;
@@ -25,7 +27,9 @@
import uk.gov.moj.cpp.listing.common.xhibit.ReferenceDataLoader;
import uk.gov.moj.cpp.listing.domain.CourtListType;
import uk.gov.moj.cpp.listing.domain.referencedata.OrganisationUnit;
+import uk.gov.moj.cpp.listing.query.api.service.AlphabeticalCourtListService;
import uk.gov.moj.cpp.listing.query.api.service.ReferenceDataService;
+import uk.gov.moj.cpp.listing.query.document.generator.JudgeListTemplateAssembler;
import uk.gov.moj.cpp.listing.query.document.generator.JudiciaryNameMapper;
import uk.gov.moj.cpp.listing.query.document.generator.StandardPublicCourtListTemplateAssembler;
import uk.gov.moj.cpp.listing.query.view.HearingQueryView;
@@ -44,7 +48,6 @@
import javax.inject.Inject;
import uk.gov.justice.services.messaging.JsonObjects;
-import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonArrayBuilder;
import javax.json.JsonObject;
@@ -67,6 +70,8 @@ public class HearingQueryApi {
public static final String RESTRICTED = "restricted";
public static final String INCLUDE_APPLICATIONS = "includeApplications";
private static final String LIST_ID = "listId";
+ private static final String START_DATE = "startDate";
+ private static final String END_DATE = "endDate";
private static final String OU_L2_CODE = "oucodeL2Code";
private static final String FIRST_NAME = "firstName";
private static final String LAST_NAME = "lastName";
@@ -103,6 +108,12 @@ public class HearingQueryApi {
@Inject
private StandardPublicCourtListTemplateAssembler standardPublicCourtListAssembler;
+ @Inject
+ private AlphabeticalCourtListService alphabeticalCourtListService;
+
+ @Inject
+ private JudgeListTemplateAssembler judgeListTemplateAssembler;
+
@Inject
private ReferenceDataService referenceDataService;
@@ -185,18 +196,23 @@ public JsonEnvelope searchHearingsForCourtListPayload(final JsonEnvelope query)
final String courtCentreId = query.payloadAsJsonObject().getString(COURT_CENTRE_ID, null);
final String courtRoomId = query.payloadAsJsonObject().getString(COURT_ROOM_ID, null);
+ final String startDate = query.payloadAsJsonObject().getString(START_DATE, null);
final String listId = query.payloadAsJsonObject().getString(LIST_ID);
final boolean restricted = Optional.ofNullable(query.payloadAsJsonObject().get(RESTRICTED)).map(restrictedJson -> Boolean.valueOf(restrictedJson.toString())).orElse(false);
final boolean includeApplications = Optional.ofNullable(query.payloadAsJsonObject().get(INCLUDE_APPLICATIONS)).map(includeApplicationsJson -> Boolean.valueOf(includeApplicationsJson.toString())).orElse(false);
final Optional courtListType = CourtListType.valueFor(listId);
if(courtListType.isPresent()) {
- final JsonEnvelope queryResponse = hearingQueryView.getCourtListContent(query);
- final Optional courtListData = standardPublicCourtListAssembler.assemble(queryResponse, courtCentreId, courtRoomId, courtListType.get(), restricted, includeApplications);
+ final CourtListType listType = courtListType.get();
+ // JUDGE uses a different query (range search by judge); all other types use the standard court list content.
+ final JsonEnvelope queryResponse = JUDGE.equals(listType)
+ ? hearingQueryView.rangeSearchHearingsForJudge(query)
+ : hearingQueryView.getCourtListContent(query);
+ final Optional courtListData = buildCourtListData(queryResponse, courtCentreId, courtRoomId, listType, restricted, includeApplications, startDate);
if (courtListData.isPresent()) {
final JsonObject courtListPayload = courtListData.get();
final boolean isWelsh = referenceDataService.isHearingLanguageWelsh(queryResponse, courtCentreId).orElse(false);
- final String templateName = getTemplateName(courtListType.get(), isWelsh);
+ final String templateName = getTemplateName(listType, isWelsh);
final JsonObjectBuilder builder = JsonObjects.createObjectBuilder();
courtListPayload.forEach(builder::add);
builder.add("templateName", templateName);
@@ -218,16 +234,16 @@ public JsonEnvelope getDailyList(final JsonEnvelope query) {
final String weekCommencingStartDate = payload.getString(WEEK_COMMENCING_START_DATE, null);
final boolean isWeekCommencing = weekCommencingStartDate != null;
- final String startDate = isWeekCommencing ? weekCommencingStartDate : payload.getString("startDate");
+ final String startDate = isWeekCommencing ? weekCommencingStartDate : payload.getString(START_DATE);
final String weekCommencingEndDate = isWeekCommencing ? payload.getString(WEEK_COMMENCING_END_DATE, null) : null;
- final String endDate = isWeekCommencing ? weekCommencingEndDate : payload.getString("endDate", null);
+ final String endDate = isWeekCommencing ? weekCommencingEndDate : payload.getString(END_DATE, null);
final JsonObjectBuilder requestPayloadBuilder = JsonObjects.createObjectBuilder()
.add(COURT_CENTRE_ID, courtCentreId)
- .add("startDate", startDate)
+ .add(START_DATE, startDate)
.add("publishCourtListType", documentType);
if (endDate != null) {
- requestPayloadBuilder.add("endDate", endDate);
+ requestPayloadBuilder.add(END_DATE, endDate);
}
final JsonEnvelope courtListEnvelope = envelopeFrom(
metadataFrom(query.metadata()).withName("listing.courtlist"),
@@ -518,8 +534,25 @@ private JsonEnvelope processGetCaseByDefendant(final JsonObject payload, final S
return this.hearingQueryView.getCasesByDefendantAndHearingDate(caseIds, defendants, hearingDate, query);
}
+ /**
+ * Builds the court list payload for the given type, routing ALPHABETICAL and JUDGE to their dedicated
+ * assemblers (mirroring the binary /courtlist endpoint). Without this, those types fall through to the
+ * standard assembler and yield an empty payload.
+ */
+ private Optional buildCourtListData(final JsonEnvelope queryResponse, final String courtCentreId, final String courtRoomId,
+ final CourtListType courtListType, final boolean restricted,
+ final boolean includeApplications, final String startDate) {
+ if (ALPHABETICAL.equals(courtListType)) {
+ return alphabeticalCourtListService.buildAlphabeticalCourtListData(queryResponse, courtCentreId);
+ }
+ if (JUDGE.equals(courtListType)) {
+ return judgeListTemplateAssembler.assemble(queryResponse, courtCentreId, courtRoomId, courtListType, startDate);
+ }
+ return standardPublicCourtListAssembler.assemble(queryResponse, courtCentreId, courtRoomId, courtListType, restricted, includeApplications);
+ }
+
private String getTemplateName(final CourtListType courtListType, boolean welsh) {
- if ((PUBLIC.equals(courtListType) || ONLINE_PUBLIC.equals(courtListType)) && welsh) {
+ if ((ALPHABETICAL.equals(courtListType) || PUBLIC.equals(courtListType) || ONLINE_PUBLIC.equals(courtListType)) && welsh) {
return courtListType.getWelshTemplateName();
}
return courtListType.getTemplateName();
@@ -568,7 +601,7 @@ private JsonArrayBuilder buildApplicationsWithEnrichedPayload(final JsonEnvelope
if (appDetails.isPresent()) {
final CourtApplication courtApplicationObj = jsonObjectToObjectConverter.convert(appDetails.get().getJsonObject("courtApplication"), CourtApplication.class);
- final JsonObjectBuilder appBuilder = Json.createObjectBuilder();
+ final JsonObjectBuilder appBuilder = JsonObjects.createObjectBuilder();
application.forEach(appBuilder::add);
appBuilder.add("applicationTypeCode", courtApplicationObj.getType().getCode());
applicationsBuilder.add(appBuilder.build());
@@ -584,7 +617,7 @@ private JsonArrayBuilder buildApplicationsWithEnrichedPayload(final JsonEnvelope
}
private static JsonObject buildHearingPayloadWithUpdatedApplications(final JsonObject hearing, final JsonArrayBuilder applicationsBuilder) {
- final JsonObjectBuilder hearingBuilder = Json.createObjectBuilder();
+ final JsonObjectBuilder hearingBuilder = JsonObjects.createObjectBuilder();
hearing.forEach((key, value) -> {
if (!COURT_APPLICATIONS.equals(key)) {
hearingBuilder.add(key, value);
@@ -595,7 +628,7 @@ private static JsonObject buildHearingPayloadWithUpdatedApplications(final JsonO
}
private static @NonNull JsonObjectBuilder buildResponsePayloadWithUpdatedHearing(final JsonObject payload, final JsonArrayBuilder hearingsBuilder) {
- final JsonObjectBuilder payloadBuilder = Json.createObjectBuilder();
+ final JsonObjectBuilder payloadBuilder = JsonObjects.createObjectBuilder();
payload.forEach((key, value) -> {
if (!HEARINGS.equals(key)) {
payloadBuilder.add(key, value);
diff --git a/listing-query/listing-query-api/src/test/java/uk/gov/moj/cpp/listing/query/api/HearingQueryApiTest.java b/listing-query/listing-query-api/src/test/java/uk/gov/moj/cpp/listing/query/api/HearingQueryApiTest.java
index f26d3aa78..f965cb6dd 100644
--- a/listing-query/listing-query-api/src/test/java/uk/gov/moj/cpp/listing/query/api/HearingQueryApiTest.java
+++ b/listing-query/listing-query-api/src/test/java/uk/gov/moj/cpp/listing/query/api/HearingQueryApiTest.java
@@ -19,8 +19,10 @@
import static org.junit.jupiter.api.Assertions.assertSame;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom;
@@ -31,6 +33,8 @@
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.moj.cpp.listing.domain.CourtListType.ALPHABETICAL;
+import static uk.gov.moj.cpp.listing.domain.CourtListType.JUDGE;
import static uk.gov.moj.cpp.listing.domain.CourtListType.ONLINE_PUBLIC;
import static uk.gov.moj.cpp.listing.domain.CourtListType.PRISON;
import static uk.gov.moj.cpp.listing.domain.CourtListType.PUBLIC;
@@ -49,8 +53,10 @@
import uk.gov.moj.cpp.listing.common.xhibit.ReferenceDataLoader;
import uk.gov.moj.cpp.listing.domain.CourtListType;
import uk.gov.moj.cpp.listing.domain.referencedata.OrganisationUnit;
+import uk.gov.moj.cpp.listing.query.api.service.AlphabeticalCourtListService;
import uk.gov.moj.cpp.listing.query.api.service.ReferenceDataService;
import uk.gov.moj.cpp.listing.query.api.util.FileUtil;
+import uk.gov.moj.cpp.listing.query.document.generator.JudgeListTemplateAssembler;
import uk.gov.moj.cpp.listing.query.document.generator.JudiciaryNameMapper;
import uk.gov.moj.cpp.listing.query.document.generator.StandardPublicCourtListTemplateAssembler;
import uk.gov.moj.cpp.listing.query.view.HearingQueryView;
@@ -118,6 +124,12 @@ public class HearingQueryApiTest {
@Mock
private StandardPublicCourtListTemplateAssembler standardPublicCourtListAssembler;
+ @Mock
+ private AlphabeticalCourtListService alphabeticalCourtListService;
+
+ @Mock
+ private JudgeListTemplateAssembler judgeListTemplateAssembler;
+
@Mock
private ReferenceDataService referenceDataService;
@@ -333,6 +345,60 @@ public void shouldReturnPayloadWithTemplateNameWhenUshersMagistrateList() {
assertThat(returnedEnvelope.payloadAsJsonObject().getString("templateName"), is("UshersMagistrateList"));
}
+ @Test
+ public void shouldRouteAlphabeticalToAlphabeticalServiceAndReturnCourtListTemplate() {
+ final JsonEnvelope query = envelopeFrom(
+ metadataBuilder()
+ .withId(fromString("6d4ced64-b058-4bd4-a652-98d8230b92a5"))
+ .withName("listing.search.court.list.payload"),
+ createObjectBuilder()
+ .add(COURT_CENTRE_ID, randomUUID().toString())
+ .add(COURT_ROOM_ID, randomUUID().toString())
+ .add(LIST_ID, ALPHABETICAL.toString())
+ .build());
+
+ final JsonEnvelope courtListContent = mock(JsonEnvelope.class);
+ when(hearingQueryView.getCourtListContent(query)).thenReturn(courtListContent);
+ when(alphabeticalCourtListService.buildAlphabeticalCourtListData(any(JsonEnvelope.class), any(String.class)))
+ .thenReturn(Optional.of(createObjectBuilder().add("id", "id1").build()));
+ when(referenceDataService.isHearingLanguageWelsh(any(JsonEnvelope.class), any(String.class))).thenReturn(Optional.empty());
+
+ final JsonEnvelope returnedEnvelope = hearingQueryApi.searchHearingsForCourtListPayload(query);
+
+ assertThat(returnedEnvelope.payloadAsJsonObject().getString("id"), is("id1"));
+ assertThat(returnedEnvelope.payloadAsJsonObject().getString("templateName"), is("CourtList"));
+ verify(alphabeticalCourtListService).buildAlphabeticalCourtListData(any(JsonEnvelope.class), any(String.class));
+ verify(standardPublicCourtListAssembler, never()).assemble(any(), any(), any(), any(), anyBoolean(), anyBoolean());
+ }
+
+ @Test
+ public void shouldRouteJudgeToJudgeAssemblerUsingJudgeRangeSearchAndReturnJudgeListTemplate() {
+ final JsonEnvelope query = envelopeFrom(
+ metadataBuilder()
+ .withId(fromString("6d4ced64-b058-4bd4-a652-98d8230b92a5"))
+ .withName("listing.search.court.list.payload"),
+ createObjectBuilder()
+ .add(COURT_CENTRE_ID, randomUUID().toString())
+ .add(COURT_ROOM_ID, randomUUID().toString())
+ .add("startDate", "2026-06-03")
+ .add(LIST_ID, JUDGE.toString())
+ .build());
+
+ final JsonEnvelope judgeContent = mock(JsonEnvelope.class);
+ when(hearingQueryView.rangeSearchHearingsForJudge(query)).thenReturn(judgeContent);
+ when(judgeListTemplateAssembler.assemble(any(JsonEnvelope.class), any(String.class), any(String.class), any(CourtListType.class), any(String.class)))
+ .thenReturn(Optional.of(createObjectBuilder().add("id", "id1").build()));
+ when(referenceDataService.isHearingLanguageWelsh(any(JsonEnvelope.class), any(String.class))).thenReturn(Optional.empty());
+
+ final JsonEnvelope returnedEnvelope = hearingQueryApi.searchHearingsForCourtListPayload(query);
+
+ assertThat(returnedEnvelope.payloadAsJsonObject().getString("id"), is("id1"));
+ assertThat(returnedEnvelope.payloadAsJsonObject().getString("templateName"), is("JudgeList"));
+ verify(hearingQueryView).rangeSearchHearingsForJudge(query);
+ verify(hearingQueryView, never()).getCourtListContent(query);
+ verify(judgeListTemplateAssembler).assemble(any(JsonEnvelope.class), any(String.class), any(String.class), any(CourtListType.class), any(String.class));
+ }
+
@Test
public void shouldReturnPayloadWithTemplateNameWhenOnlinePublicCourtList() {
final JsonEnvelope query = envelopeFrom(
@@ -1508,4 +1574,4 @@ private JsonObject returnAsJsonObject(final String expectedJsonPath) {
}
}
-}
\ No newline at end of file
+}
diff --git a/listing-query/listing-query-view/pom.xml b/listing-query/listing-query-view/pom.xml
index 649d3eb3b..74f4b2344 100644
--- a/listing-query/listing-query-view/pom.xml
+++ b/listing-query/listing-query-view/pom.xml
@@ -4,7 +4,7 @@
uk.gov.moj.cpp.listing
listing-query
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
listing-query-view
diff --git a/listing-query/listing-query-view/src/test/java/uk/gov/moj/cpp/listing/query/view/service/ProgressionServiceTest.java b/listing-query/listing-query-view/src/test/java/uk/gov/moj/cpp/listing/query/view/service/ProgressionServiceTest.java
index 8726239de..d36ca2b4b 100644
--- a/listing-query/listing-query-view/src/test/java/uk/gov/moj/cpp/listing/query/view/service/ProgressionServiceTest.java
+++ b/listing-query/listing-query-view/src/test/java/uk/gov/moj/cpp/listing/query/view/service/ProgressionServiceTest.java
@@ -1,7 +1,7 @@
package uk.gov.moj.cpp.listing.query.view.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.codehaus.groovy.runtime.InvokerHelper.asList;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasSize;
diff --git a/listing-query/pom.xml b/listing-query/pom.xml
index 291216735..547fd0c76 100644
--- a/listing-query/pom.xml
+++ b/listing-query/pom.xml
@@ -3,7 +3,7 @@
uk.gov.moj.cpp.listing
listing-parent
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-service/pom.xml b/listing-service/pom.xml
index 46ec34607..a149d9f16 100644
--- a/listing-service/pom.xml
+++ b/listing-service/pom.xml
@@ -3,7 +3,7 @@
uk.gov.moj.cpp.listing
listing-parent
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-viewstore/listing-viewstore-liquibase/pom.xml b/listing-viewstore/listing-viewstore-liquibase/pom.xml
index e096be1f8..0d15caa98 100644
--- a/listing-viewstore/listing-viewstore-liquibase/pom.xml
+++ b/listing-viewstore/listing-viewstore-liquibase/pom.xml
@@ -3,7 +3,7 @@
listing-viewstore
uk.gov.moj.cpp.listing
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-viewstore/listing-viewstore-persistence/pom.xml b/listing-viewstore/listing-viewstore-persistence/pom.xml
index f09d66348..7bc495336 100644
--- a/listing-viewstore/listing-viewstore-persistence/pom.xml
+++ b/listing-viewstore/listing-viewstore-persistence/pom.xml
@@ -3,7 +3,7 @@
uk.gov.moj.cpp.listing
listing-viewstore
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/listing-viewstore/pom.xml b/listing-viewstore/pom.xml
index 76f6bb81c..1fdb5cf29 100644
--- a/listing-viewstore/pom.xml
+++ b/listing-viewstore/pom.xml
@@ -3,7 +3,7 @@
listing-parent
uk.gov.moj.cpp.listing
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
4.0.0
diff --git a/pom.xml b/pom.xml
index ca744cc51..9824fffe1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
uk.gov.moj.cpp.listing
listing-parent
- 17.103.201-cct-1981-SNAPSHOT
+ 17.104.4-cct-1981-SNAPSHOT
pom
Listing Context Microservice Parent