Dedicated customization callback for AuditableBeanWrapperFactory.

Introduced RepositoryRestConfigurer.customizeAuditableBeanWrapperFactory(…) so that implementations can customize the default instance provided by RepositoryRestMvcConfiguration.

Fixes #2040.
This commit is contained in:
Oliver Drotbohm
2021-07-14 19:00:00 +02:00
parent f310a4ce58
commit 0c24113484
4 changed files with 57 additions and 1 deletions

View File

@@ -16,6 +16,7 @@
package org.springframework.data.rest.webmvc.config;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import static org.springframework.data.rest.webmvc.util.AssertionUtils.*;
import java.util.Collection;
@@ -37,6 +38,7 @@ import org.springframework.context.annotation.Import;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.core.annotation.Order;
import org.springframework.core.convert.ConversionService;
import org.springframework.data.auditing.AuditableBeanWrapperFactory;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.geo.Distance;
@@ -211,6 +213,14 @@ public class RepositoryRestMvConfigurationIntegrationTests {
.containsSequence(userConfig.otherConfigurer(), userConfig.configurer());
}
@Test // #2040
public void appliesAuditingBeanWrapperFactoryCustomizer() {
AuditableBeanWrapperFactory factory = context.getBean(AuditableBeanWrapperFactory.class);
assertThat(factory).isEqualTo(ExtendingConfiguration.auditableBeanWrapperFactory);
}
private static ObjectMapper getObjectMapper() {
AbstractJackson2HttpMessageConverter converter = context.getBean("halJacksonHttpMessageConverter",
@@ -222,6 +232,8 @@ public class RepositoryRestMvConfigurationIntegrationTests {
@Import(RepositoryRestMvcConfiguration.class)
static class ExtendingConfiguration {
static AuditableBeanWrapperFactory auditableBeanWrapperFactory = mock(AuditableBeanWrapperFactory.class);
@Bean
DefaultLinkRelationProvider relProvider() {
return new DefaultLinkRelationProvider();
@@ -251,6 +263,19 @@ public class RepositoryRestMvConfigurationIntegrationTests {
RepositoryRestConfigurer otherConfigurer() {
return RepositoryRestConfigurer.withConfig(__ -> {});
}
@Bean
@Order(300) // #2040
RepositoryRestConfigurer auditingBeanWrapperCustomizer() {
return new RepositoryRestConfigurer() {
@Override
public AuditableBeanWrapperFactory customizeAuditableBeanWrapperFactory(AuditableBeanWrapperFactory factory) {
return auditableBeanWrapperFactory;
}
};
}
}
@Configuration