Improve and clarify documentation of callbacks.

This also removes deprecated Events and Callbacks.

Closes #1236
This commit is contained in:
Jens Schauder
2022-05-11 13:43:53 +02:00
parent f6e7792094
commit 4353dc8e06
16 changed files with 128 additions and 180 deletions

View File

@@ -402,10 +402,7 @@ public class JdbcAggregateTemplate implements JdbcAggregateOperations {
private <T> T triggerAfterConvert(T entity) {
publisher.publishEvent(new AfterLoadEvent<>(entity));
publisher.publishEvent(new AfterConvertEvent<>(entity));
entity = entityCallbacks.callback(AfterLoadCallback.class, entity);
return entityCallbacks.callback(AfterConvertCallback.class, entity);
}

View File

@@ -36,8 +36,6 @@ import org.springframework.data.relational.core.mapping.RelationalMappingContext
import org.springframework.data.relational.core.mapping.RelationalPersistentEntity;
import org.springframework.data.relational.core.mapping.event.AfterConvertCallback;
import org.springframework.data.relational.core.mapping.event.AfterConvertEvent;
import org.springframework.data.relational.core.mapping.event.AfterLoadCallback;
import org.springframework.data.relational.core.mapping.event.AfterLoadEvent;
import org.springframework.data.repository.core.NamedQueries;
import org.springframework.data.repository.core.RepositoryMetadata;
import org.springframework.data.repository.query.QueryLookupStrategy;
@@ -328,11 +326,9 @@ abstract class JdbcQueryLookupStrategy implements QueryLookupStrategy {
if (entity != null) {
publisher.publishEvent(new AfterLoadEvent<>(entity));
publisher.publishEvent(new AfterConvertEvent<>(entity));
if (callbacks != null) {
entity = callbacks.callback(AfterLoadCallback.class, entity);
return callbacks.callback(AfterConvertCallback.class, entity);
}
}

View File

@@ -46,7 +46,6 @@ import org.springframework.data.relational.core.mapping.NamingStrategy;
import org.springframework.data.relational.core.mapping.RelationalMappingContext;
import org.springframework.data.relational.core.mapping.event.AfterConvertCallback;
import org.springframework.data.relational.core.mapping.event.AfterDeleteCallback;
import org.springframework.data.relational.core.mapping.event.AfterLoadCallback;
import org.springframework.data.relational.core.mapping.event.AfterSaveCallback;
import org.springframework.data.relational.core.mapping.event.BeforeConvertCallback;
import org.springframework.data.relational.core.mapping.event.BeforeDeleteCallback;
@@ -254,30 +253,6 @@ public class JdbcAggregateTemplateUnitTests {
verify(callbacks).callback(AfterDeleteCallback.class, second);
}
@Test // DATAJDBC-393
public void callbackOnLoad() {
SampleEntity alfred1 = new SampleEntity(23L, "Alfred");
SampleEntity alfred2 = new SampleEntity(23L, "Alfred E.");
SampleEntity neumann1 = new SampleEntity(42L, "Neumann");
SampleEntity neumann2 = new SampleEntity(42L, "Alfred E. Neumann");
when(dataAccessStrategy.findAll(SampleEntity.class)).thenReturn(asList(alfred1, neumann1));
when(callbacks.callback(any(Class.class), eq(alfred1), any())).thenReturn(alfred2);
when(callbacks.callback(any(Class.class), eq(alfred2), any())).thenReturn(alfred2);
when(callbacks.callback(any(Class.class), eq(neumann1), any())).thenReturn(neumann2);
when(callbacks.callback(any(Class.class), eq(neumann2), any())).thenReturn(neumann2);
Iterable<SampleEntity> all = template.findAll(SampleEntity.class);
verify(callbacks).callback(AfterLoadCallback.class, alfred1);
verify(callbacks).callback(AfterLoadCallback.class, neumann1);
assertThat(all).containsExactly(alfred2, neumann2);
}
@Test // DATAJDBC-101
public void callbackOnLoadSorted() {
@@ -290,16 +265,12 @@ public class JdbcAggregateTemplateUnitTests {
when(dataAccessStrategy.findAll(SampleEntity.class, Sort.by("name"))).thenReturn(asList(alfred1, neumann1));
when(callbacks.callback(any(Class.class), eq(alfred1), any())).thenReturn(alfred2);
when(callbacks.callback(any(Class.class), eq(alfred2), any())).thenReturn(alfred2);
when(callbacks.callback(any(Class.class), eq(neumann1), any())).thenReturn(neumann2);
when(callbacks.callback(any(Class.class), eq(neumann2), any())).thenReturn(neumann2);
Iterable<SampleEntity> all = template.findAll(SampleEntity.class, Sort.by("name"));
verify(callbacks).callback(AfterLoadCallback.class, alfred1);
verify(callbacks).callback(AfterConvertCallback.class, alfred2);
verify(callbacks).callback(AfterLoadCallback.class, neumann1);
verify(callbacks).callback(AfterConvertCallback.class, neumann2);
verify(callbacks).callback(AfterConvertCallback.class, alfred1);
verify(callbacks).callback(AfterConvertCallback.class, neumann1);
assertThat(all).containsExactly(alfred2, neumann2);
}
@@ -316,16 +287,12 @@ public class JdbcAggregateTemplateUnitTests {
when(dataAccessStrategy.findAll(SampleEntity.class, PageRequest.of(0, 20))).thenReturn(asList(alfred1, neumann1));
when(callbacks.callback(any(Class.class), eq(alfred1), any())).thenReturn(alfred2);
when(callbacks.callback(any(Class.class), eq(alfred2), any())).thenReturn(alfred2);
when(callbacks.callback(any(Class.class), eq(neumann1), any())).thenReturn(neumann2);
when(callbacks.callback(any(Class.class), eq(neumann2), any())).thenReturn(neumann2);
Iterable<SampleEntity> all = template.findAll(SampleEntity.class, PageRequest.of(0, 20));
verify(callbacks).callback(AfterLoadCallback.class, alfred1);
verify(callbacks).callback(AfterConvertCallback.class, alfred2);
verify(callbacks).callback(AfterLoadCallback.class, neumann1);
verify(callbacks).callback(AfterConvertCallback.class, neumann2);
verify(callbacks).callback(AfterConvertCallback.class, alfred1);
verify(callbacks).callback(AfterConvertCallback.class, neumann1);
assertThat(all).containsExactly(alfred2, neumann2);
}

View File

@@ -50,7 +50,6 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import org.springframework.data.jdbc.core.mapping.AggregateReference;
import org.springframework.data.relational.repository.Lock;
import org.springframework.data.jdbc.repository.query.Modifying;
import org.springframework.data.jdbc.repository.query.Query;
import org.springframework.data.jdbc.repository.support.JdbcRepositoryFactory;
@@ -60,8 +59,8 @@ import org.springframework.data.jdbc.testing.TestConfiguration;
import org.springframework.data.jdbc.testing.TestDatabaseFeatures;
import org.springframework.data.relational.core.mapping.event.AbstractRelationalEvent;
import org.springframework.data.relational.core.mapping.event.AfterConvertEvent;
import org.springframework.data.relational.core.mapping.event.AfterLoadEvent;
import org.springframework.data.relational.core.sql.LockMode;
import org.springframework.data.relational.repository.Lock;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.core.NamedQueries;
import org.springframework.data.repository.core.support.PropertiesBasedNamedQueries;
@@ -312,7 +311,7 @@ public class JdbcRepositoryIntegrationTests {
repository.findAllWithSql();
assertThat(eventListener.events).hasSize(2).hasOnlyElementsOfTypes(AfterLoadEvent.class, AfterConvertEvent.class);
assertThat(eventListener.events).hasSize(1).hasOnlyElementsOfType(AfterConvertEvent.class);
}
@Test // DATAJDBC-318

View File

@@ -190,9 +190,7 @@ public class SimpleJdbcRepositoryEventsUnitTests {
assertThat(publisher.events) //
.extracting(e -> (Class) e.getClass()) //
.containsExactly( //
AfterLoadEvent.class, //
AfterConvertEvent.class, //
AfterLoadEvent.class, //
AfterConvertEvent.class //
);
}
@@ -211,9 +209,7 @@ public class SimpleJdbcRepositoryEventsUnitTests {
assertThat(publisher.events) //
.extracting(e -> (Class) e.getClass()) //
.containsExactly( //
AfterLoadEvent.class, //
AfterConvertEvent.class, //
AfterLoadEvent.class, //
AfterConvertEvent.class //
);
}
@@ -231,7 +227,6 @@ public class SimpleJdbcRepositoryEventsUnitTests {
assertThat(publisher.events) //
.extracting(e -> (Class) e.getClass()) //
.containsExactly( //
AfterLoadEvent.class, //
AfterConvertEvent.class //
);
}
@@ -250,9 +245,7 @@ public class SimpleJdbcRepositoryEventsUnitTests {
assertThat(publisher.events) //
.extracting(e -> (Class) e.getClass()) //
.containsExactly( //
AfterLoadEvent.class, //
AfterConvertEvent.class, //
AfterLoadEvent.class, //
AfterConvertEvent.class //
);
}
@@ -272,9 +265,7 @@ public class SimpleJdbcRepositoryEventsUnitTests {
assertThat(publisher.events) //
.extracting(e -> (Class) e.getClass()) //
.containsExactly( //
AfterLoadEvent.class, //
AfterConvertEvent.class, //
AfterLoadEvent.class, //
AfterConvertEvent.class //
);
}