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,