Browse Source

Trigger BeforeConvertEvent when saving an aggregate.

Closes: #910
Original pull request: #913.
pull/1035/head
Jens Schauder 5 years ago committed by Mark Paluch
parent
commit
c044c41651
No known key found for this signature in database
GPG Key ID: 4406B84C1661DCD1
  1. 3
      spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/JdbcAggregateTemplate.java
  2. 4
      spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/SimpleJdbcRepositoryEventsUnitTests.java
  3. 6
      spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/event/BeforeConvertEvent.java
  4. 2
      spring-data-relational/src/test/java/org/springframework/data/relational/core/mapping/event/AbstractRelationalEventListenerUnitTests.java

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

@ -404,6 +404,9 @@ public class JdbcAggregateTemplate implements JdbcAggregateOperations { @@ -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);
}

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

@ -54,6 +54,7 @@ import org.springframework.data.relational.core.mapping.RelationalMappingContext @@ -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 { @@ -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 { @@ -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 //
);

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

@ -23,7 +23,7 @@ import org.springframework.data.relational.core.conversion.AggregateChange; @@ -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> { @@ -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);
}
}

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

@ -46,7 +46,7 @@ public class AbstractRelationalEventListenerUnitTests { @@ -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");
}

Loading…
Cancel
Save