diff --git a/Frontend/src/services/ApiService.js b/Frontend/src/services/ApiService.js index 49d9a7e84cd43685486acf7a363e3d7413dcae1a..8c62397a5934d4a1cf621d7a69cc9579ee453386 100644 --- a/Frontend/src/services/ApiService.js +++ b/Frontend/src/services/ApiService.js @@ -121,7 +121,7 @@ const uploadWork = async ( try { const keycloakUserId = UserService.getUserId(); const response = await HttpClient.get( - `/files/upload/presigned-url?filename=${filename}&userId=${keycloakUserId}`, + `/works/upload/presigned-url?filename=${filename}&userId=${keycloakUserId}`, ); const presignedUploadUrl = response.data?.url; const prefix = response.data?.prefix; diff --git a/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/api/WorkApi.java b/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/api/WorkApi.java index c4be0c3aeabb779340b06319b74836999604c00c..7918af1ecdf2b7607726434f5c9097608620dfef 100644 --- a/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/api/WorkApi.java +++ b/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/api/WorkApi.java @@ -1,14 +1,10 @@ package eu.fairkom.faircommons.api_service.api; import eu.fairkom.faircommons.api_service.service.WorkService; -import eu.fairkom.faircommons.common.models.DownloadFileResponse; import eu.fairkom.faircommons.common.models.views.WorkCreateView; import eu.fairkom.faircommons.common.models.views.WorkView; import jakarta.persistence.EntityNotFoundException; import jakarta.validation.Valid; -import org.springframework.core.io.InputStreamResource; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.support.ServletUriComponentsBuilder; diff --git a/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/listener/WorkRegisteredEventListener.java b/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/listener/WorkRegisteredEventListener.java new file mode 100644 index 0000000000000000000000000000000000000000..45c850d6178aeb735e3454cfd3458f298ffda71c --- /dev/null +++ b/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/listener/WorkRegisteredEventListener.java @@ -0,0 +1,28 @@ +package eu.fairkom.faircommons.api_service.listener; + +import eu.fairkom.faircommons.common.rabbitmq.messages.WorkFileMessage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.stereotype.Component; +import org.springframework.transaction.event.TransactionPhase; +import org.springframework.transaction.event.TransactionalEventListener; + +import static eu.fairkom.faircommons.common.rabbitmq.RabbitMqConfiguration.HASHING_QUEUE; + +@Component +public class WorkRegisteredEventListener { + private static final Logger logger = LoggerFactory.getLogger(WorkRegisteredEventListener.class); + + private final RabbitTemplate rabbitTemplate; + + public WorkRegisteredEventListener(RabbitTemplate rabbitTemplate) { + this.rabbitTemplate = rabbitTemplate; + } + + @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) + public void handleWorkRegisteredEvent(WorkFileMessage message) { + rabbitTemplate.convertAndSend(HASHING_QUEUE, message); + logger.info("Message sent to hashing queue for work ID: {}", message.getWorkId()); + } +} diff --git a/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/service/WorkService.java b/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/service/WorkService.java index 70640a4ad18b59f1efac60031110c0a9e2205a57..6f4124b93f3398e9f8e68b58d642166d026c1f58 100644 --- a/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/service/WorkService.java +++ b/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/service/WorkService.java @@ -16,8 +16,7 @@ import eu.fairkom.faircommons.common.rabbitmq.messages.WorkFileMessage; import jakarta.persistence.EntityNotFoundException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.core.io.InputStreamResource; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -25,27 +24,24 @@ import org.springframework.transaction.annotation.Transactional; import java.util.UUID; -import static eu.fairkom.faircommons.common.rabbitmq.RabbitMqConfiguration.HASHING_QUEUE; - @Service public class WorkService { private static final Logger logger = LoggerFactory.getLogger(WorkService.class); - private final RabbitTemplate rabbitTemplate; private final WorkRepository workRepository; private final WorkMapper workMapper; private final TagMapper tagMapper; private final TagRepository tagRepository; + private final ApplicationEventPublisher eventPublisher; - public WorkService(RabbitTemplate rabbitTemplate, - WorkRepository workRepository, + public WorkService(WorkRepository workRepository, WorkMapper workMapper, TagMapper tagMapper, - TagRepository tagRepository) { - this.rabbitTemplate = rabbitTemplate; + TagRepository tagRepository, ApplicationEventPublisher eventPublisher) { this.workRepository = workRepository; this.workMapper = workMapper; this.tagMapper = tagMapper; this.tagRepository = tagRepository; + this.eventPublisher = eventPublisher; } @Transactional @@ -57,11 +53,10 @@ public class WorkService { var message = WorkFileMessage.builder() .workId(work.getId()) .workFile(workCreateView.getWorkFile()) - .userId(workCreateView.getRegistrar()); - - rabbitTemplate.convertAndSend(HASHING_QUEUE, message.build()); - logger.debug("Message sent to hashing queue for work ID: {}", work.getId()); + .userId(workCreateView.getRegistrar()) + .build(); + eventPublisher.publishEvent(message); return work.getId(); } diff --git a/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/service/WorkStatusService.java b/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/service/WorkStatusService.java index dd820c9808ece4090eda06a7f55921dd88301da5..476ef11572f50c4491f3e42bfdd6583fd81e0b66 100644 --- a/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/service/WorkStatusService.java +++ b/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/service/WorkStatusService.java @@ -9,8 +9,6 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.UUID; - @Service public class WorkStatusService { private static final Logger logger = LoggerFactory.getLogger(WorkStatusService.class); diff --git a/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/strategy/MessageDispatchStrategy.java b/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/strategy/MessageDispatchStrategy.java index 0439a1325dcba7968cf663dcec9af7a02586255d..0763965b116b58b89504d3dde32651a8c77bcf18 100644 --- a/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/strategy/MessageDispatchStrategy.java +++ b/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/strategy/MessageDispatchStrategy.java @@ -5,5 +5,6 @@ import eu.fairkom.faircommons.common.models.entities.WorkStatus; public interface MessageDispatchStrategy { void dispatch(Work work); + WorkStatus.WorkStatusType getType(); }