Skip to content

Commit 9a23493

Browse files
schaudermp911de
authored andcommitted
Trigger BeforeConvertEvent when saving an aggregate.
Closes: #910 Original pull request: #913.
1 parent e7f9e47 commit 9a23493

File tree

4 files changed

+11
-4
lines changed

4 files changed

+11
-4
lines changed

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/JdbcAggregateTemplate.java

+3
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,9 @@ private <T> T triggerAfterLoad(T entity) {
404404
}
405405

406406
private <T> T triggerBeforeConvert(T aggregateRoot) {
407+
408+
publisher.publishEvent(new BeforeConvertEvent<>(aggregateRoot));
409+
407410
return entityCallbacks.callback(BeforeConvertCallback.class, aggregateRoot);
408411
}
409412

spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/SimpleJdbcRepositoryEventsUnitTests.java

+4
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import org.springframework.data.relational.core.mapping.event.AfterDeleteEvent;
5555
import org.springframework.data.relational.core.mapping.event.AfterLoadEvent;
5656
import org.springframework.data.relational.core.mapping.event.AfterSaveEvent;
57+
import org.springframework.data.relational.core.mapping.event.BeforeConvertEvent;
5758
import org.springframework.data.relational.core.mapping.event.BeforeDeleteEvent;
5859
import org.springframework.data.relational.core.mapping.event.BeforeSaveEvent;
5960
import org.springframework.data.relational.core.mapping.event.Identifier;
@@ -115,6 +116,7 @@ public void publishesEventsOnSave() {
115116
assertThat(publisher.events) //
116117
.extracting(e -> (Class) e.getClass()) //
117118
.containsExactly( //
119+
BeforeConvertEvent.class, //
118120
BeforeSaveEvent.class, //
119121
AfterSaveEvent.class //
120122
);
@@ -132,8 +134,10 @@ public void publishesEventsOnSaveMany() {
132134
assertThat(publisher.events) //
133135
.extracting(e -> (Class) e.getClass()) //
134136
.containsExactly( //
137+
BeforeConvertEvent.class, //
135138
BeforeSaveEvent.class, //
136139
AfterSaveEvent.class, //
140+
BeforeConvertEvent.class, //
137141
BeforeSaveEvent.class, //
138142
AfterSaveEvent.class //
139143
);

spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/event/BeforeConvertEvent.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* @since 1.1
2424
* @author Jens Schauder
2525
*/
26-
public class BeforeConvertEvent<E> extends RelationalSaveEvent<E> {
26+
public class BeforeConvertEvent<E> extends RelationalEventWithEntity<E> {
2727

2828
private static final long serialVersionUID = -5716795164911939224L;
2929

@@ -33,7 +33,7 @@ public class BeforeConvertEvent<E> extends RelationalSaveEvent<E> {
3333
* this event is fired before the conversion the change is actually empty, but contains information if the
3434
* aggregate is considered new in {@link AggregateChange#getKind()}. Must not be {@literal null}.
3535
*/
36-
public BeforeConvertEvent(E instance, AggregateChange<E> change) {
37-
super(instance, change);
36+
public BeforeConvertEvent(E instance) {
37+
super(instance);
3838
}
3939
}

spring-data-relational/src/test/java/org/springframework/data/relational/core/mapping/event/AbstractRelationalEventListenerUnitTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public void afterLoad() {
4646
@Test // DATAJDBC-454
4747
public void beforeConvert() {
4848

49-
listener.onApplicationEvent(new BeforeConvertEvent<>(dummyEntity, MutableAggregateChange.forDelete(dummyEntity)));
49+
listener.onApplicationEvent(new BeforeConvertEvent<>(dummyEntity));
5050

5151
assertThat(events).containsExactly("beforeConvert");
5252
}

0 commit comments

Comments
 (0)