Skip to content

Commit ac5ee8d

Browse files
authored
FACT-1770 adds case reference to logs (#3368)
* - adds case reference to logs * - checkstyle fixes * - adds case reference to handling envelope logs * - checkstyle fixes * - updates with new rule name to stop warning about name change * - updates test to reflect envelope calls getCaseNumber now for logging * - adds case reference to logs * - cleanup log message * - exclude jms versions of files from sonar * - adds whitespace * - changes to using optional so relevant message is there when case reference not present * - fix modifiers in wrong order * - adds space
1 parent 7c79d57 commit ac5ee8d

File tree

11 files changed

+68
-27
lines changed

11 files changed

+68
-27
lines changed

build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ sonarqube {
196196
property "sonar.coverage.jacoco.xmlReportPaths", jacocoTestReport.reports.xml.outputLocation.get().asFile.absolutePath
197197
property "sonar.pitest.mode", "reuseReport"
198198
property "sonar.pitest.reportsDirectory", "build/reports/pitest"
199-
property "sonar.exclusions", "**/model/out/*,**/config/**,**/LeaseAcquirer.java"
199+
property "sonar.exclusions", "**/model/out/*,**/config/**,**/LeaseAcquirer.java,**/services/jms/JmsFileContentProcessor.java,**/tasks/jms/JmsBlobProcessorTask.java"
200200
}
201201
}
202202

config/pmd/ruleset.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
<exclude name="UncommentedEmptyMethodBody" />
6868
</rule>
6969
<rule ref="category/java/errorprone.xml">
70-
<exclude name="BeanMembersShouldSerialize" />
70+
<exclude name="NonSerializableClass" />
7171
</rule>
7272
<rule ref="category/java/multithreading.xml" />
7373
<rule ref="category/java/performance.xml" />

src/main/java/uk/gov/hmcts/reform/bulkscanprocessor/services/DeleteFilesService.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import uk.gov.hmcts.reform.bulkscanprocessor.services.storage.LeaseAcquirer;
1515

1616
import java.util.List;
17+
import java.util.Optional;
1718

1819
import static com.azure.storage.blob.models.BlobErrorCode.BLOB_NOT_FOUND;
1920

