From 4bf8c8a22c631aed77ebb3599558ed607473bc2d Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Mon, 11 Jul 2022 14:21:54 +0200 Subject: [PATCH] Simplify auditing setup. Use IsNewAwareAuditingHandler factory method to avoid exposing additional beans. See: #1280 --- .../config/CassandraAuditingRegistrar.java | 42 +------------------ .../ReactiveCassandraAuditingRegistrar.java | 4 +- 2 files changed, 5 insertions(+), 41 deletions(-) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/CassandraAuditingRegistrar.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/CassandraAuditingRegistrar.java index 83ae5087b..4f25a3575 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/CassandraAuditingRegistrar.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/CassandraAuditingRegistrar.java @@ -17,10 +17,8 @@ package org.springframework.data.cassandra.config; import java.lang.annotation.Annotation; -import org.springframework.beans.factory.ListableBeanFactory; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; import org.springframework.data.auditing.IsNewAwareAuditingHandler; @@ -28,14 +26,13 @@ import org.springframework.data.auditing.config.AuditingBeanDefinitionRegistrarS import org.springframework.data.auditing.config.AuditingConfiguration; import org.springframework.data.cassandra.core.mapping.event.AuditingEntityCallback; import org.springframework.data.config.ParsingUtils; -import org.springframework.data.mapping.context.PersistentEntities; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** * {@link ImportBeanDefinitionRegistrar} to enable {@link EnableCassandraAuditing} annotation. * * @author Mark Paluch + * @author Christoph Strobl * @since 2.2 */ class CassandraAuditingRegistrar extends AuditingBeanDefinitionRegistrarSupport { @@ -54,7 +51,7 @@ class CassandraAuditingRegistrar extends AuditingBeanDefinitionRegistrarSupport protected void postProcess(BeanDefinitionBuilder builder, AuditingConfiguration configuration, BeanDefinitionRegistry registry) { - potentiallyRegisterCassandraPersistentEntities(builder, registry); + builder.setFactoryMethod("from").addConstructorArgReference("cassandraMappingContext"); } @Override @@ -81,39 +78,4 @@ class CassandraAuditingRegistrar extends AuditingBeanDefinitionRegistrarSupport registerInfrastructureBeanWithId(listenerBeanDefinitionBuilder.getBeanDefinition(), AuditingEntityCallback.class.getName(), registry); } - - static void potentiallyRegisterCassandraPersistentEntities(BeanDefinitionBuilder builder, - BeanDefinitionRegistry registry) { - - String persistentEntitiesBeanName = detectPersistentEntitiesBeanName(registry); - - if (persistentEntitiesBeanName == null) { - - persistentEntitiesBeanName = BeanDefinitionReaderUtils.uniqueBeanName("cassandraPersistentEntities", registry); - - // TODO: https://github.com/spring-projects/spring-framework/issues/28728 - BeanDefinitionBuilder definition = BeanDefinitionBuilder.genericBeanDefinition(PersistentEntities.class) // - .setFactoryMethod("of") // - .addConstructorArgReference("cassandraMappingContext"); - - registry.registerBeanDefinition(persistentEntitiesBeanName, definition.getBeanDefinition()); - } - - builder.addConstructorArgReference(persistentEntitiesBeanName); - } - - @Nullable - private static String detectPersistentEntitiesBeanName(BeanDefinitionRegistry registry) { - - if (registry instanceof ListableBeanFactory beanFactory) { - for (String bn : beanFactory.getBeanNamesForType(PersistentEntities.class)) { - if (bn.startsWith("cassandra")) { - return bn; - } - } - } - - return null; - } - } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/ReactiveCassandraAuditingRegistrar.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/ReactiveCassandraAuditingRegistrar.java index 3939bc2ca..1f4606664 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/ReactiveCassandraAuditingRegistrar.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/ReactiveCassandraAuditingRegistrar.java @@ -32,6 +32,7 @@ import org.springframework.util.Assert; * {@link ImportBeanDefinitionRegistrar} to enable {@link EnableReactiveCassandraAuditing} annotation. * * @author Mark Paluch + * @author Christoph Strobl * @since 3.1 */ class ReactiveCassandraAuditingRegistrar extends AuditingBeanDefinitionRegistrarSupport { @@ -49,7 +50,8 @@ class ReactiveCassandraAuditingRegistrar extends AuditingBeanDefinitionRegistrar @Override protected void postProcess(BeanDefinitionBuilder builder, AuditingConfiguration configuration, BeanDefinitionRegistry registry) { - CassandraAuditingRegistrar.potentiallyRegisterCassandraPersistentEntities(builder, registry); + + builder.setFactoryMethod("from").addConstructorArgReference("cassandraMappingContext"); } @Override