Trigger BeforeConvertEvent when saving an aggregate.

Closes: #910
Original pull request: #913.
This commit is contained in:
Jens Schauder
2021-01-14 17:23:46 +01:00
committed by Mark Paluch
parent eef62a0fa2
commit c044c41651
4 changed files with 11 additions and 4 deletions

View File

@@ -404,6 +404,9 @@ public class JdbcAggregateTemplate implements JdbcAggregateOperations {
}
private <T> T triggerBeforeConvert(T aggregateRoot) {
publisher.publishEvent(new BeforeConvertEvent<>(aggregateRoot));
return entityCallbacks.callback(BeforeConvertCallback.class, aggregateRoot);
}

View File

@@ -54,6 +54,7 @@ import org.springframework.data.relational.core.mapping.RelationalMappingContext
import org.springframework.data.relational.core.mapping.event.AfterDeleteEvent;
import org.springframework.data.relational.core.mapping.event.AfterLoadEvent;
import org.springframework.data.relational.core.mapping.event.AfterSaveEvent;
import org.springframework.data.relational.core.mapping.event.BeforeConvertEvent;
import org.springframework.data.relational.core.mapping.event.BeforeDeleteEvent;
import org.springframework.data.relational.core.mapping.event.BeforeSaveEvent;
import org.springframework.data.relational.core.mapping.event.Identifier;
@@ -115,6 +116,7 @@ public class SimpleJdbcRepositoryEventsUnitTests {
assertThat(publisher.events) //
.extracting(e -> (Class) e.getClass()) //
.containsExactly( //
BeforeConvertEvent.class, //
BeforeSaveEvent.class, //
AfterSaveEvent.class //
);
@@ -132,8 +134,10 @@ public class SimpleJdbcRepositoryEventsUnitTests {
assertThat(publisher.events) //
.extracting(e -> (Class) e.getClass()) //
.containsExactly( //
BeforeConvertEvent.class, //
BeforeSaveEvent.class, //
AfterSaveEvent.class, //
BeforeConvertEvent.class, //
BeforeSaveEvent.class, //
AfterSaveEvent.class //
);

View File

@@ -23,7 +23,7 @@ import org.springframework.data.relational.core.conversion.AggregateChange;
* @since 1.1
* @author Jens Schauder
*/
public class BeforeConvertEvent<E> extends RelationalSaveEvent<E> {
public class BeforeConvertEvent<E> extends RelationalEventWithEntity<E> {
private static final long serialVersionUID = -5716795164911939224L;
@@ -33,7 +33,7 @@ public class BeforeConvertEvent<E> extends RelationalSaveEvent<E> {
* this event is fired before the conversion the change is actually empty, but contains information if the
* aggregate is considered new in {@link AggregateChange#getKind()}. Must not be {@literal null}.
*/
public BeforeConvertEvent(E instance, AggregateChange<E> change) {
super(instance, change);
public BeforeConvertEvent(E instance) {
super(instance);
}
}

View File

@@ -46,7 +46,7 @@ public class AbstractRelationalEventListenerUnitTests {
@Test // DATAJDBC-454
public void beforeConvert() {
listener.onApplicationEvent(new BeforeConvertEvent<>(dummyEntity, MutableAggregateChange.forDelete(dummyEntity)));
listener.onApplicationEvent(new BeforeConvertEvent<>(dummyEntity));
assertThat(events).containsExactly("beforeConvert");
}