@@ -83,8 +84,9 @@ public void processCompleteFiles(BlobContainerClient container) {
8384
*/
8485
private boolean tryProcessCompleteEnvelope(BlobContainerClient container, Envelope envelope) {
8586

86-
String loggingContext = "File name: " + envelope.getZipFileName()
87-
+ ", Container: " + container.getBlobContainerName();
87+
String loggingContext = String.format("File name: %s, Container: %s, Case reference: %s",
88+
envelope.getZipFileName(), container.getBlobContainerName(),
89+
Optional.ofNullable(envelope.getCaseNumber()).orElse("(Not Present)"));
8890

8991
try {
9092
log.info("Deleting file. {}", loggingContext);

src/main/java/uk/gov/hmcts/reform/bulkscanprocessor/services/EnvelopeActionService.java

+9-3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import uk.gov.hmcts.reform.bulkscanprocessor.model.common.Event;
2020

2121
import java.time.Instant;
22+
import java.util.Optional;
2223
import java.util.UUID;
2324

2425
import static java.time.Duration.between;
@@ -41,6 +42,8 @@ public class EnvelopeActionService {
4142
private final ProcessEventRepository processEventRepository;
4243
private final long notificationTimeoutHr;
4344

45+
private static final String CASE_REFERENCE_NOT_PRESENT = "(NOT PRESENT)";
46+
4447
/**
4548
* Constructor for EnvelopeActionService.
4649
* @param envelopeRepository EnvelopeRepository
@@ -79,7 +82,8 @@ public void reprocessEnvelope(UUID envelopeId) {
7982
envelope.setStatus(UPLOADED);
8083
envelopeRepository.save(envelope);
8184

82-
log.info("Envelope {} status changed to UPLOADED", envelope.getZipFileName());
85+
log.info("Envelope {} status changed to UPLOADED. Case reference: {}", envelope.getZipFileName(),
86+
Optional.ofNullable(envelope.getCaseNumber()).orElse(CASE_REFERENCE_NOT_PRESENT));
8387
}
8488

8589
/**
@@ -104,7 +108,8 @@ public void moveEnvelopeToCompleted(UUID envelopeId) {
104108
envelope.setStatus(COMPLETED);
105109
envelopeRepository.save(envelope);
106110

107-
log.info("Envelope {} status changed to COMPLETED", envelope.getZipFileName());
111+
log.info("Envelope {} status changed to COMPLETED. Case Reference: {}", envelope.getZipFileName(),
112+
Optional.ofNullable(envelope.getCaseNumber()).orElse(CASE_REFERENCE_NOT_PRESENT));
108113
}
109114

110115
/**
@@ -129,7 +134,8 @@ public void moveEnvelopeToAborted(UUID envelopeId) {
129134
envelope.setStatus(ABORTED);
130135
envelopeRepository.save(envelope);
131136

132-
log.info("Envelope {} status changed to ABORTED", envelope.getZipFileName());
137+
log.info("Envelope {} status changed to ABORTED. Case reference: {}", envelope.getZipFileName(),
138+
Optional.ofNullable(envelope.getCaseNumber()).orElse(CASE_REFERENCE_NOT_PRESENT));
133139
}
134140

135141
/**

src/main/java/uk/gov/hmcts/reform/bulkscanprocessor/services/FileContentProcessor.java

+14-5
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import uk.gov.hmcts.reform.bulkscanprocessor.tasks.processor.ZipFileContentDetail;
1616
import uk.gov.hmcts.reform.bulkscanprocessor.tasks.processor.ZipFileProcessor;
1717

18+
import java.util.Optional;
1819
import java.util.zip.ZipInputStream;
1920

2021
import static java.util.stream.Collectors.joining;
@@ -40,6 +41,8 @@ public class FileContentProcessor {
4041

4142
private final FileRejector fileRejector;
4243

44+
private static final String CASE_REFERENCE_NOT_PRESENT = "(NOT PRESENT)";
45+
4346
/**
4447
* Constructor for the FileContentProcessor.
4548
* @param zipFileProcessor The zip file processor
@@ -70,18 +73,20 @@ public void processZipFileContent(
7073
String zipFilename,
7174
String containerName
7275
) {
76+
Optional<String> caseReference = Optional.empty();
7377
try {
7478
ZipFileContentDetail zipDetail = zipFileProcessor.getZipContentDetail(zis, zipFilename);
7579

7680
InputEnvelope inputEnvelope = envelopeProcessor.parseEnvelope(zipDetail.getMetadata(), zipFilename);
81+
caseReference = Optional.ofNullable(inputEnvelope.caseNumber);
7782

7883
log.info(
7984
"Parsed envelope. File name: {}. Container: {}. Payment DCNs: {}. Document DCNs: {}, caseNumber {}",
8085
zipFilename,
8186
containerName,
8287
inputEnvelope.payments.stream().map(payment -> payment.documentControlNumber).collect(joining(",")),
8388
inputEnvelope.scannableItems.stream().map(doc -> doc.documentControlNumber).collect(joining(",")),
84-
inputEnvelope.caseNumber
89+
caseReference.orElse(CASE_REFERENCE_NOT_PRESENT)
8590
);
8691

8792
envelopeHandler.handleEnvelope(
@@ -92,22 +97,26 @@ public void processZipFileContent(
9297
);
9398
} catch (PaymentsDisabledException ex) {
9499
log.error(
95-
"Rejected file {} from container {} - Payments processing is disabled", zipFilename, containerName
100+
"Rejected file {} from container {}, Case reference: {} - Payments processing is disabled",
101+
zipFilename, containerName, caseReference.orElse(CASE_REFERENCE_NOT_PRESENT)
96102
);
97103
Long eventId = createEvent(FILE_VALIDATION_FAILURE, containerName, zipFilename, ex.getMessage());
98104
fileRejector.handleInvalidBlob(eventId, containerName, zipFilename, ex);
99105
} catch (ServiceDisabledException ex) {
100106
log.error(
101-
"Rejected file {} from container {} - Service is disabled", zipFilename, containerName
107+
"Rejected file {} from container {}, Case reference: {} - Service is disabled",
108+
zipFilename, containerName, caseReference.orElse(CASE_REFERENCE_NOT_PRESENT)
102109
);
103110
Long eventId = createEvent(DISABLED_SERVICE_FAILURE, containerName, zipFilename, ex.getMessage());
104111
fileRejector.handleInvalidBlob(eventId, containerName, zipFilename, ex);
105112
} catch (EnvelopeRejectionException ex) {
106-
log.warn("Rejected file {} from container {} - invalid", zipFilename, containerName, ex);
113+
log.warn("Rejected file {} from container {}, Case reference: {} - invalid",
114+
zipFilename, containerName, caseReference.orElse(CASE_REFERENCE_NOT_PRESENT), ex);
107115
Long eventId = createEvent(FILE_VALIDATION_FAILURE, containerName, zipFilename, ex.getMessage());
108116
fileRejector.handleInvalidBlob(eventId, containerName, zipFilename, ex);
109117
} catch (PreviouslyFailedToUploadException ex) {
110-
log.warn("Rejected file {} from container {} - failed previously", zipFilename, containerName, ex);
118+
log.warn("Rejected file {} from container {}, Case reference: {} - failed previously",
119+
zipFilename, containerName, caseReference.orElse(CASE_REFERENCE_NOT_PRESENT), ex);
111120
createEvent(DOC_UPLOAD_FAILURE, containerName, zipFilename, ex.getMessage());
112121
} catch (Exception ex) {
113122
log.error("Failed to process file {} from container {}", zipFilename, containerName, ex);

src/main/java/uk/gov/hmcts/reform/bulkscanprocessor/services/OrchestratorNotificationService.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import uk.gov.hmcts.reform.bulkscanprocessor.model.out.msg.EnvelopeMsg;
1616
import uk.gov.hmcts.reform.bulkscanprocessor.services.servicebus.ServiceBusSendHelper;
1717

18+
import java.util.Optional;
1819
import java.util.concurrent.atomic.AtomicInteger;
1920

2021
/**
@@ -94,7 +95,7 @@ private void createEvent(Envelope envelope, Event event) {
9495
private void updateStatus(Envelope envelope) {
9596
envelope.setStatus(Status.NOTIFICATION_SENT);
9697
envelopeRepo.saveAndFlush(envelope);
97-
98-
log.info("Envelope {} status changed to NOTIFICATION_SENT", envelope.getZipFileName());
98+
log.info("Envelope {} status changed to NOTIFICATION_SENT. Case reference: {}", envelope.getZipFileName(),
99+
Optional.ofNullable(envelope.getCaseNumber()).orElse("(NOT PRESENT)"));
99100
}
100101
}

src/main/java/uk/gov/hmcts/reform/bulkscanprocessor/services/jms/JmsFileContentProcessor.java

+15-5
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import uk.gov.hmcts.reform.bulkscanprocessor.tasks.processor.ZipFileContentDetail;
1717
import uk.gov.hmcts.reform.bulkscanprocessor.tasks.processor.ZipFileProcessor;
1818

19+
import java.util.Optional;
1920
import java.util.zip.ZipInputStream;
2021

2122
import static java.util.stream.Collectors.joining;
@@ -41,6 +42,8 @@ public class JmsFileContentProcessor {
4142

4243
private final JmsFileRejector fileRejector;
4344

45+
private static final String CASE_REFERENCE_NOT_PRESENT = "(NOT PRESENT)";
46+
4447
/**
4548
* Constructor for JmsFileContentProcessor.
4649
* @param zipFileProcessor The zip file processor
@@ -71,18 +74,21 @@ public void processZipFileContent(
7174
String zipFilename,
7275
String containerName
7376
) {
77+
78+
Optional<String> caseReference = Optional.empty();
7479
try {
7580
ZipFileContentDetail zipDetail = zipFileProcessor.getZipContentDetail(zis, zipFilename);
7681

7782
InputEnvelope inputEnvelope = envelopeProcessor.parseEnvelope(zipDetail.getMetadata(), zipFilename);
83+
caseReference = Optional.ofNullable(inputEnvelope.caseNumber);
7884

7985
log.info(
8086
"Parsed envelope. File name: {}. Container: {}. Payment DCNs: {}. Document DCNs: {}, caseNumber {}",
8187
zipFilename,
8288
containerName,
8389
inputEnvelope.payments.stream().map(payment -> payment.documentControlNumber).collect(joining(",")),
8490
inputEnvelope.scannableItems.stream().map(doc -> doc.documentControlNumber).collect(joining(",")),
85-
inputEnvelope.caseNumber
91+
caseReference.orElse(CASE_REFERENCE_NOT_PRESENT)
8692
);
8793

8894
envelopeHandler.handleEnvelope(
@@ -93,21 +99,25 @@ public void processZipFileContent(
9399
);
94100
} catch (PaymentsDisabledException ex) {
95101
log.error(
96-
"Rejected file {} from container {} - Payments processing is disabled", zipFilename, containerName
102+
"Rejected file {} from container {}, Case reference: {} - Payments processing is disabled",
103+
zipFilename, containerName, caseReference.orElse(CASE_REFERENCE_NOT_PRESENT)
97104
);
98105
Long eventId = createEvent(FILE_VALIDATION_FAILURE, containerName, zipFilename, ex.getMessage());
99106
fileRejector.handleInvalidBlob(eventId, containerName, zipFilename, ex);
100107
} catch (ServiceDisabledException ex) {
101108
log.error(
102-
"Rejected file {} from container {} - Service is disabled", zipFilename, containerName
109+
"Rejected file {} from container {}, Case reference: {} - Service is disabled",
110+
zipFilename, containerName, caseReference.orElse(CASE_REFERENCE_NOT_PRESENT)
103111
);
104112
Long eventId = createEvent(DISABLED_SERVICE_FAILURE, containerName, zipFilename, ex.getMessage());
105113
fileRejector.handleInvalidBlob(eventId, containerName, zipFilename, ex);
106114
} catch (PreviouslyFailedToUploadException ex) {
107-
log.warn("Rejected file {} from container {} - failed previously", zipFilename, containerName, ex);
115+
log.warn("Rejected file {} from container {}, Case reference: {} - failed previously",
116+
zipFilename, containerName, caseReference.orElse(CASE_REFERENCE_NOT_PRESENT), ex);
108117
createEvent(DOC_UPLOAD_FAILURE, containerName, zipFilename, ex.getMessage());
109118
} catch (EnvelopeRejectionException ex) {
110-
log.warn("Rejected file {} from container {} - invalid", zipFilename, containerName, ex);
119+
log.warn("Rejected file {} from container {}, Case reference: {} - invalid",
120+
zipFilename, containerName, caseReference.orElse(CASE_REFERENCE_NOT_PRESENT), ex);
111121
Long eventId = createEvent(FILE_VALIDATION_FAILURE, containerName, zipFilename, ex.getMessage());
112122
fileRejector.handleInvalidBlob(eventId, containerName, zipFilename, ex);
113123
} catch (Exception ex) {

src/main/java/uk/gov/hmcts/reform/bulkscanprocessor/tasks/BlobProcessorTask.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.io.IOException;
2020
import java.util.List;
21+
import java.util.Optional;
2122
import java.util.zip.ZipInputStream;
2223

2324
import static uk.gov.hmcts.reform.bulkscanprocessor.model.common.Event.ZIPFILE_PROCESSING_STARTED;
@@ -131,10 +132,12 @@ private void processZipFileIfEligible(BlobContainerClient container, String zipF
131132

132133
if (existingEnvelope != null) {
133134
log.warn(
134-
"Envelope for zip file {} (container {}) already exists. Aborting its processing. Envelope ID: {}",
135+
"Envelope for zip file {} (container {}) already exists. Aborting its processing. Envelope ID: {}. "
136+
+ "Case reference: {}",
135137
zipFilename,
136138
container.getBlobContainerName(),
137-
existingEnvelope.getId()
139+
existingEnvelope.getId(),
140+
Optional.ofNullable(existingEnvelope.getCaseNumber()).orElse("(NOT PRESENT)")
138141
);
139142
} else if (Boolean.FALSE.equals(blobClient.exists())) {
140143
logAbortedProcessingNonExistingFile(zipFilename, container.getBlobContainerName());

src/main/java/uk/gov/hmcts/reform/bulkscanprocessor/tasks/jms/JmsBlobProcessorTask.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.io.IOException;
2020
import java.util.List;
21+
import java.util.Optional;
2122
import java.util.zip.ZipInputStream;
2223

2324
import static uk.gov.hmcts.reform.bulkscanprocessor.model.common.Event.ZIPFILE_PROCESSING_STARTED;
@@ -131,10 +132,12 @@ private void processZipFileIfEligible(BlobContainerClient container, String zipF
131132

132133
if (existingEnvelope != null) {
133134
log.warn(
134-
"Envelope for zip file {} (container {}) already exists. Aborting its processing. Envelope ID: {}",
135+
"Envelope for zip file {} (container {}) already exists. Aborting its processing. Envelope ID: {}. "
136+
+ "Case reference: {}",
135137
zipFilename,
136138
container.getBlobContainerName(),
137-
existingEnvelope.getId()
139+
existingEnvelope.getId(),
140+
Optional.ofNullable(existingEnvelope.getCaseNumber()).orElse("(NOT PRESENT)")
138141
);
139142
} else if (Boolean.FALSE.equals(blobClient.exists())) {
140143
logAbortedProcessingNonExistingFile(zipFilename, container.getBlobContainerName());

src/main/java/uk/gov/hmcts/reform/bulkscanprocessor/tasks/processor/EnvelopeProcessor.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.io.IOException;
2626
import java.util.List;
2727
import java.util.Objects;
28+
import java.util.Optional;
2829
import java.util.UUID;
2930

3031
import static uk.gov.hmcts.reform.bulkscanprocessor.entity.Status.UPLOAD_FAILURE;
@@ -156,8 +157,8 @@ public void markAsUploadFailure(Envelope envelope) {
156157
envelope.setStatus(UPLOAD_FAILURE);
157158

158159
envelopeRepository.saveAndFlush(envelope);
159-
160-
log.info("Envelope {} status changed to UPLOAD_FAILURE", envelope.getZipFileName());
160+
log.info("Envelope {} status changed to UPLOAD_FAILURE. Case reference {}",
161+
envelope.getZipFileName(), Optional.ofNullable(envelope.getCaseNumber()).orElse("(NOT PRESENT)"));
161162
}
162163

163164
/**
@@ -202,8 +203,8 @@ public void handleEvent(Envelope envelope, Event event) {
202203
Status.fromEvent(event).ifPresent(status -> {
203204
envelope.setStatus(status);
204205
envelopeRepository.saveAndFlush(envelope);
205-
206-
log.info("Envelope {} status changed to {}", envelope.getZipFileName(), status.name());
206+
log.info("Envelope {} status changed to {}. Case reference: {}", envelope.getZipFileName(), status.name(),
207+
Optional.ofNullable(envelope.getCaseNumber()).orElse("(NOT PRESENT)"));
207208
});
208209
}
209210

src/test/java/uk/gov/hmcts/reform/bulkscanprocessor/services/DeleteFilesServiceTest.java

+6
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,10 @@ void should_handle_not_deleting_existing_file() {
132132
final BlobClient blobClient = mock(BlobClient.class);
133133

134134
String zipFileName = randomUUID() + ".zip";
135+
String caseNumber = "12564233455665";
135136
Envelope envelope = mock(Envelope.class);
136137
given(envelope.getZipFileName()).willReturn(zipFileName);
138+
given(envelope.getCaseNumber()).willReturn(caseNumber);
137139

138140
given(envelopeRepository
139141
.getCompleteEnvelopesFromContainer(container1.getBlobContainerName()))
@@ -172,8 +174,10 @@ void should_not_delete_file_if_exception_thrown() {
172174
// given
173175

174176
String zipFileName = randomUUID() + ".zip";
177+
String caseNumber = "1714725907404444";
175178
Envelope envelope = mock(Envelope.class);
176179
given(envelope.getZipFileName()).willReturn(zipFileName);
180+
given(envelope.getCaseNumber()).willReturn(caseNumber);
177181

178182
given(envelopeRepository.getCompleteEnvelopesFromContainer(CONTAINER_NAME_1))
179183
.willReturn(singletonList(envelope));
@@ -196,8 +200,10 @@ void should_handle_lease_acquire_exception() {
196200
final BlobClient blobClient = mock(BlobClient.class);
197201

198202
String zipFileName = randomUUID() + ".zip";
203+
199204
Envelope envelope = mock(Envelope.class);
200205
given(envelope.getZipFileName()).willReturn(zipFileName);
206+
given(envelope.getCaseNumber()).willReturn(null);
201207

202208
given(envelopeRepository
203209
.getCompleteEnvelopesFromContainer(container1.getBlobContainerName()))

0 commit comments

Comments
 (0)