DATAJDBC-454 - Adds generics to events.

Events now have a type parameter for the type of aggregate root they relate to.
In order to utilize this an react to only events relating to a specific type of entity `AbstractRelationalEventListener` was added.

Original pull request: #199.
This commit is contained in:
Jens Schauder
2020-03-18 09:56:28 +01:00
committed by Mark Paluch
parent 22f9eded60
commit 5fdfd3a9dc
19 changed files with 408 additions and 56 deletions

View File

@@ -401,7 +401,7 @@ public class JdbcAggregateTemplate implements JdbcAggregateOperations {
private <T> T triggerAfterLoad(T entity) {
publisher.publishEvent(new AfterLoadEvent(entity));
publisher.publishEvent(new AfterLoadEvent<>(entity));
return entityCallbacks.callback(AfterLoadCallback.class, entity);
}
@@ -412,25 +412,21 @@ public class JdbcAggregateTemplate implements JdbcAggregateOperations {
private <T> T triggerBeforeSave(T aggregateRoot, AggregateChange<T> change) {
publisher.publishEvent(new BeforeSaveEvent( //
//
aggregateRoot, //
//
change));
publisher.publishEvent(new BeforeSaveEvent<>(aggregateRoot, change));
return entityCallbacks.callback(BeforeSaveCallback.class, aggregateRoot, change);
}
private <T> T triggerAfterSave(T aggregateRoot, AggregateChange<T> change) {
publisher.publishEvent(new AfterSaveEvent(aggregateRoot, change));
publisher.publishEvent(new AfterSaveEvent<>(aggregateRoot, change));
return entityCallbacks.callback(AfterSaveCallback.class, aggregateRoot);
}
private <T> void triggerAfterDelete(@Nullable T aggregateRoot, Object id, AggregateChange<?> change) {
private <T> void triggerAfterDelete(@Nullable T aggregateRoot, Object id, AggregateChange<T> change) {
publisher.publishEvent(new AfterDeleteEvent(Identifier.of(id), aggregateRoot, change));
publisher.publishEvent(new AfterDeleteEvent<>(Identifier.of(id), aggregateRoot, change));
if (aggregateRoot != null) {
entityCallbacks.callback(AfterDeleteCallback.class, aggregateRoot);
@@ -438,9 +434,9 @@ public class JdbcAggregateTemplate implements JdbcAggregateOperations {
}
@Nullable
private <T> T triggerBeforeDelete(@Nullable T aggregateRoot, Object id, AggregateChange<?> change) {
private <T> T triggerBeforeDelete(@Nullable T aggregateRoot, Object id, AggregateChange<T> change) {
publisher.publishEvent(new BeforeDeleteEvent(Identifier.of(id), aggregateRoot, change));
publisher.publishEvent(new BeforeDeleteEvent<>(Identifier.of(id), aggregateRoot, change));
if (aggregateRoot != null) {
return entityCallbacks.callback(BeforeDeleteCallback.class, aggregateRoot, change);