From 1c60bc6586f8546d9063138fa870c4f11d92e2ad Mon Sep 17 00:00:00 2001 From: Andrei Isvoran Date: Tue, 9 Apr 2024 09:37:58 +0200 Subject: [PATCH] RED-8651 - Evict report templates cache on template upload --- .../com.iqser.red.service.java-conventions.gradle.kts | 2 +- .../api/impl/controller/ReportTemplateController.java | 9 ++++----- .../v1/processor/service/ReportTemplateService.java | 3 +++ .../server/integration/tests/ReportTemplateTest.java | 10 ++++++++++ .../utils/AbstractPersistenceServerServiceTest.java | 3 +++ 5 files changed, 21 insertions(+), 6 deletions(-) diff --git a/buildSrc/src/main/kotlin/com.iqser.red.service.java-conventions.gradle.kts b/buildSrc/src/main/kotlin/com.iqser.red.service.java-conventions.gradle.kts index 176517d6c..c6b715907 100644 --- a/buildSrc/src/main/kotlin/com.iqser.red.service.java-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/com.iqser.red.service.java-conventions.gradle.kts @@ -8,7 +8,7 @@ plugins { val redactionServiceVersion by rootProject.extra { "4.290.0" } val pdftronRedactionServiceVersion by rootProject.extra { "4.48.0" } -val redactionReportServiceVersion by rootProject.extra { "4.47.0" } +val redactionReportServiceVersion by rootProject.extra { "4.64.0" } val searchServiceVersion by rootProject.extra { "2.71.0" } repositories { diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ReportTemplateController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ReportTemplateController.java index b9008295f..db83eb15c 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ReportTemplateController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ReportTemplateController.java @@ -13,8 +13,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService; - import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.springframework.core.io.InputStreamResource; @@ -30,18 +28,17 @@ import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; -import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; import com.iqser.red.service.persistence.management.v1.processor.client.redactionreportservice.PlaceholderClient; import com.iqser.red.service.persistence.management.v1.processor.client.redactionreportservice.ReportTemplatePlaceholderClient; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; +import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; import com.iqser.red.service.persistence.management.v1.processor.service.ReportTemplateService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService; -import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.management.v1.processor.utils.StringEncodingUtils; import com.iqser.red.service.persistence.service.v1.api.external.resource.ReportTemplateResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; @@ -53,6 +50,8 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.ReportTemplateUploadRequest; import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist; import com.iqser.red.storage.commons.service.StorageService; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; +import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; import com.knecon.fforesight.tenantcommons.TenantContext; import feign.FeignException; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReportTemplateService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReportTemplateService.java index de95bd527..5f49cecca 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReportTemplateService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReportTemplateService.java @@ -8,6 +8,7 @@ import java.util.UUID; import org.springframework.stereotype.Service; +import com.iqser.red.service.persistence.management.v1.processor.client.redactionreportservice.ReportTemplatePlaceholderClient; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService; import com.iqser.red.service.persistence.management.v1.processor.utils.StorageIdUtils; @@ -27,6 +28,7 @@ public class ReportTemplateService { private final StorageService storageService; private final ReportTemplatePersistenceService reportTemplatePersistenceService; + private final ReportTemplatePlaceholderClient reportTemplatePlaceholderClient; public ReportTemplate uploadTemplate(ReportTemplateUploadRequest reportTemplateUploadRequest) { @@ -55,6 +57,7 @@ public class ReportTemplateService { .multiFileReport(reportTemplateUploadRequest.isMultiFileReport()) .activeByDefault(reportTemplateUploadRequest.isActiveByDefault()) .build()); + reportTemplatePlaceholderClient.uploadTemplate(templateId); } else { templateId = UUID.randomUUID().toString(); reportTemplatePersistenceService.insert(reportTemplateUploadRequest.getDossierTemplateId(), diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java index dcb05aff3..14bef8fec 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java @@ -1,7 +1,10 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.doNothing; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -25,6 +28,13 @@ public class ReportTemplateTest extends AbstractPersistenceServerServiceTest { private ReportTemplateProvider reportTemplateProvider; + @BeforeEach + public void setup() { + + doNothing().when(reportTemplatePlaceholderClient).uploadTemplate(anyString()); + } + + /* * Upload report, verify it exist and delete afterwards */ diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index a39977085..5ebbac32e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -57,6 +57,7 @@ import com.iqser.red.service.peristence.v1.server.integration.client.Application import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; import com.iqser.red.service.peristence.v1.server.utils.MetricsPrinterService; import com.iqser.red.service.persistence.management.v1.processor.client.pdftronredactionservice.PDFTronClient; +import com.iqser.red.service.persistence.management.v1.processor.client.redactionreportservice.ReportTemplatePlaceholderClient; import com.iqser.red.service.persistence.management.v1.processor.client.redactionservice.RedactionClient; import com.iqser.red.service.persistence.management.v1.processor.client.searchservice.SearchClient; import com.iqser.red.service.persistence.management.v1.processor.client.tenantusermanagementservice.UsersClient; @@ -236,6 +237,8 @@ public abstract class AbstractPersistenceServerServiceTest { protected EncryptionDecryptionService encryptionDecryptionService; @Autowired protected TenantCreatedListener tenantCreatedListener; + @MockBean + protected ReportTemplatePlaceholderClient reportTemplatePlaceholderClient; private static String[] getAllRoles() {