DATAREDIS-944 - Move off deprecations in Spring Data Commons.
Related ticket: DATACMNS-1496.
This commit is contained in:
@@ -888,7 +888,8 @@ public interface ReactiveStringCommands {
|
||||
|
||||
Assert.notNull(key, "Key must not be null!");
|
||||
|
||||
return bitCount(Mono.just(BitCountCommand.bitCount(key).within(new Range<>(start, end)))).next()
|
||||
return bitCount(Mono.just(BitCountCommand.bitCount(key).within(Range.open(start, end)))) //
|
||||
.next() //
|
||||
.map(NumericResponse::getOutput);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,19 +19,15 @@ import java.lang.annotation.Annotation;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
import org.springframework.beans.DirectFieldAccessor;
|
||||
import org.springframework.beans.MutablePropertyValues;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.beans.factory.config.ConstructorArgumentValues;
|
||||
import org.springframework.beans.factory.config.RuntimeBeanReference;
|
||||
import org.springframework.beans.factory.support.AbstractBeanDefinition;
|
||||
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
||||
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
||||
import org.springframework.beans.factory.support.GenericBeanDefinition;
|
||||
import org.springframework.beans.factory.support.RootBeanDefinition;
|
||||
import org.springframework.core.annotation.AnnotationAttributes;
|
||||
import org.springframework.data.keyvalue.repository.config.KeyValueRepositoryConfigurationExtension;
|
||||
import org.springframework.data.redis.core.RedisHash;
|
||||
import org.springframework.data.redis.core.RedisKeyValueAdapter;
|
||||
import org.springframework.data.redis.core.RedisKeyValueAdapter.EnableKeyspaceEvents;
|
||||
import org.springframework.data.redis.core.RedisKeyValueTemplate;
|
||||
import org.springframework.data.redis.core.convert.MappingConfiguration;
|
||||
import org.springframework.data.redis.core.convert.MappingRedisConverter;
|
||||
@@ -82,107 +78,39 @@ public class RedisRepositoryConfigurationExtension extends KeyValueRepositoryCon
|
||||
return "redisKeyValueTemplate";
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.springframework.data.keyvalue.repository.config.KeyValueRepositoryConfigurationExtension#registerBeansForRoot(org.springframework.beans.factory.support.BeanDefinitionRegistry, org.springframework.data.repository.config.RepositoryConfigurationSource)
|
||||
*/
|
||||
@Override
|
||||
public void registerBeansForRoot(BeanDefinitionRegistry registry, RepositoryConfigurationSource configurationSource) {
|
||||
public void registerBeansForRoot(BeanDefinitionRegistry registry, RepositoryConfigurationSource configuration) {
|
||||
|
||||
String redisTemplateRef = configurationSource.getAttribute("redisTemplateRef").get();
|
||||
String redisTemplateRef = configuration.getAttribute("redisTemplateRef").get();
|
||||
|
||||
RootBeanDefinition mappingContextDefinition = createRedisMappingContext(configurationSource);
|
||||
mappingContextDefinition.setSource(configurationSource.getSource());
|
||||
|
||||
registerIfNotAlreadyRegistered(mappingContextDefinition, registry, MAPPING_CONTEXT_BEAN_NAME, configurationSource);
|
||||
|
||||
// register coustom conversions
|
||||
RootBeanDefinition customConversions = new RootBeanDefinition(RedisCustomConversions.class);
|
||||
registerIfNotAlreadyRegistered(customConversions, registry, REDIS_CUSTOM_CONVERSIONS_BEAN_NAME,
|
||||
configurationSource);
|
||||
|
||||
// Register referenceResolver
|
||||
RootBeanDefinition redisReferenceResolver = createRedisReferenceResolverDefinition(redisTemplateRef);
|
||||
redisReferenceResolver.setSource(configurationSource.getSource());
|
||||
registerIfNotAlreadyRegistered(redisReferenceResolver, registry, REDIS_REFERENCE_RESOLVER_BEAN_NAME,
|
||||
configurationSource);
|
||||
|
||||
// Register converter
|
||||
RootBeanDefinition redisConverterDefinition = createRedisConverterDefinition();
|
||||
redisConverterDefinition.setSource(configurationSource.getSource());
|
||||
|
||||
registerIfNotAlreadyRegistered(redisConverterDefinition, registry, REDIS_CONVERTER_BEAN_NAME, configurationSource);
|
||||
|
||||
// register Adapter
|
||||
RootBeanDefinition redisKeyValueAdapterDefinition = new RootBeanDefinition(RedisKeyValueAdapter.class);
|
||||
|
||||
ConstructorArgumentValues constructorArgumentValuesForRedisKeyValueAdapter = new ConstructorArgumentValues();
|
||||
if (StringUtils.hasText(redisTemplateRef)) {
|
||||
|
||||
constructorArgumentValuesForRedisKeyValueAdapter.addIndexedArgumentValue(0,
|
||||
new RuntimeBeanReference(redisTemplateRef));
|
||||
if (!StringUtils.hasText(redisTemplateRef)) {
|
||||
throw new IllegalStateException(
|
||||
"@EnableRedisRepositories(redisTemplateRef = … ) must be configured to a non empty value!");
|
||||
}
|
||||
|
||||
constructorArgumentValuesForRedisKeyValueAdapter.addIndexedArgumentValue(1,
|
||||
new RuntimeBeanReference(REDIS_CONVERTER_BEAN_NAME));
|
||||
registerIfNotAlreadyRegistered(() -> createRedisMappingContext(configuration), registry, MAPPING_CONTEXT_BEAN_NAME,
|
||||
configuration.getSource());
|
||||
|
||||
redisKeyValueAdapterDefinition.setConstructorArgumentValues(constructorArgumentValuesForRedisKeyValueAdapter);
|
||||
// Register custom conversions
|
||||
registerIfNotAlreadyRegistered(() -> new RootBeanDefinition(RedisCustomConversions.class), registry,
|
||||
REDIS_CUSTOM_CONVERSIONS_BEAN_NAME, configuration.getSource());
|
||||
|
||||
DirectFieldAccessor fieldAccessor = new DirectFieldAccessor(configurationSource);
|
||||
AnnotationAttributes attributes = (AnnotationAttributes) fieldAccessor.getPropertyValue("attributes");
|
||||
// Register referenceResolver
|
||||
registerIfNotAlreadyRegistered(() -> createRedisReferenceResolverDefinition(redisTemplateRef), registry,
|
||||
REDIS_REFERENCE_RESOLVER_BEAN_NAME, configuration.getSource());
|
||||
|
||||
MutablePropertyValues redisKeyValueAdapterProps = new MutablePropertyValues();
|
||||
redisKeyValueAdapterProps.add("enableKeyspaceEvents", attributes.getEnum("enableKeyspaceEvents"));
|
||||
redisKeyValueAdapterProps.add("keyspaceNotificationsConfigParameter",
|
||||
attributes.getString("keyspaceNotificationsConfigParameter"));
|
||||
redisKeyValueAdapterDefinition.setPropertyValues(redisKeyValueAdapterProps);
|
||||
// Register converter
|
||||
registerIfNotAlreadyRegistered(() -> createRedisConverterDefinition(), registry, REDIS_CONVERTER_BEAN_NAME,
|
||||
configuration.getSource());
|
||||
|
||||
registerIfNotAlreadyRegistered(redisKeyValueAdapterDefinition, registry, REDIS_ADAPTER_BEAN_NAME,
|
||||
configurationSource);
|
||||
registerIfNotAlreadyRegistered(() -> createRedisKeyValueAdapter(configuration), registry, REDIS_ADAPTER_BEAN_NAME,
|
||||
configuration.getSource());
|
||||
|
||||
super.registerBeansForRoot(registry, configurationSource);
|
||||
}
|
||||
|
||||
private RootBeanDefinition createRedisReferenceResolverDefinition(String redisTemplateRef) {
|
||||
|
||||
RootBeanDefinition beanDef = new RootBeanDefinition();
|
||||
beanDef.setBeanClassName("org.springframework.data.redis.core.convert.ReferenceResolverImpl");
|
||||
|
||||
ConstructorArgumentValues constructorArgs = new ConstructorArgumentValues();
|
||||
constructorArgs.addIndexedArgumentValue(0, new RuntimeBeanReference(redisTemplateRef));
|
||||
|
||||
beanDef.setConstructorArgumentValues(constructorArgs);
|
||||
|
||||
return beanDef;
|
||||
}
|
||||
|
||||
private RootBeanDefinition createRedisMappingContext(RepositoryConfigurationSource configurationSource) {
|
||||
|
||||
ConstructorArgumentValues mappingContextArgs = new ConstructorArgumentValues();
|
||||
mappingContextArgs.addIndexedArgumentValue(0, createMappingConfigBeanDef(configurationSource));
|
||||
|
||||
RootBeanDefinition mappingContextBeanDef = new RootBeanDefinition(RedisMappingContext.class);
|
||||
mappingContextBeanDef.setConstructorArgumentValues(mappingContextArgs);
|
||||
|
||||
return mappingContextBeanDef;
|
||||
}
|
||||
|
||||
private BeanDefinition createMappingConfigBeanDef(RepositoryConfigurationSource configurationSource) {
|
||||
|
||||
DirectFieldAccessor dfa = new DirectFieldAccessor(configurationSource);
|
||||
AnnotationAttributes aa = (AnnotationAttributes) dfa.getPropertyValue("attributes");
|
||||
|
||||
GenericBeanDefinition indexConfiguration = new GenericBeanDefinition();
|
||||
indexConfiguration.setBeanClass(aa.getClass("indexConfiguration"));
|
||||
|
||||
GenericBeanDefinition keyspaceConfig = new GenericBeanDefinition();
|
||||
keyspaceConfig.setBeanClass(aa.getClass("keyspaceConfiguration"));
|
||||
|
||||
ConstructorArgumentValues mappingConfigArgs = new ConstructorArgumentValues();
|
||||
mappingConfigArgs.addIndexedArgumentValue(0, indexConfiguration);
|
||||
mappingConfigArgs.addIndexedArgumentValue(1, keyspaceConfig);
|
||||
|
||||
GenericBeanDefinition mappingConfigBeanDef = new GenericBeanDefinition();
|
||||
mappingConfigBeanDef.setBeanClass(MappingConfiguration.class);
|
||||
mappingConfigBeanDef.setConstructorArgumentValues(mappingConfigArgs);
|
||||
|
||||
return mappingConfigBeanDef;
|
||||
super.registerBeansForRoot(registry, configuration);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -193,34 +121,10 @@ public class RedisRepositoryConfigurationExtension extends KeyValueRepositoryCon
|
||||
protected AbstractBeanDefinition getDefaultKeyValueTemplateBeanDefinition(
|
||||
RepositoryConfigurationSource configurationSource) {
|
||||
|
||||
RootBeanDefinition keyValueTemplateDefinition = new RootBeanDefinition(RedisKeyValueTemplate.class);
|
||||
|
||||
ConstructorArgumentValues constructorArgumentValuesForKeyValueTemplate = new ConstructorArgumentValues();
|
||||
constructorArgumentValuesForKeyValueTemplate.addIndexedArgumentValue(0,
|
||||
new RuntimeBeanReference(REDIS_ADAPTER_BEAN_NAME));
|
||||
constructorArgumentValuesForKeyValueTemplate.addIndexedArgumentValue(1,
|
||||
new RuntimeBeanReference(MAPPING_CONTEXT_BEAN_NAME));
|
||||
|
||||
keyValueTemplateDefinition.setConstructorArgumentValues(constructorArgumentValuesForKeyValueTemplate);
|
||||
|
||||
return keyValueTemplateDefinition;
|
||||
}
|
||||
|
||||
private RootBeanDefinition createRedisConverterDefinition() {
|
||||
|
||||
RootBeanDefinition beanDef = new RootBeanDefinition();
|
||||
beanDef.setBeanClass(MappingRedisConverter.class);
|
||||
|
||||
ConstructorArgumentValues args = new ConstructorArgumentValues();
|
||||
args.addIndexedArgumentValue(0, new RuntimeBeanReference(MAPPING_CONTEXT_BEAN_NAME));
|
||||
beanDef.setConstructorArgumentValues(args);
|
||||
|
||||
MutablePropertyValues props = new MutablePropertyValues();
|
||||
props.add("referenceResolver", new RuntimeBeanReference(REDIS_REFERENCE_RESOLVER_BEAN_NAME));
|
||||
props.add("customConversions", new RuntimeBeanReference(REDIS_CUSTOM_CONVERSIONS_BEAN_NAME));
|
||||
beanDef.setPropertyValues(props);
|
||||
|
||||
return beanDef;
|
||||
return BeanDefinitionBuilder.rootBeanDefinition(RedisKeyValueTemplate.class) //
|
||||
.addConstructorArgReference(REDIS_ADAPTER_BEAN_NAME) //
|
||||
.addConstructorArgReference(MAPPING_CONTEXT_BEAN_NAME) //
|
||||
.getBeanDefinition();
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -229,7 +133,57 @@ public class RedisRepositoryConfigurationExtension extends KeyValueRepositoryCon
|
||||
*/
|
||||
@Override
|
||||
protected Collection<Class<? extends Annotation>> getIdentifyingAnnotations() {
|
||||
return Collections.<Class<? extends Annotation>> singleton(RedisHash.class);
|
||||
return Collections.singleton(RedisHash.class);
|
||||
}
|
||||
|
||||
private static AbstractBeanDefinition createRedisKeyValueAdapter(RepositoryConfigurationSource configuration) {
|
||||
|
||||
return BeanDefinitionBuilder.rootBeanDefinition(RedisKeyValueAdapter.class) //
|
||||
.addConstructorArgReference(configuration.getRequiredAttribute("redisTemplateRef", String.class)) //
|
||||
.addConstructorArgReference(REDIS_CONVERTER_BEAN_NAME) //
|
||||
.addPropertyValue("enableKeyspaceEvents",
|
||||
configuration.getRequiredAttribute("enableKeyspaceEvents", EnableKeyspaceEvents.class)) //
|
||||
.addPropertyValue("keyspaceNotificationsConfigParameter",
|
||||
configuration.getRequiredAttribute("keyspaceNotificationsConfigParameter", String.class)) //
|
||||
.getBeanDefinition();
|
||||
}
|
||||
|
||||
private static AbstractBeanDefinition createRedisReferenceResolverDefinition(String redisTemplateRef) {
|
||||
|
||||
return BeanDefinitionBuilder.rootBeanDefinition("org.springframework.data.redis.core.convert.ReferenceResolverImpl") //
|
||||
.addConstructorArgReference(redisTemplateRef) //
|
||||
.getBeanDefinition();
|
||||
}
|
||||
|
||||
private static AbstractBeanDefinition createRedisMappingContext(RepositoryConfigurationSource configurationSource) {
|
||||
|
||||
return BeanDefinitionBuilder.rootBeanDefinition(RedisMappingContext.class) //
|
||||
.addConstructorArgValue(createMappingConfigBeanDef(configurationSource)) //
|
||||
.getBeanDefinition();
|
||||
}
|
||||
|
||||
private static BeanDefinition createMappingConfigBeanDef(RepositoryConfigurationSource configuration) {
|
||||
|
||||
BeanDefinition indexDefinition = BeanDefinitionBuilder
|
||||
.genericBeanDefinition(configuration.getRequiredAttribute("indexConfiguration", Class.class)) //
|
||||
.getBeanDefinition();
|
||||
|
||||
BeanDefinition keyspaceDefinition = BeanDefinitionBuilder
|
||||
.genericBeanDefinition(configuration.getRequiredAttribute("keyspaceConfiguration", Class.class)) //
|
||||
.getBeanDefinition();
|
||||
|
||||
return BeanDefinitionBuilder.genericBeanDefinition(MappingConfiguration.class) //
|
||||
.addConstructorArgValue(indexDefinition) //
|
||||
.addConstructorArgValue(keyspaceDefinition) //
|
||||
.getBeanDefinition();
|
||||
}
|
||||
|
||||
private static AbstractBeanDefinition createRedisConverterDefinition() {
|
||||
|
||||
return BeanDefinitionBuilder.rootBeanDefinition(MappingRedisConverter.class) //
|
||||
.addConstructorArgReference(MAPPING_CONTEXT_BEAN_NAME) //
|
||||
.addPropertyReference("referenceResolver", REDIS_REFERENCE_RESOLVER_BEAN_NAME) //
|
||||
.addPropertyReference("customConversions", REDIS_CUSTOM_CONVERSIONS_BEAN_NAME) //
|
||||
.getBeanDefinition();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user