diff --git a/src/main/java/org/grouphq/groupsync/group/domain/PublicOutboxEvent.java b/src/main/java/org/grouphq/groupsync/group/domain/PublicOutboxEvent.java index 1ac10ff..02d6daf 100644 --- a/src/main/java/org/grouphq/groupsync/group/domain/PublicOutboxEvent.java +++ b/src/main/java/org/grouphq/groupsync/group/domain/PublicOutboxEvent.java @@ -6,7 +6,7 @@ import lombok.extern.slf4j.Slf4j; import org.grouphq.groupsync.groupservice.domain.members.Member; import org.grouphq.groupsync.groupservice.domain.outbox.EventDataModel; -import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEventJson; +import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEvent; import org.grouphq.groupsync.groupservice.domain.outbox.enums.AggregateType; import org.grouphq.groupsync.groupservice.domain.outbox.enums.EventStatus; import org.grouphq.groupsync.groupservice.domain.outbox.enums.EventType; @@ -34,7 +34,7 @@ public record PublicOutboxEvent(Long aggregateId, AggregateType aggregateType, OBJECT_MAPPER.registerModule(new JavaTimeModule()); } - public static PublicOutboxEvent convertOutboxEvent(OutboxEventJson outboxEvent) { + public static PublicOutboxEvent convertOutboxEvent(OutboxEvent outboxEvent) { return switch (outboxEvent.getEventType()) { case GROUP_CREATED -> convertGroupCreated(outboxEvent); case GROUP_UPDATED -> convertGroupStatusUpdated(outboxEvent); @@ -44,15 +44,15 @@ public static PublicOutboxEvent convertOutboxEvent(OutboxEventJson outboxEvent) }; } - private static PublicOutboxEvent convertGroupCreated(OutboxEventJson outboxEvent) { + private static PublicOutboxEvent convertGroupCreated(OutboxEvent outboxEvent) { return convertDefault(outboxEvent); } - private static PublicOutboxEvent convertGroupStatusUpdated(OutboxEventJson outboxEvent) { + private static PublicOutboxEvent convertGroupStatusUpdated(OutboxEvent outboxEvent) { return convertDefault(outboxEvent); } - private static PublicOutboxEvent convertMemberJoined(OutboxEventJson outboxEvent) { + private static PublicOutboxEvent convertMemberJoined(OutboxEvent outboxEvent) { PublicOutboxEvent publicOutboxEvent; publicOutboxEvent = new PublicOutboxEvent( @@ -67,11 +67,11 @@ private static PublicOutboxEvent convertMemberJoined(OutboxEventJson outboxEvent return publicOutboxEvent; } - private static PublicOutboxEvent convertMemberLeft(OutboxEventJson outboxEvent) { + private static PublicOutboxEvent convertMemberLeft(OutboxEvent outboxEvent) { return convertDefault(outboxEvent); } - private static PublicOutboxEvent convertDefault(OutboxEventJson outboxEvent) { + private static PublicOutboxEvent convertDefault(OutboxEvent outboxEvent) { return new PublicOutboxEvent( outboxEvent.getAggregateId(), outboxEvent.getAggregateType(), diff --git a/src/main/java/org/grouphq/groupsync/group/event/GroupEventForwarder.java b/src/main/java/org/grouphq/groupsync/group/event/GroupEventForwarder.java index 72056da..463c35c 100644 --- a/src/main/java/org/grouphq/groupsync/group/event/GroupEventForwarder.java +++ b/src/main/java/org/grouphq/groupsync/group/event/GroupEventForwarder.java @@ -4,7 +4,7 @@ import lombok.extern.slf4j.Slf4j; import org.grouphq.groupsync.group.domain.PublicOutboxEvent; import org.grouphq.groupsync.group.sync.GroupUpdateService; -import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEventJson; +import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEvent; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import reactor.core.publisher.Flux; @@ -24,7 +24,7 @@ public GroupEventForwarder(GroupUpdateService groupUpdateService) { } @Bean - public Consumer> processedEvents() { + public Consumer> processedEvents() { return outboxEvents -> outboxEvents.flatMap(this::forwardUpdate) .doOnError(throwable -> log.error("Error while forwarding events. " @@ -33,7 +33,7 @@ public Consumer> processedEvents() { .subscribe(); } - private Mono forwardUpdate(OutboxEventJson outboxEvent) { + private Mono forwardUpdate(OutboxEvent outboxEvent) { switch (outboxEvent.getEventStatus()) { case SUCCESSFUL -> { groupUpdateService.sendPublicOutboxEventToAll( diff --git a/src/main/java/org/grouphq/groupsync/group/sync/GroupUpdateService.java b/src/main/java/org/grouphq/groupsync/group/sync/GroupUpdateService.java index e582335..c403d57 100644 --- a/src/main/java/org/grouphq/groupsync/group/sync/GroupUpdateService.java +++ b/src/main/java/org/grouphq/groupsync/group/sync/GroupUpdateService.java @@ -3,7 +3,7 @@ import java.time.Duration; import lombok.extern.slf4j.Slf4j; import org.grouphq.groupsync.group.domain.PublicOutboxEvent; -import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEventJson; +import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEvent; import org.springframework.stereotype.Service; import reactor.core.publisher.BufferOverflowStrategy; import reactor.core.publisher.Flux; @@ -18,7 +18,7 @@ public class GroupUpdateService { private final Sinks.Many publicUpdatesSink; - private final Sinks.Many userUpdatesSink; + private final Sinks.Many userUpdatesSink; public GroupUpdateService() { publicUpdatesSink = Sinks.many().replay().limit(Duration.ofSeconds(5)); @@ -31,7 +31,7 @@ public Flux publicUpdatesStream() { .onBackpressureBuffer(100, BufferOverflowStrategy.DROP_OLDEST); } - public Flux eventOwnerUpdateStream() { + public Flux eventOwnerUpdateStream() { return userUpdatesSink.asFlux() .onBackpressureBuffer(100, BufferOverflowStrategy.DROP_OLDEST); } @@ -41,7 +41,7 @@ public void sendPublicOutboxEventToAll(PublicOutboxEvent outboxEvent) { emitResultLogger("PUBLIC", outboxEvent, result); } - public void sendOutboxEventToEventOwner(OutboxEventJson outboxEvent) { + public void sendOutboxEventToEventOwner(OutboxEvent outboxEvent) { final Sinks.EmitResult result = userUpdatesSink.tryEmitNext(outboxEvent); emitResultLogger(outboxEvent.getEventStatus().toString(), outboxEvent, result); } diff --git a/src/main/java/org/grouphq/groupsync/group/web/GroupSyncController.java b/src/main/java/org/grouphq/groupsync/group/web/GroupSyncController.java index 6dfc5a6..9fce45e 100644 --- a/src/main/java/org/grouphq/groupsync/group/web/GroupSyncController.java +++ b/src/main/java/org/grouphq/groupsync/group/web/GroupSyncController.java @@ -9,7 +9,7 @@ import org.grouphq.groupsync.group.sync.GroupUpdateService; import org.grouphq.groupsync.groupservice.domain.exceptions.InternalServerError; import org.grouphq.groupsync.groupservice.domain.members.Member; -import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEventJson; +import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEvent; import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.security.core.context.ReactiveSecurityContextHolder; import org.springframework.security.core.context.SecurityContext; @@ -44,7 +44,7 @@ public Flux getPublicUpdates() { } @MessageMapping("groups.updates.user") - public Flux getEventOwnerUpdates() { + public Flux getEventOwnerUpdates() { return groupUpdateService.eventOwnerUpdateStream() .flatMap(outboxEvent -> monoIsUserEventOwner(outboxEvent) .flatMap(isOwner -> isOwner ? Mono.just(outboxEvent) : Mono.empty()) @@ -69,7 +69,7 @@ public Mono getMyMember() { }); } - private Mono monoIsUserEventOwner(OutboxEventJson outboxEvent) { + private Mono monoIsUserEventOwner(OutboxEvent outboxEvent) { return userService.getUserAuthentication() .map(Principal::getName) .flatMap(username -> { diff --git a/src/main/java/org/grouphq/groupsync/groupservice/domain/outbox/OutboxEvent.java b/src/main/java/org/grouphq/groupsync/groupservice/domain/outbox/OutboxEvent.java index 8477853..2d82914 100644 --- a/src/main/java/org/grouphq/groupsync/groupservice/domain/outbox/OutboxEvent.java +++ b/src/main/java/org/grouphq/groupsync/groupservice/domain/outbox/OutboxEvent.java @@ -34,12 +34,12 @@ public class OutboxEvent { private final String websocketId; private final AggregateType aggregateType; private final EventType eventType; - private final String eventData; + private final EventDataModel eventData; private final EventStatus eventStatus; private final Instant createdDate; public static OutboxEvent of(UUID eventId, Long aggregateId, AggregateType aggregateType, - EventType eventType, String eventData, EventStatus eventStatus, + EventType eventType, EventDataModel eventData, EventStatus eventStatus, String websocketId) { return new OutboxEvent(eventId, aggregateId, websocketId, aggregateType, eventType, eventData, eventStatus, Instant.now()); diff --git a/src/main/java/org/grouphq/groupsync/groupservice/domain/outbox/OutboxEventJson.java b/src/main/java/org/grouphq/groupsync/groupservice/domain/outbox/OutboxEventJson.java deleted file mode 100644 index 7b3b669..0000000 --- a/src/main/java/org/grouphq/groupsync/groupservice/domain/outbox/OutboxEventJson.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.grouphq.groupsync.groupservice.domain.outbox; - -import java.time.Instant; -import java.util.UUID; -import lombok.Data; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.grouphq.groupsync.groupservice.domain.outbox.enums.AggregateType; -import org.grouphq.groupsync.groupservice.domain.outbox.enums.EventStatus; -import org.grouphq.groupsync.groupservice.domain.outbox.enums.EventType; - -/** - * A type of OutboxEvent with its event data serialized to the appropriate object. - * This variation of OutboxEvent is used when sending events to clients, simplifying the steps - * needed for them to read received events. Ideally, we would use this type of class for both - * sending to clients and saving to the database, but the current database integration - * via Spring Data doesn't allow objects to be saved directly--they must first be converted to - * a string when saving to the database. When retrieving from the database, they should be - * converted to this object before sending to clients. - * - * @see OutboxEvent - * @since 2/29/2024 - */ -@RequiredArgsConstructor -@Data -@Slf4j -public class OutboxEventJson { - private final UUID eventId; - private final Long aggregateId; - private final String websocketId; - private final AggregateType aggregateType; - private final EventType eventType; - private final EventDataModel eventData; - private final EventStatus eventStatus; - private final Instant createdDate; -} \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 7dacaf0..f6e430a 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -61,7 +61,7 @@ spring: destination: group-leave-requests group: ${spring.application.name} processedEvents-in-0: - destination: group-event-results-temp-group-89 + destination: group-event-results group: ${spring.application.name} rabbitmq: host: {$SPRING_RABBITMQ_HOST:localhost} diff --git a/src/test/java/org/grouphq/groupsync/group/event/GroupEventForwarderIntegrationTest.java b/src/test/java/org/grouphq/groupsync/group/event/GroupEventForwarderIntegrationTest.java index e552878..f6b47a7 100644 --- a/src/test/java/org/grouphq/groupsync/group/event/GroupEventForwarderIntegrationTest.java +++ b/src/test/java/org/grouphq/groupsync/group/event/GroupEventForwarderIntegrationTest.java @@ -4,7 +4,7 @@ import org.grouphq.groupsync.GroupTestUtility; import org.grouphq.groupsync.group.domain.PublicOutboxEvent; import org.grouphq.groupsync.group.web.GroupSyncController; -import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEventJson; +import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEvent; import org.grouphq.groupsync.groupservice.domain.outbox.enums.EventStatus; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Tag; @@ -40,9 +40,9 @@ class GroupEventForwarderIntegrationTest { @DisplayName("Forwards events to the outbox event update successful sink") void forwardsEventsToTheOutboxEventUpdateSink() { final PublicOutboxEvent[] publicEvents = { - PublicOutboxEvent.convertOutboxEvent(GroupTestUtility.generateOutboxEventJson()), - PublicOutboxEvent.convertOutboxEvent(GroupTestUtility.generateOutboxEventJson()), - PublicOutboxEvent.convertOutboxEvent(GroupTestUtility.generateOutboxEventJson()) + PublicOutboxEvent.convertOutboxEvent(GroupTestUtility.generateOutboxEvent()), + PublicOutboxEvent.convertOutboxEvent(GroupTestUtility.generateOutboxEvent()), + PublicOutboxEvent.convertOutboxEvent(GroupTestUtility.generateOutboxEvent()) }; final Flux groupUpdatesStream = @@ -70,13 +70,13 @@ void forwardsEventsToTheOutboxEventUpdateSink() { @WithMockUser(username = USER) @DisplayName("Forwards events to the outbox event update failed sink") void forwardsEventsToTheOutboxEventUpdateFailedSink() { - final OutboxEventJson[] outboxEvents = { - GroupTestUtility.generateOutboxEventJson(USER, EventStatus.FAILED), - GroupTestUtility.generateOutboxEventJson(USER, EventStatus.FAILED), - GroupTestUtility.generateOutboxEventJson(USER, EventStatus.FAILED) + final OutboxEvent[] outboxEvents = { + GroupTestUtility.generateOutboxEvent(USER, EventStatus.FAILED), + GroupTestUtility.generateOutboxEvent(USER, EventStatus.FAILED), + GroupTestUtility.generateOutboxEvent(USER, EventStatus.FAILED) }; - final Flux groupUpdatesStream = + final Flux groupUpdatesStream = groupSyncController.getEventOwnerUpdates() .doOnSubscribe(subscription -> { inputDestination.send(new GenericMessage<>(outboxEvents[0]), eventDestination); diff --git a/src/test/java/org/grouphq/groupsync/group/event/GroupEventForwarderTest.java b/src/test/java/org/grouphq/groupsync/group/event/GroupEventForwarderTest.java index 2de1932..551312b 100644 --- a/src/test/java/org/grouphq/groupsync/group/event/GroupEventForwarderTest.java +++ b/src/test/java/org/grouphq/groupsync/group/event/GroupEventForwarderTest.java @@ -6,7 +6,7 @@ import org.grouphq.groupsync.GroupTestUtility; import org.grouphq.groupsync.group.domain.PublicOutboxEvent; import org.grouphq.groupsync.group.sync.GroupUpdateService; -import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEventJson; +import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEvent; import org.grouphq.groupsync.groupservice.domain.outbox.enums.EventStatus; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Tag; @@ -30,8 +30,8 @@ class GroupEventForwarderTest { @Test @DisplayName("Forwards successful events to the to all users sink and the event owner sink") void forwardsSuccessfulEventsToTheUpdatesSink() { - final OutboxEventJson outboxEvent = - GroupTestUtility.generateOutboxEventJson("ID", EventStatus.SUCCESSFUL); + final OutboxEvent outboxEvent = + GroupTestUtility.generateOutboxEvent("ID", EventStatus.SUCCESSFUL); final PublicOutboxEvent publicOutboxEvent = PublicOutboxEvent.convertOutboxEvent(outboxEvent); @@ -47,8 +47,8 @@ void forwardsSuccessfulEventsToTheUpdatesSink() { @Test @DisplayName("Forwards failed events to only the event owner sink") void forwardsFailedEventsToTheUpdatesFailedSink() { - final OutboxEventJson outboxEvent = - GroupTestUtility.generateOutboxEventJson("ID", EventStatus.FAILED); + final OutboxEvent outboxEvent = + GroupTestUtility.generateOutboxEvent("ID", EventStatus.FAILED); willDoNothing().given(groupUpdateService).sendOutboxEventToEventOwner(outboxEvent); diff --git a/src/test/java/org/grouphq/groupsync/group/sync/GroupUpdateServiceTest.java b/src/test/java/org/grouphq/groupsync/group/sync/GroupUpdateServiceTest.java index 53c6011..823db17 100644 --- a/src/test/java/org/grouphq/groupsync/group/sync/GroupUpdateServiceTest.java +++ b/src/test/java/org/grouphq/groupsync/group/sync/GroupUpdateServiceTest.java @@ -5,7 +5,7 @@ import java.time.Duration; import org.grouphq.groupsync.GroupTestUtility; import org.grouphq.groupsync.group.domain.PublicOutboxEvent; -import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEventJson; +import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEvent; import org.grouphq.groupsync.groupservice.domain.outbox.enums.EventStatus; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Tag; @@ -32,7 +32,7 @@ void returnsSinkForUpdates() { @Test @DisplayName("Updates sink with successful events and emits them") void updatesSinkWithNewOutboxEventsAndEmitsThem() { - final OutboxEventJson outboxEvent = GroupTestUtility.generateOutboxEventJson(); + final OutboxEvent outboxEvent = GroupTestUtility.generateOutboxEvent(); final PublicOutboxEvent publicOutboxEvent = PublicOutboxEvent.convertOutboxEvent(outboxEvent); @@ -53,8 +53,8 @@ void returnsSinkForFailedUpdates() { @Test @DisplayName("Updates sink with failed events and emits them") void updatesSinkWithFailedOutboxEventsAndEmitsThem() { - final OutboxEventJson outboxEvent = - GroupTestUtility.generateOutboxEventJson("ID", EventStatus.FAILED); + final OutboxEvent outboxEvent = + GroupTestUtility.generateOutboxEvent("ID", EventStatus.FAILED); StepVerifier.create(groupUpdateService.eventOwnerUpdateStream()) .then(() -> groupUpdateService.sendOutboxEventToEventOwner(outboxEvent)) diff --git a/src/test/java/org/grouphq/groupsync/group/web/GroupSyncControllerTest.java b/src/test/java/org/grouphq/groupsync/group/web/GroupSyncControllerTest.java index 296ceca..903bc95 100644 --- a/src/test/java/org/grouphq/groupsync/group/web/GroupSyncControllerTest.java +++ b/src/test/java/org/grouphq/groupsync/group/web/GroupSyncControllerTest.java @@ -7,7 +7,7 @@ import org.grouphq.groupsync.group.domain.PublicOutboxEvent; import org.grouphq.groupsync.group.security.UserService; import org.grouphq.groupsync.group.sync.GroupUpdateService; -import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEventJson; +import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEvent; import org.grouphq.groupsync.groupservice.domain.outbox.enums.EventStatus; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Tag; @@ -40,7 +40,7 @@ class GroupSyncControllerTest { @Test @DisplayName("Test streaming outbox events to all clients") void testGetOutboxEventUpdates() { - final OutboxEventJson event = GroupTestUtility.generateOutboxEventJson(); + final OutboxEvent event = GroupTestUtility.generateOutboxEvent(); final PublicOutboxEvent publicOutboxEvent = PublicOutboxEvent.convertOutboxEvent(event); // Mimic a stream of events, followed by an error that should be ignored @@ -64,14 +64,14 @@ void testGetOutboxEventUpdates() { @WithMockUser(username = "Banana") @DisplayName("Test streaming outbox events to the client who made the request") void testGetOutboxEventUpdatesFailed() { - final OutboxEventJson[] events = { - GroupTestUtility.generateOutboxEventJson("Apricot", EventStatus.FAILED), - GroupTestUtility.generateOutboxEventJson("Banana", EventStatus.FAILED), - GroupTestUtility.generateOutboxEventJson("Cherry", EventStatus.FAILED) + final OutboxEvent[] events = { + GroupTestUtility.generateOutboxEvent("Apricot", EventStatus.FAILED), + GroupTestUtility.generateOutboxEvent("Banana", EventStatus.FAILED), + GroupTestUtility.generateOutboxEvent("Cherry", EventStatus.FAILED) }; // Mimic a stream of events - final Sinks.Many sink = Sinks.many().replay().limit(100); + final Sinks.Many sink = Sinks.many().replay().limit(100); sink.tryEmitNext(events[0]); sink.tryEmitNext(events[1]); sink.tryEmitNext(events[2]); diff --git a/src/test/java/org/grouphq/groupsync/group/web/GroupSyncSocketDirtyIntegrationTest.java b/src/test/java/org/grouphq/groupsync/group/web/GroupSyncSocketDirtyIntegrationTest.java index 188af8f..b685e69 100644 --- a/src/test/java/org/grouphq/groupsync/group/web/GroupSyncSocketDirtyIntegrationTest.java +++ b/src/test/java/org/grouphq/groupsync/group/web/GroupSyncSocketDirtyIntegrationTest.java @@ -12,7 +12,7 @@ import org.grouphq.groupsync.group.domain.PublicOutboxEvent; import org.grouphq.groupsync.group.sync.GroupFetchService; import org.grouphq.groupsync.groupservice.domain.members.Member; -import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEventJson; +import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEvent; import org.grouphq.groupsync.groupservice.domain.outbox.enums.EventStatus; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeEach; @@ -85,20 +85,20 @@ public static void tearDownOnce() { @Test @DisplayName("Test RSocket integration for streaming successful outbox events to all users") void testGetPublicOutboxEventUpdates(@Autowired InputDestination inputDestination) { - final OutboxEventJson[] outboxEvents = { - GroupTestUtility.generateOutboxEventJson(USER_ID, EventStatus.SUCCESSFUL), - GroupTestUtility.generateOutboxEventJson(USER_ID, EventStatus.SUCCESSFUL), - GroupTestUtility.generateOutboxEventJson("Some other user 1", EventStatus.SUCCESSFUL), - GroupTestUtility.generateOutboxEventJson(USER_ID, EventStatus.FAILED), - GroupTestUtility.generateOutboxEventJson(USER_ID, EventStatus.FAILED), - GroupTestUtility.generateOutboxEventJson("Some other user 2", EventStatus.FAILED) + final OutboxEvent[] outboxEvents = { + GroupTestUtility.generateOutboxEvent(USER_ID, EventStatus.SUCCESSFUL), + GroupTestUtility.generateOutboxEvent(USER_ID, EventStatus.SUCCESSFUL), + GroupTestUtility.generateOutboxEvent("Some other user 1", EventStatus.SUCCESSFUL), + GroupTestUtility.generateOutboxEvent(USER_ID, EventStatus.FAILED), + GroupTestUtility.generateOutboxEvent(USER_ID, EventStatus.FAILED), + GroupTestUtility.generateOutboxEvent("Some other user 2", EventStatus.FAILED) }; final Flux groupUpdatesStream = requester .route("groups.updates.all") .retrieveFlux(PublicOutboxEvent.class) .doOnSubscribe(subscription -> { - for (final OutboxEventJson outboxEvent : outboxEvents) { + for (final OutboxEvent outboxEvent : outboxEvents) { inputDestination.send(new GenericMessage<>(outboxEvent), eventDestination); } }); @@ -125,20 +125,20 @@ void testGetPublicOutboxEventUpdates(@Autowired InputDestination inputDestinatio @Test @DisplayName("Test RSocket integration for streaming outbox events belonging to a user") void testGetEventOwnerOutboxEventUpdates(@Autowired InputDestination inputDestination) { - final OutboxEventJson[] outboxEvents = { - GroupTestUtility.generateOutboxEventJson(USER_ID, EventStatus.SUCCESSFUL), - GroupTestUtility.generateOutboxEventJson(USER_ID, EventStatus.SUCCESSFUL), - GroupTestUtility.generateOutboxEventJson("Some other user", EventStatus.SUCCESSFUL), - GroupTestUtility.generateOutboxEventJson(USER_ID, EventStatus.FAILED), - GroupTestUtility.generateOutboxEventJson(USER_ID, EventStatus.FAILED), - GroupTestUtility.generateOutboxEventJson("Some other user", EventStatus.FAILED) + final OutboxEvent[] outboxEvents = { + GroupTestUtility.generateOutboxEvent(USER_ID, EventStatus.SUCCESSFUL), + GroupTestUtility.generateOutboxEvent(USER_ID, EventStatus.SUCCESSFUL), + GroupTestUtility.generateOutboxEvent("Some other user", EventStatus.SUCCESSFUL), + GroupTestUtility.generateOutboxEvent(USER_ID, EventStatus.FAILED), + GroupTestUtility.generateOutboxEvent(USER_ID, EventStatus.FAILED), + GroupTestUtility.generateOutboxEvent("Some other user", EventStatus.FAILED) }; - final Flux groupUpdatesFailedStream = requester + final Flux groupUpdatesFailedStream = requester .route("groups.updates.user") - .retrieveFlux(OutboxEventJson.class) + .retrieveFlux(OutboxEvent.class) .doOnSubscribe(subscription -> { - for (final OutboxEventJson outboxEvent : outboxEvents) { + for (final OutboxEvent outboxEvent : outboxEvents) { inputDestination.send(new GenericMessage<>(outboxEvent), eventDestination); } }); diff --git a/src/testAcceptance/java/org/grouphq/groupsync/cucumber/steps/MemberPolicy.java b/src/testAcceptance/java/org/grouphq/groupsync/cucumber/steps/MemberPolicy.java index 4a8a3af..6fc6f5f 100644 --- a/src/testAcceptance/java/org/grouphq/groupsync/cucumber/steps/MemberPolicy.java +++ b/src/testAcceptance/java/org/grouphq/groupsync/cucumber/steps/MemberPolicy.java @@ -1,7 +1,5 @@ package org.grouphq.groupsync.cucumber.steps; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import com.github.javafaker.Faker; import io.cucumber.java.After; import io.cucumber.java.Before; @@ -68,9 +66,6 @@ public class MemberPolicy { private String httpBasicCredentialsEncoded; - @Autowired - private ObjectMapper objectMapper; - @Autowired private RSocketRequester.Builder builder; @@ -217,7 +212,7 @@ public void iShouldNoLongerBeAnActiveMemberOfThatGroup() { } @And("I am a member of the group") - public void iAmAMemberOfTheGroup() throws JsonProcessingException { + public void iAmAMemberOfTheGroup() { requestEvent = GroupTestUtility.generateGroupJoinRequestEvent(userId, username, group.id()); OUTBOX_EVENTS.clear(); @@ -235,7 +230,7 @@ public void iAmAMemberOfTheGroup() throws JsonProcessingException { await().atMost(5, TimeUnit.SECONDS).until(() -> !OUTBOX_EVENTS.isEmpty()); event = OUTBOX_EVENTS.getLast(); - member = objectMapper.readValue(event.getEventData(), Member.class); + member = (Member) event.getEventData(); webTestClient .get() diff --git a/src/testFixtures/java/org/grouphq/groupsync/GroupTestUtility.java b/src/testFixtures/java/org/grouphq/groupsync/GroupTestUtility.java index 0f221bf..04f1379 100644 --- a/src/testFixtures/java/org/grouphq/groupsync/GroupTestUtility.java +++ b/src/testFixtures/java/org/grouphq/groupsync/GroupTestUtility.java @@ -9,7 +9,6 @@ import org.grouphq.groupsync.groupservice.domain.members.MemberStatus; import org.grouphq.groupsync.groupservice.domain.outbox.EventDataModel; import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEvent; -import org.grouphq.groupsync.groupservice.domain.outbox.OutboxEventJson; import org.grouphq.groupsync.groupservice.domain.outbox.enums.AggregateType; import org.grouphq.groupsync.groupservice.domain.outbox.enums.EventStatus; import org.grouphq.groupsync.groupservice.domain.outbox.enums.EventType; @@ -355,48 +354,11 @@ public static GroupStatusRequestEvent generateGroupStatusRequestEvent( * @return an OutboxEvent object with all details. */ public static OutboxEvent generateOutboxEvent() { - - return new OutboxEvent( - UUID.randomUUID(), - FAKER.number().randomNumber(12, true), - UUID.randomUUID().toString(), - AggregateType.GROUP, - EventType.GROUP_CREATED, - "{\"status\": \"ACTIVE\"}", - EventStatus.SUCCESSFUL, - Instant.now() - ); - } - - /** - * Overloaded method for {@link #generateOutboxEvent()}. - */ - public static OutboxEvent generateOutboxEvent(String webSocketId, EventStatus eventStatus) { - final Faker faker = new Faker(); - - return new OutboxEvent( - UUID.randomUUID(), - faker.number().randomNumber(12, true), - webSocketId, - AggregateType.GROUP, - EventType.GROUP_CREATED, - "{\"status\": \"ACTIVE\"}", - eventStatus, - Instant.now() - ); - } - - /** - * Generates an outbox event. - * - * @return an OutboxEventJson object with all details. - */ - public static OutboxEventJson generateOutboxEventJson() { EventDataModel eventData; eventData = GroupTestUtility.generateFullGroupDetails(GroupStatus.ACTIVE); - return new OutboxEventJson( + return new OutboxEvent( UUID.randomUUID(), FAKER.number().randomNumber(12, true), UUID.randomUUID().toString(), @@ -409,14 +371,14 @@ public static OutboxEventJson generateOutboxEventJson() { } /** - * Overloaded method for {@link #generateOutboxEventJson()} ()}. + * Overloaded method for {@link #generateOutboxEvent()} ()}. */ - public static OutboxEventJson generateOutboxEventJson(String webSocketId, EventStatus eventStatus) { + public static OutboxEvent generateOutboxEvent(String webSocketId, EventStatus eventStatus) { EventDataModel eventData; eventData = GroupTestUtility.generateFullGroupDetails(GroupStatus.ACTIVE); - return new OutboxEventJson( + return new OutboxEvent( UUID.randomUUID(), FAKER.number().randomNumber(12, true), webSocketId,