From 71fb6992458ee5b1f0f4e37912b0affe6f5128a1 Mon Sep 17 00:00:00 2001 From: yashpalnegi Date: Mon, 10 Aug 2026 16:18:25 +0100 Subject: [PATCH 1/2] fix end URL and added extra logging --- ...ssTransparencyReportRequestedProcessor.java | 18 +++++++++++++++--- .../processor/helper/HttpConnectionHelper.java | 18 ++++++++++++++---- .../service/ApplicationParameters.java | 2 +- .../service/CourtListPublishingService.java | 15 +++++++++++++-- .../stub/CourtListPublishingServiceStub.java | 2 +- 5 files changed, 44 insertions(+), 11 deletions(-) diff --git a/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/PressTransparencyReportRequestedProcessor.java b/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/PressTransparencyReportRequestedProcessor.java index 49b42e0af9..2b67788bbe 100644 --- a/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/PressTransparencyReportRequestedProcessor.java +++ b/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/PressTransparencyReportRequestedProcessor.java @@ -148,18 +148,27 @@ public void handlePressTransparencyPDFReportRequest(final JsonEnvelope envelope) public void handlePressTransparencyJSONReportRequest(final JsonEnvelope envelope) { payloadHelper.initCache(); - final List pendingCasesFromViewStore = getPendingCasesFromViewStore(envelope); final JsonObject eventPayload = envelope.payloadAsJsonObject(); final UUID reportId = fromString(eventPayload.getString(PRESS_TRANSPARENCY_REPORT_ID)); - final boolean isWelsh = WELSH.name().equalsIgnoreCase(eventPayload.getString(LANGUAGE)); + final String requestType = eventPayload.getString(REQUEST_TYPE); + final String language = eventPayload.getString(LANGUAGE); + LOGGER.info("handling press transparency JSON report request for press report {}, requestType {}, language {}", + reportId, requestType, language); + + final List pendingCasesFromViewStore = getPendingCasesFromViewStore(envelope); + LOGGER.info("fetched {} pending case(s) from view store for press report {}", pendingCasesFromViewStore.size(), reportId); + + final boolean isWelsh = WELSH.name().equalsIgnoreCase(language); LOGGER.info("generating press transparency JSON report for press report {}", reportId); publishCourtList(envelope, buildPayload(pendingCasesFromViewStore, true, envelope, isWelsh)); + LOGGER.info("completed handling press transparency JSON report request for press report {}", reportId); } private void publishCourtList(final JsonEnvelope envelope, final JsonObject payloadForDocumentGeneration) { - LOGGER.info("publishing sjp press pending cases list to court list publishing service"); final String type = envelope.payloadAsJsonObject().getString(REQUEST_TYPE); final String language = envelope.payloadAsJsonObject().getString(LANGUAGE); + LOGGER.info("building sjp press court list publish request, listType {}, requestType {}, language {}", + SJP_PRESS_LIST, type, language); final JsonObject courtListPublishRequest = createObjectBuilder() .add(LIST_TYPE, SJP_PRESS_LIST) .add(LANGUAGE, language) @@ -167,9 +176,12 @@ private void publishCourtList(final JsonEnvelope envelope, final JsonObject payl .add("listPayload", payloadForDocumentGeneration) .build(); + LOGGER.info("publishing sjp press pending cases list to court list publishing service"); try { courtListPublishingService.publishCourtList(courtListPublishRequest.toString()); + LOGGER.info("publishing sjp press pending cases list to court list publishing service called successfully"); } catch (IOException e) { + LOGGER.error("IO Exception happened while publishing sjp press court list", e); throw new RuntimeException("IO Exception happened while publishing sjp press court list", e); } } diff --git a/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/helper/HttpConnectionHelper.java b/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/helper/HttpConnectionHelper.java index a4aa12c623..c248ebaa01 100644 --- a/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/helper/HttpConnectionHelper.java +++ b/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/helper/HttpConnectionHelper.java @@ -3,28 +3,38 @@ import uk.gov.justice.services.common.http.HeaderConstants; import java.io.IOException; -import java.util.UUID; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class HttpConnectionHelper { + private static final Logger LOGGER = LoggerFactory.getLogger(HttpConnectionHelper.class); + private static final String CONTENT_TYPE = "content-type"; - private static final String APPLICATION_JSON_CONTENT_TYPE = "application/json"; + private static final String APPLICATION_JSON_CONTENT_TYPE = "application/vnd.courtlistpublishing-service.sjp.post+json"; + private static final String SYSTEM_USER_ID = "abce7b02-7872-4c0d-8ffc-a475fafd2819"; public Integer getResponseCode(final String url, final String payload) throws IOException { final HttpPost post = new HttpPost(url); post.addHeader(CONTENT_TYPE, APPLICATION_JSON_CONTENT_TYPE); - post.addHeader(HeaderConstants.USER_ID, UUID.randomUUID().toString()); + post.addHeader(HeaderConstants.USER_ID, SYSTEM_USER_ID); post.setEntity(new StringEntity(payload)); + LOGGER.info("sending POST request to url {}", url); try (CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = httpClient.execute(post)) { - return response.getStatusLine().getStatusCode(); + final int statusCode = response.getStatusLine().getStatusCode(); + LOGGER.info("received response from url {}, statusCode {}", url, statusCode); + return statusCode; + } catch (final IOException e) { + LOGGER.error("failed to send POST request to url {}", url, e); + throw e; } } } diff --git a/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/service/ApplicationParameters.java b/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/service/ApplicationParameters.java index b65dab8e01..62a5bb4fa0 100644 --- a/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/service/ApplicationParameters.java +++ b/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/service/ApplicationParameters.java @@ -16,7 +16,7 @@ public class ApplicationParameters { private String relayCaseOnCppFunctionPath; @Inject - @Value(key = "COURT_LIST_PUBLISHING_SERVICE_URL", defaultValue = "http://localhost:8080") + @Value(key = "COURT_LIST_PUBLISHING_SERVICE_URL", defaultValue = "http://localhost:8080/courtlistpublishing-service") private String courtListPublishingServiceUrl; diff --git a/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/service/CourtListPublishingService.java b/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/service/CourtListPublishingService.java index 98ff71495f..1160f8e21b 100644 --- a/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/service/CourtListPublishingService.java +++ b/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/service/CourtListPublishingService.java @@ -1,5 +1,7 @@ package uk.gov.moj.cpp.sjp.event.processor.service; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import uk.gov.moj.cpp.sjp.event.processor.helper.HttpConnectionHelper; import java.io.IOException; @@ -8,6 +10,7 @@ public class CourtListPublishingService { + private static final Logger LOGGER = LoggerFactory.getLogger(CourtListPublishingService.class); private static final String PUBLISH_SJP_COURT_LIST_PATH = "/api/court-list-publish/sjp/publishCourtList"; private HttpConnectionHelper httpConnectionHelper; @@ -25,7 +28,15 @@ public CourtListPublishingService(final HttpConnectionHelper httpConnectionHelpe } public Integer publishCourtList(final String payload) throws IOException { - return httpConnectionHelper.getResponseCode( - applicationParameters.getCourtListPublishingServiceUrl() + PUBLISH_SJP_COURT_LIST_PATH, payload); + final String url = applicationParameters.getCourtListPublishingServiceUrl() + PUBLISH_SJP_COURT_LIST_PATH; + LOGGER.info("publishing court list to url {}, payload size {} bytes", url, payload.length()); + try { + final Integer responseCode = httpConnectionHelper.getResponseCode(url, payload); + LOGGER.info("publish court list response from url {}, responseCode {}", url, responseCode); + return responseCode; + } catch (final IOException e) { + LOGGER.error("failed to publish court list to url {}", url, e); + throw e; + } } } diff --git a/sjp-integration-test/src/test/java/uk/gov/moj/sjp/it/stub/CourtListPublishingServiceStub.java b/sjp-integration-test/src/test/java/uk/gov/moj/sjp/it/stub/CourtListPublishingServiceStub.java index 49ef8ac36d..b65724b544 100644 --- a/sjp-integration-test/src/test/java/uk/gov/moj/sjp/it/stub/CourtListPublishingServiceStub.java +++ b/sjp-integration-test/src/test/java/uk/gov/moj/sjp/it/stub/CourtListPublishingServiceStub.java @@ -26,7 +26,7 @@ public class CourtListPublishingServiceStub { - private static final String PUBLISH_COURT_LIST_URL = "/api/court-list-publish/sjp/publishCourtList"; + private static final String PUBLISH_COURT_LIST_URL = "/courtlistpublishing-service/api/court-list-publish/sjp/publishCourtList"; private final static Logger LOGGER = LoggerFactory.getLogger(CourtListPublishingServiceStub.class); public static void stubPublishCourtListEndpoint() { From b603c993a4d130453557306d59ace09c0d9b9419 Mon Sep 17 00:00:00 2001 From: yashpalnegi Date: Mon, 10 Aug 2026 16:18:25 +0100 Subject: [PATCH 2/2] fix end URL and added extra logging --- ...sTransparencyReportRequestedProcessor.java | 18 ++++++++++--- .../helper/HttpConnectionHelper.java | 20 +++++++++++--- .../service/ApplicationParameters.java | 2 +- .../service/CourtListPublishingService.java | 26 +++++++++++++------ .../stub/CourtListPublishingServiceStub.java | 2 +- 5 files changed, 52 insertions(+), 16 deletions(-) diff --git a/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/PressTransparencyReportRequestedProcessor.java b/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/PressTransparencyReportRequestedProcessor.java index 49b42e0af9..2b67788bbe 100644 --- a/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/PressTransparencyReportRequestedProcessor.java +++ b/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/PressTransparencyReportRequestedProcessor.java @@ -148,18 +148,27 @@ public void handlePressTransparencyPDFReportRequest(final JsonEnvelope envelope) public void handlePressTransparencyJSONReportRequest(final JsonEnvelope envelope) { payloadHelper.initCache(); - final List pendingCasesFromViewStore = getPendingCasesFromViewStore(envelope); final JsonObject eventPayload = envelope.payloadAsJsonObject(); final UUID reportId = fromString(eventPayload.getString(PRESS_TRANSPARENCY_REPORT_ID)); - final boolean isWelsh = WELSH.name().equalsIgnoreCase(eventPayload.getString(LANGUAGE)); + final String requestType = eventPayload.getString(REQUEST_TYPE); + final String language = eventPayload.getString(LANGUAGE); + LOGGER.info("handling press transparency JSON report request for press report {}, requestType {}, language {}", + reportId, requestType, language); + + final List pendingCasesFromViewStore = getPendingCasesFromViewStore(envelope); + LOGGER.info("fetched {} pending case(s) from view store for press report {}", pendingCasesFromViewStore.size(), reportId); + + final boolean isWelsh = WELSH.name().equalsIgnoreCase(language); LOGGER.info("generating press transparency JSON report for press report {}", reportId); publishCourtList(envelope, buildPayload(pendingCasesFromViewStore, true, envelope, isWelsh)); + LOGGER.info("completed handling press transparency JSON report request for press report {}", reportId); } private void publishCourtList(final JsonEnvelope envelope, final JsonObject payloadForDocumentGeneration) { - LOGGER.info("publishing sjp press pending cases list to court list publishing service"); final String type = envelope.payloadAsJsonObject().getString(REQUEST_TYPE); final String language = envelope.payloadAsJsonObject().getString(LANGUAGE); + LOGGER.info("building sjp press court list publish request, listType {}, requestType {}, language {}", + SJP_PRESS_LIST, type, language); final JsonObject courtListPublishRequest = createObjectBuilder() .add(LIST_TYPE, SJP_PRESS_LIST) .add(LANGUAGE, language) @@ -167,9 +176,12 @@ private void publishCourtList(final JsonEnvelope envelope, final JsonObject payl .add("listPayload", payloadForDocumentGeneration) .build(); + LOGGER.info("publishing sjp press pending cases list to court list publishing service"); try { courtListPublishingService.publishCourtList(courtListPublishRequest.toString()); + LOGGER.info("publishing sjp press pending cases list to court list publishing service called successfully"); } catch (IOException e) { + LOGGER.error("IO Exception happened while publishing sjp press court list", e); throw new RuntimeException("IO Exception happened while publishing sjp press court list", e); } } diff --git a/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/helper/HttpConnectionHelper.java b/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/helper/HttpConnectionHelper.java index a4aa12c623..84294f1b68 100644 --- a/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/helper/HttpConnectionHelper.java +++ b/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/helper/HttpConnectionHelper.java @@ -10,21 +10,35 @@ import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class HttpConnectionHelper { + private static final Logger LOGGER = LoggerFactory.getLogger(HttpConnectionHelper.class); + private static final String CONTENT_TYPE = "content-type"; - private static final String APPLICATION_JSON_CONTENT_TYPE = "application/json"; + private static final String APPLICATION_JSON_CONTENT_TYPE = "application/vnd.courtlistpublishing-service.sjp.post+json"; public Integer getResponseCode(final String url, final String payload) throws IOException { + return getResponseCode(url, payload, UUID.randomUUID().toString()); + } + + public Integer getResponseCode(final String url, final String payload, final String userId) throws IOException { final HttpPost post = new HttpPost(url); post.addHeader(CONTENT_TYPE, APPLICATION_JSON_CONTENT_TYPE); - post.addHeader(HeaderConstants.USER_ID, UUID.randomUUID().toString()); + post.addHeader(HeaderConstants.USER_ID, userId); post.setEntity(new StringEntity(payload)); + LOGGER.info("sending POST request to url {}", url); try (CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = httpClient.execute(post)) { - return response.getStatusLine().getStatusCode(); + final int statusCode = response.getStatusLine().getStatusCode(); + LOGGER.info("received response from url {}, statusCode {}", url, statusCode); + return statusCode; + } catch (final IOException e) { + LOGGER.error("failed to send POST request to url {}", url, e); + throw e; } } } diff --git a/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/service/ApplicationParameters.java b/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/service/ApplicationParameters.java index b65dab8e01..62a5bb4fa0 100644 --- a/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/service/ApplicationParameters.java +++ b/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/service/ApplicationParameters.java @@ -16,7 +16,7 @@ public class ApplicationParameters { private String relayCaseOnCppFunctionPath; @Inject - @Value(key = "COURT_LIST_PUBLISHING_SERVICE_URL", defaultValue = "http://localhost:8080") + @Value(key = "COURT_LIST_PUBLISHING_SERVICE_URL", defaultValue = "http://localhost:8080/courtlistpublishing-service") private String courtListPublishingServiceUrl; diff --git a/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/service/CourtListPublishingService.java b/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/service/CourtListPublishingService.java index 98ff71495f..95c12b7457 100644 --- a/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/service/CourtListPublishingService.java +++ b/sjp-event/sjp-event-processor/src/main/java/uk/gov/moj/cpp/sjp/event/processor/service/CourtListPublishingService.java @@ -1,5 +1,7 @@ package uk.gov.moj.cpp.sjp.event.processor.service; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import uk.gov.moj.cpp.sjp.event.processor.helper.HttpConnectionHelper; import java.io.IOException; @@ -8,24 +10,32 @@ public class CourtListPublishingService { + private static final Logger LOGGER = LoggerFactory.getLogger(CourtListPublishingService.class); private static final String PUBLISH_SJP_COURT_LIST_PATH = "/api/court-list-publish/sjp/publishCourtList"; - private HttpConnectionHelper httpConnectionHelper; + private final HttpConnectionHelper httpConnectionHelper; @Inject private ApplicationParameters applicationParameters; + @Inject + private SystemIdMapperService systemIdMapperService; + public CourtListPublishingService() { this.httpConnectionHelper = new HttpConnectionHelper(); } - public CourtListPublishingService(final HttpConnectionHelper httpConnectionHelper, final ApplicationParameters applicationParameters) { - this.httpConnectionHelper = httpConnectionHelper; - this.applicationParameters = applicationParameters; - } - public Integer publishCourtList(final String payload) throws IOException { - return httpConnectionHelper.getResponseCode( - applicationParameters.getCourtListPublishingServiceUrl() + PUBLISH_SJP_COURT_LIST_PATH, payload); + final String url = applicationParameters.getCourtListPublishingServiceUrl() + PUBLISH_SJP_COURT_LIST_PATH; + final String systemUserId = systemIdMapperService.getSystemUserId().toString(); + LOGGER.info("publishing court list to url {}, payload size {} bytes", url, payload.length()); + try { + final Integer responseCode = httpConnectionHelper.getResponseCode(url, payload, systemUserId); + LOGGER.info("publish court list response from url {}, responseCode {}", url, responseCode); + return responseCode; + } catch (final IOException e) { + LOGGER.error("failed to publish court list to url {}", url, e); + throw e; + } } } diff --git a/sjp-integration-test/src/test/java/uk/gov/moj/sjp/it/stub/CourtListPublishingServiceStub.java b/sjp-integration-test/src/test/java/uk/gov/moj/sjp/it/stub/CourtListPublishingServiceStub.java index 49ef8ac36d..b65724b544 100644 --- a/sjp-integration-test/src/test/java/uk/gov/moj/sjp/it/stub/CourtListPublishingServiceStub.java +++ b/sjp-integration-test/src/test/java/uk/gov/moj/sjp/it/stub/CourtListPublishingServiceStub.java @@ -26,7 +26,7 @@ public class CourtListPublishingServiceStub { - private static final String PUBLISH_COURT_LIST_URL = "/api/court-list-publish/sjp/publishCourtList"; + private static final String PUBLISH_COURT_LIST_URL = "/courtlistpublishing-service/api/court-list-publish/sjp/publishCourtList"; private final static Logger LOGGER = LoggerFactory.getLogger(CourtListPublishingServiceStub.class); public static void stubPublishCourtListEndpoint() {