From af4a12c89218ea66ecc66549a0eb0b976fc5c1b6 Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 9 Mar 2020 13:25:38 +0100 Subject: [PATCH] refactor aggregate build process --- src/main/java/mops/gruppen2/domain/Aggregate.java | 11 ++++++++++- .../java/mops/gruppen2/service/GroupService.java | 3 +-- src/test/java/mops/gruppen2/domain/GroupTest.java | 12 ++++++------ 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/main/java/mops/gruppen2/domain/Aggregate.java b/src/main/java/mops/gruppen2/domain/Aggregate.java index 294cc60..f5e2c8a 100644 --- a/src/main/java/mops/gruppen2/domain/Aggregate.java +++ b/src/main/java/mops/gruppen2/domain/Aggregate.java @@ -4,6 +4,7 @@ import lombok.Getter; import mops.gruppen2.domain.event.Event; import java.lang.reflect.Method; +import java.util.List; /** * Repräsentiert viele Events als aggregiertes Objekt. @@ -13,12 +14,20 @@ public abstract class Aggregate { protected long id; + public void apply(List events) { + events.forEach(this::applyEvent); + } + + public void apply(Event event) { + applyEvent(event); + } + /** * Ruft die spezifische applyEvent-Methode im entsprechenden Aggregat auf. * * @param event Event, welches aggregiert wird */ - public void applyEvent(Event event) { + private void applyEvent(Event event) { try { Method method = this.getClass().getDeclaredMethod("applyEvent", event.getClass()); method.setAccessible(true); diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index 42e9d31..b6dba9c 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -18,8 +18,7 @@ public class GroupService { */ Group buildGroupFromEvents(List eventList) { Group newGroup = new Group(); - - eventList.forEach(newGroup::applyEvent); + newGroup.apply(eventList); return newGroup; } diff --git a/src/test/java/mops/gruppen2/domain/GroupTest.java b/src/test/java/mops/gruppen2/domain/GroupTest.java index 3901fe0..192e7b6 100644 --- a/src/test/java/mops/gruppen2/domain/GroupTest.java +++ b/src/test/java/mops/gruppen2/domain/GroupTest.java @@ -26,7 +26,7 @@ class GroupTest { CreateGroupEvent createGroupEvent = new CreateGroupEvent(1,2, "asd", "hello", "foo"); Group group = new Group(); - group.applyEvent(createGroupEvent); + group.apply(createGroupEvent); assertThat(group.getDescription()).isEqualTo("foo"); assertThat(group.getTitle()).isEqualTo("hello"); @@ -38,11 +38,11 @@ class GroupTest { void addSingleUser() { CreateGroupEvent createGroupEvent = new CreateGroupEvent(1,1,"prof1", "hi", "foo"); Group group = new Group(); - group.applyEvent(createGroupEvent); + group.apply(createGroupEvent); User user = new User("prof", "jens", "bendi", "hi@gmail.com"); AddUserEvent addUserEvent = new AddUserEvent(1,1, user); - group.applyEvent(addUserEvent); + group.apply(addUserEvent); assertThat(group.getMembers().get(0)).isEqualTo(user); } @@ -55,13 +55,13 @@ class GroupTest { AddUserEvent addUserEvent = new AddUserEvent(1L, 1L, "5L", "Peter", "Pan", "123@mail.de"); Group group = new Group(); - group.applyEvent(createGroupEvent); - group.applyEvent(addUserEvent); + group.apply(createGroupEvent); + group.apply(addUserEvent); UpdateRoleEvent updateRoleEvent = new UpdateRoleEvent(1L, 1L, "5L", Role.ORGA); // Act - group.applyEvent(updateRoleEvent); + group.apply(updateRoleEvent); // Assert assertThat(group.getRoles())