diff --git a/redaction-service-v1/pom.xml b/redaction-service-v1/pom.xml index 501ae19c..ee796600 100644 --- a/redaction-service-v1/pom.xml +++ b/redaction-service-v1/pom.xml @@ -32,7 +32,7 @@ com.iqser.red platform-commons-dependency - 1.3.0 + 1.3.1 import pom diff --git a/redaction-service-v1/redaction-service-server-v1/pom.xml b/redaction-service-v1/redaction-service-server-v1/pom.xml index fd802d43..f6b063f9 100644 --- a/redaction-service-v1/redaction-service-server-v1/pom.xml +++ b/redaction-service-v1/redaction-service-server-v1/pom.xml @@ -29,7 +29,13 @@ com.iqser.red.service file-management-service-api-v1 - 2.6.7 + 2.7.2 + + + com.iqser.red.service + redaction-service-api-v1 + + org.drools diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/client/FileStatusProcessingUpdateClient.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/client/FileStatusProcessingUpdateClient.java new file mode 100644 index 00000000..41182a31 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/client/FileStatusProcessingUpdateClient.java @@ -0,0 +1,9 @@ +package com.iqser.red.service.redaction.v1.server.client; + + +import com.iqser.red.service.file.management.v1.api.resources.FileStatusProcessingUpdateResource; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "FileStatusProcessingUpdateResource", url = "${file-management-service.url}") +public interface FileStatusProcessingUpdateClient extends FileStatusProcessingUpdateResource { +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/client/RulesClient.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/client/RulesClient.java index ce41a3ce..35ffba79 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/client/RulesClient.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/client/RulesClient.java @@ -3,6 +3,6 @@ package com.iqser.red.service.redaction.v1.server.client; import com.iqser.red.service.configuration.v1.api.resource.RulesResource; import org.springframework.cloud.openfeign.FeignClient; -@FeignClient(name = RulesResource.SERVICE_NAME, url = "${configuration-service.url}") +@FeignClient(name = "RulesResource", url = "${configuration-service.url}") public interface RulesClient extends RulesResource { -} \ No newline at end of file +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/RedactionMessageReceiver.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/RedactionMessageReceiver.java index 69d62c60..12b33ca1 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/RedactionMessageReceiver.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/RedactionMessageReceiver.java @@ -3,6 +3,8 @@ package com.iqser.red.service.redaction.v1.server.queue; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.redaction.v1.model.AnalyzeRequest; +import com.iqser.red.service.redaction.v1.model.AnalyzeResult; +import com.iqser.red.service.redaction.v1.server.client.FileStatusProcessingUpdateClient; import com.iqser.red.service.redaction.v1.server.redaction.service.ReanalyzeService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -20,27 +22,33 @@ public class RedactionMessageReceiver { private final ObjectMapper objectMapper; private final ReanalyzeService reanalyzeService; + private final FileStatusProcessingUpdateClient fileStatusProcessingUpdateClient; @RabbitHandler @RabbitListener(queues = REDACTION_QUEUE) public void receiveAnalyzeRequest(String in) throws JsonProcessingException { + var analyzeRequest = objectMapper.readValue(in, AnalyzeRequest.class); log.info("Processing analyze request: {}", analyzeRequest); + AnalyzeResult result; if (analyzeRequest.isReanalyseOnlyIfPossible()) { - reanalyzeService.reanalyze(analyzeRequest); + result = reanalyzeService.reanalyze(analyzeRequest); } else { - reanalyzeService.analyze(analyzeRequest); + result = reanalyzeService.analyze(analyzeRequest); } log.info("Successfully analyzed {}", analyzeRequest); - // TODO respond to file-api + + fileStatusProcessingUpdateClient.analysisSuccessful(result); } @RabbitHandler @RabbitListener(queues = REDACTION_DQL) public void receiveAnalyzeRequestDQL(String in) throws JsonProcessingException { + var analyzeRequest = objectMapper.readValue(in, AnalyzeRequest.class); log.info("Failed to process analyze request: {}", analyzeRequest); - // TODO respond to file-api + + fileStatusProcessingUpdateClient.analysisFailed(analyzeRequest.getProjectId(), analyzeRequest.getFileId()); } } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/resources/application-dev.yaml b/redaction-service-v1/redaction-service-server-v1/src/main/resources/application-dev.yaml index e19b1e65..2d266963 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/resources/application-dev.yaml +++ b/redaction-service-v1/redaction-service-server-v1/src/main/resources/application-dev.yaml @@ -2,7 +2,7 @@ server: port: 8083 configuration-service.url: "http://localhost:8081" - +file-management-service.url: "http://localhost:8085" storage: bucket-name: 'redaction' diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/resources/application.yml b/redaction-service-v1/redaction-service-server-v1/src/main/resources/application.yml index 5e895e5d..671d3b20 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/resources/application.yml +++ b/redaction-service-v1/redaction-service-server-v1/src/main/resources/application.yml @@ -2,6 +2,7 @@ info: description: Redaction Service Server V1 configuration-service.url: "http://configuration-service-v1:8080" +file-management-service.url: "http://file-management-service-v1:8080" image-service.url: "http://image-service-v1:8080" server: diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java index 03df78f5..6b695cc5 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java +++ b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java @@ -28,10 +28,13 @@ import org.kie.api.builder.KieModule; import org.kie.api.runtime.KieContainer; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Primary; import org.springframework.core.io.ClassPathResource; import org.springframework.test.context.junit4.SpringRunner; @@ -45,10 +48,10 @@ import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; -import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; @RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = RANDOM_PORT) +@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@Import(RedactionIntegrationTest.RedactionIntegrationTestConfiguration.class) public class RedactionIntegrationTest { private static final String RULES = loadFromClassPath("drools/rules.drl"); @@ -116,7 +119,8 @@ public class RedactionIntegrationTest { private final static String TEST_PROJECT_ID = "123"; private final static String TEST_FILE_ID = "123"; - @TestConfiguration + @Configuration + @EnableAutoConfiguration(exclude = {RabbitAutoConfiguration.class}) public static class RedactionIntegrationTestConfiguration { @Bean @@ -141,6 +145,7 @@ public class RedactionIntegrationTest { return new FileSystemBackedStorageService(); } + } diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionServiceTest.java b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionServiceTest.java index 32fe65ee..3d17be2f 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionServiceTest.java +++ b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionServiceTest.java @@ -2,6 +2,7 @@ package com.iqser.red.service.redaction.v1.server.redaction.service; import com.amazonaws.services.s3.AmazonS3; import com.iqser.red.service.configuration.v1.api.model.*; +import com.iqser.red.service.redaction.v1.server.Application; import com.iqser.red.service.redaction.v1.server.FileSystemBackedStorageService; import com.iqser.red.service.redaction.v1.server.classification.model.Document; import com.iqser.red.service.redaction.v1.server.client.DictionaryClient; @@ -21,10 +22,13 @@ import org.kie.api.builder.KieFileSystem; import org.kie.api.builder.KieModule; import org.kie.api.runtime.KieContainer; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Primary; import org.springframework.core.io.ClassPathResource; import org.springframework.test.context.junit4.SpringRunner; @@ -42,8 +46,9 @@ import java.util.concurrent.atomic.AtomicLong; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; -@SpringBootTest @RunWith(SpringRunner.class) +@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@Import(EntityRedactionServiceTest.RedactionIntegrationTestConfiguration.class) public class EntityRedactionServiceTest { private static final String DEFAULT_RULES = loadFromClassPath("drools/rules.drl"); @@ -74,7 +79,8 @@ public class EntityRedactionServiceTest { private final static String TEST_RULESET_ID = "123"; - @TestConfiguration + @Configuration + @EnableAutoConfiguration(exclude = {RabbitAutoConfiguration.class}) public static class RedactionIntegrationTestConfiguration { @Bean diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/segmentation/PdfSegmentationServiceTest.java b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/segmentation/PdfSegmentationServiceTest.java index c7bb136f..398e521f 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/segmentation/PdfSegmentationServiceTest.java +++ b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/segmentation/PdfSegmentationServiceTest.java @@ -1,6 +1,7 @@ package com.iqser.red.service.redaction.v1.server.segmentation; import com.amazonaws.services.s3.AmazonS3; +import com.iqser.red.service.redaction.v1.server.Application; import com.iqser.red.service.redaction.v1.server.classification.model.Document; import com.iqser.red.service.redaction.v1.server.classification.model.Page; import com.iqser.red.service.redaction.v1.server.classification.service.BlockificationService; @@ -13,9 +14,14 @@ import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.kie.api.runtime.KieContainer; +import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; import org.springframework.core.io.ClassPathResource; import org.springframework.test.context.junit4.SpringRunner; @@ -29,8 +35,10 @@ import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; -@SpringBootTest + @RunWith(SpringRunner.class) +@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@Import(PdfSegmentationServiceTest.TestConfiguration.class) public class PdfSegmentationServiceTest { @Autowired @@ -51,6 +59,15 @@ public class PdfSegmentationServiceTest { @MockBean private AmazonS3 amazonS3; + @MockBean + private RabbitTemplate rabbitTemplate; + + @Configuration + @EnableAutoConfiguration(exclude = { RabbitAutoConfiguration.class}) + public static class TestConfiguration { + + } + @Test @Ignore public void testExtractImages() throws IOException {