diff --git a/src/main/java/org/springframework/data/keyvalue/repository/query/CachingKeyValuePartTreeQuery.java b/src/main/java/org/springframework/data/keyvalue/repository/query/CachingKeyValuePartTreeQuery.java index aa5dac6..01ee9f6 100644 --- a/src/main/java/org/springframework/data/keyvalue/repository/query/CachingKeyValuePartTreeQuery.java +++ b/src/main/java/org/springframework/data/keyvalue/repository/query/CachingKeyValuePartTreeQuery.java @@ -17,8 +17,8 @@ package org.springframework.data.keyvalue.repository.query; import org.springframework.data.keyvalue.core.KeyValueOperations; import org.springframework.data.keyvalue.core.query.KeyValueQuery; -import org.springframework.data.repository.query.EvaluationContextProvider; import org.springframework.data.repository.query.QueryMethod; +import org.springframework.data.repository.query.QueryMethodEvaluationContextProvider; import org.springframework.data.repository.query.parser.AbstractQueryCreator; import org.springframework.data.repository.query.parser.PartTree; import org.springframework.lang.Nullable; @@ -35,8 +35,9 @@ public class CachingKeyValuePartTreeQuery extends KeyValuePartTreeQuery { private @Nullable KeyValueQuery cachedQuery; - public CachingKeyValuePartTreeQuery(QueryMethod queryMethod, EvaluationContextProvider evaluationContextProvider, - KeyValueOperations keyValueOperations, Class> queryCreator) { + public CachingKeyValuePartTreeQuery(QueryMethod queryMethod, + QueryMethodEvaluationContextProvider evaluationContextProvider, KeyValueOperations keyValueOperations, + Class> queryCreator) { super(queryMethod, evaluationContextProvider, keyValueOperations, queryCreator); } diff --git a/src/main/java/org/springframework/data/keyvalue/repository/query/KeyValuePartTreeQuery.java b/src/main/java/org/springframework/data/keyvalue/repository/query/KeyValuePartTreeQuery.java index 8b671d3..9b4d532 100644 --- a/src/main/java/org/springframework/data/keyvalue/repository/query/KeyValuePartTreeQuery.java +++ b/src/main/java/org/springframework/data/keyvalue/repository/query/KeyValuePartTreeQuery.java @@ -25,14 +25,15 @@ import org.springframework.data.keyvalue.core.IterableConverter; import org.springframework.data.keyvalue.core.KeyValueOperations; import org.springframework.data.keyvalue.core.SpelCriteria; import org.springframework.data.keyvalue.core.query.KeyValueQuery; -import org.springframework.data.repository.query.EvaluationContextProvider; import org.springframework.data.repository.query.ParameterAccessor; import org.springframework.data.repository.query.ParametersParameterAccessor; import org.springframework.data.repository.query.QueryMethod; +import org.springframework.data.repository.query.QueryMethodEvaluationContextProvider; import org.springframework.data.repository.query.RepositoryQuery; import org.springframework.data.repository.query.ResultProcessor; import org.springframework.data.repository.query.parser.AbstractQueryCreator; import org.springframework.data.repository.query.parser.PartTree; +import org.springframework.data.spel.EvaluationContextProvider; import org.springframework.expression.EvaluationContext; import org.springframework.expression.spel.standard.SpelExpression; import org.springframework.lang.Nullable; @@ -49,7 +50,7 @@ import org.springframework.util.ClassUtils; */ public class KeyValuePartTreeQuery implements RepositoryQuery { - private final EvaluationContextProvider evaluationContextProvider; + private final QueryMethodEvaluationContextProvider evaluationContextProvider; private final QueryMethod queryMethod; private final KeyValueOperations keyValueOperations; private final QueryCreatorFactory, ?>> queryCreatorFactory; @@ -63,7 +64,7 @@ public class KeyValuePartTreeQuery implements RepositoryQuery { * @param keyValueOperations must not be {@literal null}. * @param queryCreator must not be {@literal null}. */ - public KeyValuePartTreeQuery(QueryMethod queryMethod, EvaluationContextProvider evaluationContextProvider, + public KeyValuePartTreeQuery(QueryMethod queryMethod, QueryMethodEvaluationContextProvider evaluationContextProvider, KeyValueOperations keyValueOperations, Class> queryCreator) { this(queryMethod, evaluationContextProvider, keyValueOperations, @@ -81,7 +82,7 @@ public class KeyValuePartTreeQuery implements RepositoryQuery { * @param queryCreatorFactory must not be {@literal null}. * @since 2.0 */ - public KeyValuePartTreeQuery(QueryMethod queryMethod, EvaluationContextProvider evaluationContextProvider, + public KeyValuePartTreeQuery(QueryMethod queryMethod, QueryMethodEvaluationContextProvider evaluationContextProvider, KeyValueOperations keyValueOperations, QueryCreatorFactory queryCreatorFactory) { Assert.notNull(queryMethod, "Query method must not be null!"); diff --git a/src/main/java/org/springframework/data/keyvalue/repository/support/KeyValueRepositoryFactory.java b/src/main/java/org/springframework/data/keyvalue/repository/support/KeyValueRepositoryFactory.java index 7c1c850..0ea90d4 100644 --- a/src/main/java/org/springframework/data/keyvalue/repository/support/KeyValueRepositoryFactory.java +++ b/src/main/java/org/springframework/data/keyvalue/repository/support/KeyValueRepositoryFactory.java @@ -35,12 +35,13 @@ import org.springframework.data.repository.core.RepositoryInformation; import org.springframework.data.repository.core.RepositoryMetadata; import org.springframework.data.repository.core.support.PersistentEntityInformation; import org.springframework.data.repository.core.support.RepositoryFactorySupport; -import org.springframework.data.repository.query.EvaluationContextProvider; import org.springframework.data.repository.query.QueryLookupStrategy; import org.springframework.data.repository.query.QueryLookupStrategy.Key; import org.springframework.data.repository.query.QueryMethod; +import org.springframework.data.repository.query.QueryMethodEvaluationContextProvider; import org.springframework.data.repository.query.RepositoryQuery; import org.springframework.data.repository.query.parser.AbstractQueryCreator; +import org.springframework.data.spel.EvaluationContextProvider; import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; @@ -156,7 +157,7 @@ public class KeyValueRepositoryFactory extends RepositoryFactorySupport { */ @Override protected Optional getQueryLookupStrategy(@Nullable Key key, - EvaluationContextProvider evaluationContextProvider) { + QueryMethodEvaluationContextProvider evaluationContextProvider) { return Optional.of(new KeyValueQueryLookupStrategy(key, evaluationContextProvider, this.keyValueOperations, this.queryCreator, this.repositoryQueryType)); } @@ -167,7 +168,7 @@ public class KeyValueRepositoryFactory extends RepositoryFactorySupport { */ private static class KeyValueQueryLookupStrategy implements QueryLookupStrategy { - private EvaluationContextProvider evaluationContextProvider; + private QueryMethodEvaluationContextProvider evaluationContextProvider; private KeyValueOperations keyValueOperations; private Class> queryCreator; @@ -184,7 +185,7 @@ public class KeyValueRepositoryFactory extends RepositoryFactorySupport { * @param keyValueOperations must not be {@literal null}. * @param queryCreator must not be {@literal null}. */ - public KeyValueQueryLookupStrategy(Key key, EvaluationContextProvider evaluationContextProvider, + public KeyValueQueryLookupStrategy(Key key, QueryMethodEvaluationContextProvider evaluationContextProvider, KeyValueOperations keyValueOperations, Class> queryCreator) { this(key, evaluationContextProvider, keyValueOperations, queryCreator, KeyValuePartTreeQuery.class); } @@ -196,8 +197,9 @@ public class KeyValueRepositoryFactory extends RepositoryFactorySupport { * @param queryCreator * @since 1.1 */ - public KeyValueQueryLookupStrategy(@Nullable Key key, EvaluationContextProvider evaluationContextProvider, - KeyValueOperations keyValueOperations, Class> queryCreator, + public KeyValueQueryLookupStrategy(@Nullable Key key, + QueryMethodEvaluationContextProvider evaluationContextProvider, KeyValueOperations keyValueOperations, + Class> queryCreator, Class repositoryQueryType) { Assert.notNull(evaluationContextProvider, "EvaluationContextProvider must not be null!"); @@ -223,8 +225,8 @@ public class KeyValueRepositoryFactory extends RepositoryFactorySupport { QueryMethod queryMethod = new QueryMethod(method, metadata, factory); Constructor constructor = (Constructor) ClassUtils - .getConstructorIfAvailable(this.repositoryQueryType, QueryMethod.class, EvaluationContextProvider.class, - KeyValueOperations.class, Class.class); + .getConstructorIfAvailable(this.repositoryQueryType, QueryMethod.class, + QueryMethodEvaluationContextProvider.class, KeyValueOperations.class, Class.class); Assert.state(constructor != null, String.format( diff --git a/src/test/java/org/springframework/data/keyvalue/repository/query/CachingKeyValuePartTreeQueryUnitTests.java b/src/test/java/org/springframework/data/keyvalue/repository/query/CachingKeyValuePartTreeQueryUnitTests.java index 895bd9c..76b285e 100644 --- a/src/test/java/org/springframework/data/keyvalue/repository/query/CachingKeyValuePartTreeQueryUnitTests.java +++ b/src/test/java/org/springframework/data/keyvalue/repository/query/CachingKeyValuePartTreeQueryUnitTests.java @@ -18,6 +18,7 @@ package org.springframework.data.keyvalue.repository.query; import static org.hamcrest.core.IsNot.*; import static org.hamcrest.core.IsSame.*; import static org.junit.Assert.*; +import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import java.lang.reflect.Method; @@ -33,8 +34,8 @@ import org.springframework.data.keyvalue.core.KeyValueOperations; import org.springframework.data.keyvalue.core.SpelCriteria; import org.springframework.data.projection.ProjectionFactory; import org.springframework.data.repository.core.RepositoryMetadata; -import org.springframework.data.repository.query.DefaultEvaluationContextProvider; import org.springframework.data.repository.query.QueryMethod; +import org.springframework.data.repository.query.QueryMethodEvaluationContextProvider; /** * Unit tests for {@link CachingKeyValuePartTreeQuery}. @@ -62,7 +63,7 @@ public class CachingKeyValuePartTreeQueryUnitTests { QueryMethod qm = new QueryMethod(Repo.class.getMethod("findByFirstname", String.class), metadataMock, projectionFactoryMock); - KeyValuePartTreeQuery query = new CachingKeyValuePartTreeQuery(qm, DefaultEvaluationContextProvider.INSTANCE, + KeyValuePartTreeQuery query = new CachingKeyValuePartTreeQuery(qm, QueryMethodEvaluationContextProvider.DEFAULT, kvOpsMock, SpelQueryCreator.class); Object[] args = new Object[] { "foo" }; diff --git a/src/test/java/org/springframework/data/keyvalue/repository/query/KeyValuePartTreeQueryUnitTests.java b/src/test/java/org/springframework/data/keyvalue/repository/query/KeyValuePartTreeQueryUnitTests.java index c608fea..7e29482 100644 --- a/src/test/java/org/springframework/data/keyvalue/repository/query/KeyValuePartTreeQueryUnitTests.java +++ b/src/test/java/org/springframework/data/keyvalue/repository/query/KeyValuePartTreeQueryUnitTests.java @@ -36,8 +36,8 @@ import org.springframework.data.keyvalue.core.SpelCriteria; import org.springframework.data.keyvalue.core.query.KeyValueQuery; import org.springframework.data.projection.ProjectionFactory; import org.springframework.data.repository.core.RepositoryMetadata; -import org.springframework.data.repository.query.DefaultEvaluationContextProvider; import org.springframework.data.repository.query.QueryMethod; +import org.springframework.data.repository.query.QueryMethodEvaluationContextProvider; /** * @author Christoph Strobl @@ -59,7 +59,7 @@ public class KeyValuePartTreeQueryUnitTests { QueryMethod qm = new QueryMethod(Repo.class.getMethod("findByFirstname", String.class), metadataMock, projectionFactoryMock); - KeyValuePartTreeQuery query = new KeyValuePartTreeQuery(qm, DefaultEvaluationContextProvider.INSTANCE, kvOpsMock, + KeyValuePartTreeQuery query = new KeyValuePartTreeQuery(qm, QueryMethodEvaluationContextProvider.DEFAULT, kvOpsMock, SpelQueryCreator.class); Object[] args = new Object[] { "foo" }; @@ -80,7 +80,7 @@ public class KeyValuePartTreeQueryUnitTests { QueryMethod qm = new QueryMethod(Repo.class.getMethod("findBy", Pageable.class), metadataMock, projectionFactoryMock); - KeyValuePartTreeQuery partTreeQuery = new KeyValuePartTreeQuery(qm, DefaultEvaluationContextProvider.INSTANCE, + KeyValuePartTreeQuery partTreeQuery = new KeyValuePartTreeQuery(qm, QueryMethodEvaluationContextProvider.DEFAULT, kvOpsMock, SpelQueryCreator.class); KeyValueQuery query = partTreeQuery.prepareQuery(new Object[] { PageRequest.of(2, 3) }); @@ -98,7 +98,7 @@ public class KeyValuePartTreeQueryUnitTests { QueryMethod qm = new QueryMethod(Repo.class.getMethod("findTop3By"), metadataMock, projectionFactoryMock); - KeyValuePartTreeQuery partTreeQuery = new KeyValuePartTreeQuery(qm, DefaultEvaluationContextProvider.INSTANCE, + KeyValuePartTreeQuery partTreeQuery = new KeyValuePartTreeQuery(qm, QueryMethodEvaluationContextProvider.DEFAULT, kvOpsMock, SpelQueryCreator.class); KeyValueQuery query = partTreeQuery.prepareQuery(new Object[] {}); @@ -116,7 +116,7 @@ public class KeyValuePartTreeQueryUnitTests { QueryMethod qm = new QueryMethod(Repo.class.getMethod("findTop3ByFirstname", String.class), metadataMock, projectionFactoryMock); - KeyValuePartTreeQuery partTreeQuery = new KeyValuePartTreeQuery(qm, DefaultEvaluationContextProvider.INSTANCE, + KeyValuePartTreeQuery partTreeQuery = new KeyValuePartTreeQuery(qm, QueryMethodEvaluationContextProvider.DEFAULT, kvOpsMock, SpelQueryCreator.class); KeyValueQuery query = partTreeQuery.prepareQuery(new Object[] { "firstname" });