Skip to content

Commit 3dfe7af

Browse files
christophstroblmp911de
authored andcommitted
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: spring-projects#491.
1 parent 2afb579 commit 3dfe7af

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

src/main/java/org/springframework/data/redis/repository/configuration/EnableRedisRepositories.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@
168168

169169
/**
170170
* Configure the {@literal notify-keyspace-events} property if not already set. <br />
171-
* Use an empty {@link String} to keep <b>not</b> alter existing server configuration.
171+
* Use an empty {@link String} to keep (<b>not</b> alter) existing server configuration.
172172
*
173173
* @return {@literal Ex} by default.
174174
* @since 1.8

src/main/java/org/springframework/data/redis/repository/configuration/RedisRepositoryConfigurationExtension.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ private static AbstractBeanDefinition createRedisKeyValueAdapter(RepositoryConfi
144144
.addPropertyValue("enableKeyspaceEvents",
145145
configuration.getRequiredAttribute("enableKeyspaceEvents", EnableKeyspaceEvents.class)) //
146146
.addPropertyValue("keyspaceNotificationsConfigParameter",
147-
configuration.getRequiredAttribute("keyspaceNotificationsConfigParameter", String.class)) //
147+
configuration.getAttribute("keyspaceNotificationsConfigParameter", String.class).orElse("")) //
148148
.getBeanDefinition();
149149
}
150150

src/test/java/org/springframework/data/redis/repository/configuration/RedisRepositoryConfigurationExtensionUnitTests.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,15 @@ public void picksUpCustomKeyspaceNotificationsConfigParameterCorrectly() {
114114
assertThat(getKeyspaceNotificationsConfigParameter(beanDefintionRegistry)).isEqualTo((Object) "KEA");
115115
}
116116

117+
@Test // DATAREDIS-1049
118+
public void explicitlyEmptyKeyspaceNotificationsConfigParameterShouldBeCapturedCorrectly() {
119+
120+
metadata = new StandardAnnotationMetadata(ConfigWithEmptyConfigParameter.class, true);
121+
BeanDefinitionRegistry beanDefintionRegistry = getBeanDefinitionRegistry();
122+
123+
assertThat(getKeyspaceNotificationsConfigParameter(beanDefintionRegistry)).isEqualTo("");
124+
}
125+
117126
private static void assertDoesNotHaveRepo(Class<?> repositoryInterface,
118127
Collection<RepositoryConfiguration<RepositoryConfigurationSource>> configs) {
119128

@@ -179,6 +188,12 @@ static class ConfigWithKeyspaceEventsEnabledAndCustomEventConfig {
179188

180189
}
181190

191+
@EnableRedisRepositories(considerNestedRepositories = true, enableKeyspaceEvents = EnableKeyspaceEvents.ON_STARTUP,
192+
keyspaceNotificationsConfigParameter = "")
193+
static class ConfigWithEmptyConfigParameter {
194+
195+
}
196+
182197
@RedisHash
183198
static class Sample {
184199
@Id String id;

0 commit comments

Comments
 (0)