DATAREDIS-505 - Allow configuration of Redis Keyspace events config value.

We now allow setting the desired notify-keyspace-events server configuration via @EnableRedisRepsoitories. Use `null` or an empty String for not touching the server’s config. The default is `Ex`.

Original pull request: #202.
This commit is contained in:
Christoph Strobl
2016-06-16 13:33:11 +02:00
committed by Mark Paluch
parent 64456ea134
commit 65c7b2c23e
5 changed files with 78 additions and 12 deletions

View File

@@ -93,8 +93,7 @@ public class RedisRepositoryConfigurationExtensionUnitTests {
metadata = new StandardAnnotationMetadata(Config.class, true);
BeanDefinitionRegistry beanDefintionRegistry = getBeanDefinitionRegistry();
assertThat(getEnableKeyspaceEvents(beanDefintionRegistry),
equalTo((Object) EnableKeyspaceEvents.ON_STARTUP));
assertThat(getEnableKeyspaceEvents(beanDefintionRegistry), equalTo((Object) EnableKeyspaceEvents.ON_STARTUP));
}
/**
@@ -106,8 +105,31 @@ public class RedisRepositoryConfigurationExtensionUnitTests {
metadata = new StandardAnnotationMetadata(ConfigWithKeyspaceEventsDisabled.class, true);
BeanDefinitionRegistry beanDefintionRegistry = getBeanDefinitionRegistry();
assertThat(getEnableKeyspaceEvents(beanDefintionRegistry),
equalTo((Object) EnableKeyspaceEvents.OFF));
assertThat(getEnableKeyspaceEvents(beanDefintionRegistry), equalTo((Object) EnableKeyspaceEvents.OFF));
}
/**
* @see DATAREDIS-505
*/
@Test
public void picksUpDefaultKeyspaceNotificationsConfigParameterCorrectly() {
metadata = new StandardAnnotationMetadata(Config.class, true);
BeanDefinitionRegistry beanDefintionRegistry = getBeanDefinitionRegistry();
assertThat(getKeyspaceNotificationsConfigParameter(beanDefintionRegistry), equalTo((Object) "Ex"));
}
/**
* @see DATAREDIS-505
*/
@Test
public void picksUpCustomKeyspaceNotificationsConfigParameterCorrectly() {
metadata = new StandardAnnotationMetadata(ConfigWithKeyspaceEventsEnabledAndCustomEventConfig.class, true);
BeanDefinitionRegistry beanDefintionRegistry = getBeanDefinitionRegistry();
assertThat(getKeyspaceNotificationsConfigParameter(beanDefintionRegistry), equalTo((Object) "KEA"));
}
private static void assertDoesNotHaveRepo(Class<?> repositoryInterface,
@@ -153,6 +175,11 @@ public class RedisRepositoryConfigurationExtensionUnitTests {
.getPropertyValue("enableKeyspaceEvents").getValue();
}
private Object getKeyspaceNotificationsConfigParameter(BeanDefinitionRegistry beanDefintionRegistry) {
return beanDefintionRegistry.getBeanDefinition("redisKeyValueAdapter").getPropertyValues()
.getPropertyValue("keyspaceNotificationsConfigParameter").getValue();
}
@EnableRedisRepositories(considerNestedRepositories = true, enableKeyspaceEvents = EnableKeyspaceEvents.ON_STARTUP)
static class Config {
@@ -163,6 +190,12 @@ public class RedisRepositoryConfigurationExtensionUnitTests {
}
@EnableRedisRepositories(considerNestedRepositories = true, enableKeyspaceEvents = EnableKeyspaceEvents.ON_STARTUP,
keyspaceNotificationsConfigParameter = "KEA")
static class ConfigWithKeyspaceEventsEnabledAndCustomEventConfig {
}
@RedisHash
static class Sample {
@Id String id;