diff --git a/src/main/asciidoc/key-value-repositories.adoc b/src/main/asciidoc/key-value-repositories.adoc index c285254..97ddc55 100644 --- a/src/main/asciidoc/key-value-repositories.adoc +++ b/src/main/asciidoc/key-value-repositories.adoc @@ -89,6 +89,10 @@ template.findAllOf(User.class); <2> <2> Returns only elements of type `User` stored in `persons` keyspace. ==== +TIP: `@KeySpace` supports https://docs.spring.io/spring/docs/{springVersion}/spring-framework-reference/core.html#expressions[SpEL] expressions allowing dynamic keyspace configuration. + +5.2.0.M3 + [[key-value.keyspaces-custom]] === Custom KeySpace Annotation diff --git a/src/main/java/org/springframework/data/keyvalue/core/mapping/BasicKeyValuePersistentEntity.java b/src/main/java/org/springframework/data/keyvalue/core/mapping/BasicKeyValuePersistentEntity.java index 48f0b79..9792f0d 100644 --- a/src/main/java/org/springframework/data/keyvalue/core/mapping/BasicKeyValuePersistentEntity.java +++ b/src/main/java/org/springframework/data/keyvalue/core/mapping/BasicKeyValuePersistentEntity.java @@ -55,9 +55,11 @@ public class BasicKeyValuePersistentEntity persistentEntity = mappingContext.getPersistentEntity(KeyspaceEntity.class); - - assertThat(persistentEntity.getKeySpace()).isEqualTo(KeyspaceEntity.class.getName()); + assertThat(mappingContext.getPersistentEntity(KeyspaceEntity.class).getKeySpace()) + .isEqualTo(KeyspaceEntity.class.getName()); } @Test // DATAKV-268 public void shouldEvaluateKeyspaceExpression() { KeyValuePersistentEntity persistentEntity = mappingContext.getPersistentEntity(ExpressionEntity.class); - persistentEntity.setEvaluationContextProvider( new ExtensionAwareEvaluationContextProvider(Collections.singletonList(new SampleExtension()))); assertThat(persistentEntity.getKeySpace()).isEqualTo("some"); } + @Test // DATAKV-268 + public void shouldEvaluateEntityWithoutKeyspace() { + + KeyValuePersistentEntity persistentEntity = mappingContext.getPersistentEntity(NoKeyspaceEntity.class); + persistentEntity.setEvaluationContextProvider( + new ExtensionAwareEvaluationContextProvider(Collections.singletonList(new SampleExtension()))); + + assertThat(persistentEntity.getKeySpace()).isEqualTo(NoKeyspaceEntity.class.getName()); + } + @KeySpace("#{myProperty}") static class ExpressionEntity {} @KeySpace static class KeyspaceEntity {} + static class NoKeyspaceEntity {} + static class SampleExtension implements EvaluationContextExtension { @Override