Fix too restrictive entity callback matching.
We now properly support generic entity callbacks defined via lambda declarations. Fixes #2822.
This commit is contained in:
@@ -169,8 +169,7 @@ class DefaultEntityCallbacksUnitTests {
|
||||
@Test // DATACMNS-1467
|
||||
void detectsMultipleCallbacksWithinOneClass() {
|
||||
|
||||
var ctx = new AnnotationConfigApplicationContext(
|
||||
MultipleCallbacksInOneClassConfig.class);
|
||||
var ctx = new AnnotationConfigApplicationContext(MultipleCallbacksInOneClassConfig.class);
|
||||
|
||||
var callbacks = new DefaultEntityCallbacks(ctx);
|
||||
|
||||
@@ -184,6 +183,17 @@ class DefaultEntityCallbacksUnitTests {
|
||||
assertThat(ctx.getBean("callbacks", MultipleCallbacks.class).invocations).containsExactly("save", "convert");
|
||||
}
|
||||
|
||||
@Test // GH-2822
|
||||
void genericCallbackDiscoveredForObjectDeclaration() {
|
||||
|
||||
var ctx = new AnnotationConfigApplicationContext(SomeConfiguration.class);
|
||||
var callbacks = new DefaultEntityCallbacks(ctx);
|
||||
|
||||
callbacks.callback(BeforeSaveCallback.class, new PersonDocument(null, "Walter", null));
|
||||
|
||||
assertThat(ctx.getBean(SomeConfiguration.class).invoked).isTrue();
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class MyConfig {
|
||||
|
||||
@@ -312,4 +322,18 @@ class DefaultEntityCallbacksUnitTests {
|
||||
|
||||
}
|
||||
|
||||
// GH-2822
|
||||
@Configuration
|
||||
static class SomeConfiguration {
|
||||
|
||||
boolean invoked = false;
|
||||
|
||||
@Bean
|
||||
BeforeSaveCallback<Object> someGenericCallback() {
|
||||
return it -> {
|
||||
this.invoked = true;
|
||||
return it;
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user