From 3dfe7af60ed02da436954daddd98bcec5acb6c4f Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Wed, 30 Oct 2019 10:04:35 +0100 Subject: [PATCH] DATAREDIS-1049 - Fix retrieval of empty keyspaceNotificationsConfigParameter used to keep server defaults. Empty Strings changed to be considered null throwing an exception on getRequiredAttribute so we now set the value explicitly for this attribute when considered empty. Original pull request: #491. --- .../configuration/EnableRedisRepositories.java | 2 +- .../RedisRepositoryConfigurationExtension.java | 2 +- ...RepositoryConfigurationExtensionUnitTests.java | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/data/redis/repository/configuration/EnableRedisRepositories.java b/src/main/java/org/springframework/data/redis/repository/configuration/EnableRedisRepositories.java index 704a31e94..4a150488a 100644 --- a/src/main/java/org/springframework/data/redis/repository/configuration/EnableRedisRepositories.java +++ b/src/main/java/org/springframework/data/redis/repository/configuration/EnableRedisRepositories.java @@ -168,7 +168,7 @@ public @interface EnableRedisRepositories { /** * Configure the {@literal notify-keyspace-events} property if not already set.
- * Use an empty {@link String} to keep not alter existing server configuration. + * Use an empty {@link String} to keep (not alter) existing server configuration. * * @return {@literal Ex} by default. * @since 1.8 diff --git a/src/main/java/org/springframework/data/redis/repository/configuration/RedisRepositoryConfigurationExtension.java b/src/main/java/org/springframework/data/redis/repository/configuration/RedisRepositoryConfigurationExtension.java index dc84e8419..b840887d2 100644 --- a/src/main/java/org/springframework/data/redis/repository/configuration/RedisRepositoryConfigurationExtension.java +++ b/src/main/java/org/springframework/data/redis/repository/configuration/RedisRepositoryConfigurationExtension.java @@ -144,7 +144,7 @@ public class RedisRepositoryConfigurationExtension extends KeyValueRepositoryCon .addPropertyValue("enableKeyspaceEvents", configuration.getRequiredAttribute("enableKeyspaceEvents", EnableKeyspaceEvents.class)) // .addPropertyValue("keyspaceNotificationsConfigParameter", - configuration.getRequiredAttribute("keyspaceNotificationsConfigParameter", String.class)) // + configuration.getAttribute("keyspaceNotificationsConfigParameter", String.class).orElse("")) // .getBeanDefinition(); } diff --git a/src/test/java/org/springframework/data/redis/repository/configuration/RedisRepositoryConfigurationExtensionUnitTests.java b/src/test/java/org/springframework/data/redis/repository/configuration/RedisRepositoryConfigurationExtensionUnitTests.java index 366b96df7..7b6bffd7c 100644 --- a/src/test/java/org/springframework/data/redis/repository/configuration/RedisRepositoryConfigurationExtensionUnitTests.java +++ b/src/test/java/org/springframework/data/redis/repository/configuration/RedisRepositoryConfigurationExtensionUnitTests.java @@ -114,6 +114,15 @@ public class RedisRepositoryConfigurationExtensionUnitTests { assertThat(getKeyspaceNotificationsConfigParameter(beanDefintionRegistry)).isEqualTo((Object) "KEA"); } + @Test // DATAREDIS-1049 + public void explicitlyEmptyKeyspaceNotificationsConfigParameterShouldBeCapturedCorrectly() { + + metadata = new StandardAnnotationMetadata(ConfigWithEmptyConfigParameter.class, true); + BeanDefinitionRegistry beanDefintionRegistry = getBeanDefinitionRegistry(); + + assertThat(getKeyspaceNotificationsConfigParameter(beanDefintionRegistry)).isEqualTo(""); + } + private static void assertDoesNotHaveRepo(Class repositoryInterface, Collection> configs) { @@ -179,6 +188,12 @@ public class RedisRepositoryConfigurationExtensionUnitTests { } + @EnableRedisRepositories(considerNestedRepositories = true, enableKeyspaceEvents = EnableKeyspaceEvents.ON_STARTUP, + keyspaceNotificationsConfigParameter = "") + static class ConfigWithEmptyConfigParameter { + + } + @RedisHash static class Sample { @Id String id;