diff --git a/pom.xml b/pom.xml
index c0fb8f61..edb6c975 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,7 +41,7 @@
4.1.121.Final
3.14.9
6.2.6
- 2023.1.2
+ 2025.0.0-RC1
6.4.5
2024.0.5
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 8e194264..b6d478ed 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,8 @@
*/
package org.springframework.vault.repository.mapping;
+import org.springframework.data.expression.ValueExpression;
+import org.springframework.data.expression.ValueExpressionParser;
import org.springframework.data.keyvalue.core.mapping.AnnotationBasedKeySpaceResolver;
import org.springframework.data.keyvalue.core.mapping.BasicKeyValuePersistentEntity;
import org.springframework.data.keyvalue.core.mapping.KeySpaceResolver;
@@ -24,6 +26,7 @@ import org.springframework.expression.ParserContext;
import org.springframework.expression.common.LiteralExpression;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.lang.Nullable;
+import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
/**
@@ -35,11 +38,11 @@ import org.springframework.util.StringUtils;
public class BasicVaultPersistentEntity extends BasicKeyValuePersistentEntity
implements VaultPersistentEntity {
- private static final SpelExpressionParser PARSER = new SpelExpressionParser();
+ private static final ValueExpressionParser PARSER = ValueExpressionParser.create();
private final String backend;
- private final @Nullable Expression backendExpression;
+ private final @Nullable ValueExpression backendExpression;
/**
* Creates new {@link BasicVaultPersistentEntity}.
@@ -86,10 +89,9 @@ public class BasicVaultPersistentEntity extends BasicKeyValuePersistentEntity
* @return
*/
@Nullable
- private static Expression detectExpression(String potentialExpression) {
-
- Expression expression = PARSER.parseExpression(potentialExpression, ParserContext.TEMPLATE_EXPRESSION);
- return expression instanceof LiteralExpression ? null : expression;
+ private static ValueExpression detectExpression(String potentialExpression) {
+ ValueExpression expression = PARSER.parse(potentialExpression);
+ return expression.isLiteral() ? null : expression;
}
@Override
@@ -102,7 +104,8 @@ public class BasicVaultPersistentEntity extends BasicKeyValuePersistentEntity
return this.backendExpression == null //
? this.backend //
- : this.backendExpression.getValue(getEvaluationContext(null), String.class);
+ : ObjectUtils.nullSafeToString(this.backendExpression
+ .evaluate(getValueEvaluationContext(null, backendExpression.getExpressionDependencies())));
}
}
diff --git a/spring-vault-core/src/test/java/org/springframework/vault/repository/query/VaultQueryCreatorUnitTests.java b/spring-vault-core/src/test/java/org/springframework/vault/repository/query/VaultQueryCreatorUnitTests.java
index 678f62ea..42c96ab1 100644
--- a/spring-vault-core/src/test/java/org/springframework/vault/repository/query/VaultQueryCreatorUnitTests.java
+++ b/spring-vault-core/src/test/java/org/springframework/vault/repository/query/VaultQueryCreatorUnitTests.java
@@ -23,6 +23,7 @@ import org.junit.jupiter.api.Test;
import org.springframework.dao.InvalidDataAccessApiUsageException;
import org.springframework.data.repository.query.DefaultParameters;
import org.springframework.data.repository.query.ParametersParameterAccessor;
+import org.springframework.data.repository.query.ParametersSource;
import org.springframework.data.repository.query.parser.PartTree;
import org.springframework.util.ReflectionUtils;
import org.springframework.vault.repository.mapping.VaultMappingContext;
@@ -191,7 +192,7 @@ class VaultQueryCreatorUnitTests {
VaultQuery createQuery(String methodName, String value) {
DefaultParameters defaultParameters = new DefaultParameters(
- ReflectionUtils.findMethod(dummy.class, "someUnrelatedMethod", String.class));
+ ParametersSource.of(ReflectionUtils.findMethod(dummy.class, "someUnrelatedMethod", String.class)));
PartTree partTree = new PartTree(methodName, Credentials.class);
VaultQueryCreator queryCreator = new VaultQueryCreator(partTree,
@@ -203,7 +204,7 @@ class VaultQueryCreatorUnitTests {
VaultQuery createQuery(String methodName, List value) {
DefaultParameters defaultParameters = new DefaultParameters(
- ReflectionUtils.findMethod(dummy.class, "someUnrelatedMethod", List.class));
+ ParametersSource.of(ReflectionUtils.findMethod(dummy.class, "someUnrelatedMethod", List.class)));
PartTree partTree = new PartTree(methodName, Credentials.class);
VaultQueryCreator queryCreator = new VaultQueryCreator(partTree,
@@ -214,8 +215,8 @@ class VaultQueryCreatorUnitTests {
VaultQuery createQuery(String methodName, String value, String anotherValue) {
- DefaultParameters defaultParameters = new DefaultParameters(
- ReflectionUtils.findMethod(dummy.class, "someUnrelatedMethod", String.class, String.class));
+ DefaultParameters defaultParameters = new DefaultParameters(ParametersSource
+ .of(ReflectionUtils.findMethod(dummy.class, "someUnrelatedMethod", String.class, String.class)));
PartTree partTree = new PartTree(methodName, Credentials.class);
VaultQueryCreator queryCreator = new VaultQueryCreator(partTree,