diff --git a/pom.xml b/pom.xml
index a6c89ca5..66e766b1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,7 +40,7 @@
3.14.9
6.0.10
0.0.4
- 2022.0.7
+ 2023.0.1
6.0.2
2022.0.8
diff --git a/spring-vault-core/src/main/java/org/springframework/vault/repository/mapping/BasicVaultPersistentEntity.java b/spring-vault-core/src/main/java/org/springframework/vault/repository/mapping/BasicVaultPersistentEntity.java
index 6652307b..d22913aa 100644
--- a/spring-vault-core/src/main/java/org/springframework/vault/repository/mapping/BasicVaultPersistentEntity.java
+++ b/spring-vault-core/src/main/java/org/springframework/vault/repository/mapping/BasicVaultPersistentEntity.java
@@ -15,6 +15,7 @@
*/
package org.springframework.vault.repository.mapping;
+import org.springframework.data.keyvalue.core.mapping.AnnotationBasedKeySpaceResolver;
import org.springframework.data.keyvalue.core.mapping.BasicKeyValuePersistentEntity;
import org.springframework.data.keyvalue.core.mapping.KeySpaceResolver;
import org.springframework.data.util.TypeInformation;
@@ -43,10 +44,25 @@ public class BasicVaultPersistentEntity extends BasicKeyValuePersistentEntity
/**
* Creates new {@link BasicVaultPersistentEntity}.
* @param information must not be {@literal null}.
- * @param fallbackKeySpaceResolver can be {@literal null}.
+ * @param keySpaceResolver can be {@literal null}.
*/
- public BasicVaultPersistentEntity(TypeInformation information, KeySpaceResolver fallbackKeySpaceResolver) {
- super(information, fallbackKeySpaceResolver);
+ public BasicVaultPersistentEntity(TypeInformation information, @Nullable KeySpaceResolver keySpaceResolver) {
+ super(information, type -> {
+
+ if (keySpaceResolver != null) {
+ return keySpaceResolver.resolveKeySpace(type);
+ }
+
+ String keyspace = AnnotationBasedKeySpaceResolver.INSTANCE.resolveKeySpace(type);
+ if (StringUtils.hasText(keyspace)) {
+
+ // fallback to use keyspace resolution and SpEL expression handling of
+ // BasicKeyValuePersistentEntity.
+ return null;
+ }
+
+ return SimpleClassNameKeySpaceResolver.INSTANCE.resolveKeySpace(type);
+ });
Secret annotation = findAnnotation(Secret.class);
diff --git a/spring-vault-core/src/main/java/org/springframework/vault/repository/mapping/SimpleClassNameKeySpaceResolver.java b/spring-vault-core/src/main/java/org/springframework/vault/repository/mapping/SimpleClassNameKeySpaceResolver.java
new file mode 100644
index 00000000..7d90ccdc
--- /dev/null
+++ b/spring-vault-core/src/main/java/org/springframework/vault/repository/mapping/SimpleClassNameKeySpaceResolver.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2023 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.vault.repository.mapping;
+
+import org.springframework.data.keyvalue.core.mapping.KeySpaceResolver;
+import org.springframework.util.Assert;
+import org.springframework.util.ClassUtils;
+import org.springframework.util.StringUtils;
+
+/**
+ * Most trivial implementation of {@link KeySpaceResolver} returning the
+ * {@link Class#getName()}.
+ *
+ * @author Mark Paluch
+ */
+enum SimpleClassNameKeySpaceResolver implements KeySpaceResolver {
+
+ INSTANCE;
+
+ @Override
+ public String resolveKeySpace(Class> type) {
+
+ Assert.notNull(type, "Type must not be null");
+ return StringUtils.uncapitalize(ClassUtils.getUserClass(type).getSimpleName());
+ }
+
+}
diff --git a/spring-vault-core/src/main/java/org/springframework/vault/repository/mapping/VaultMappingContext.java b/spring-vault-core/src/main/java/org/springframework/vault/repository/mapping/VaultMappingContext.java
index 73a88396..ae05310a 100644
--- a/spring-vault-core/src/main/java/org/springframework/vault/repository/mapping/VaultMappingContext.java
+++ b/spring-vault-core/src/main/java/org/springframework/vault/repository/mapping/VaultMappingContext.java
@@ -20,9 +20,7 @@ import org.springframework.data.keyvalue.core.mapping.context.KeyValueMappingCon
import org.springframework.data.mapping.model.Property;
import org.springframework.data.mapping.model.SimpleTypeHolder;
import org.springframework.data.util.TypeInformation;
-import org.springframework.util.Assert;
-import org.springframework.util.ClassUtils;
-import org.springframework.util.StringUtils;
+import org.springframework.lang.Nullable;
/**
* Mapping context for {@link VaultPersistentEntity Vault-specific entities}.
@@ -32,20 +30,20 @@ import org.springframework.util.StringUtils;
*/
public class VaultMappingContext extends KeyValueMappingContext, VaultPersistentProperty> {
- private KeySpaceResolver fallbackKeySpaceResolver = SimpleClassNameKeySpaceResolver.INSTANCE;
-
+ /**
+ * @return the {@link KeySpaceResolver} if configured.
+ * @deprecated since 3.1, {@link KeySpaceResolver} has fully moved into
+ * {@link KeyValueMappingContext}.
+ */
+ @Nullable
+ @Deprecated(since = "3.1", forRemoval = true)
public KeySpaceResolver getFallbackKeySpaceResolver() {
- return this.fallbackKeySpaceResolver;
- }
-
- @Override
- public void setFallbackKeySpaceResolver(KeySpaceResolver fallbackKeySpaceResolver) {
- this.fallbackKeySpaceResolver = fallbackKeySpaceResolver;
+ return super.getKeySpaceResolver();
}
@Override
protected VaultPersistentEntity> createPersistentEntity(TypeInformation typeInformation) {
- return new BasicVaultPersistentEntity<>(typeInformation, this.fallbackKeySpaceResolver);
+ return new BasicVaultPersistentEntity<>(typeInformation, getKeySpaceResolver());
}
@Override
@@ -54,23 +52,4 @@ public class VaultMappingContext extends KeyValueMappingContext type) {
-
- Assert.notNull(type, "Type must not be null");
- return StringUtils.uncapitalize(ClassUtils.getUserClass(type).getSimpleName());
- }
-
- }
-
}