Skip to content

Commit bdb816a

Browse files
committed
Adopt to deprecation removals in Commons.
Closes #2972
1 parent 3338014 commit bdb816a

File tree

3 files changed

+31
-42
lines changed

3 files changed

+31
-42
lines changed

src/main/java/org/springframework/data/neo4j/repository/query/ReactiveStringBasedNeo4jQuery.java

+24-32
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import org.springframework.data.repository.query.Parameter;
3535
import org.springframework.data.repository.query.Parameters;
3636
import org.springframework.data.repository.query.RepositoryQuery;
37-
import org.springframework.data.repository.query.SpelQueryContext;
3837
import org.springframework.data.repository.query.ValueExpressionDelegate;
3938
import org.springframework.data.repository.query.ValueExpressionQueryRewriter;
4039
import org.springframework.lang.Nullable;
@@ -58,12 +57,6 @@
5857
*/
5958
final class ReactiveStringBasedNeo4jQuery extends AbstractReactiveNeo4jQuery {
6059

61-
/**
62-
* Used for extracting SpEL expressions inside Cypher query templates.
63-
*/
64-
static final SpelQueryContext SPEL_QUERY_CONTEXT = SpelQueryContext
65-
.of(ReactiveStringBasedNeo4jQuery::parameterNameSource, ReactiveStringBasedNeo4jQuery::replacementSource);
66-
6760
private final ValueExpressionQueryRewriter.EvaluatingValueExpressionQueryRewriter queryRewriter;
6861

6962
private final ValueExpressionQueryRewriter.QueryExpressionEvaluator parsedQuery;
@@ -79,17 +72,17 @@ final class ReactiveStringBasedNeo4jQuery extends AbstractReactiveNeo4jQuery {
7972
* @return A new instance of a String based Neo4j query.
8073
*/
8174
static ReactiveStringBasedNeo4jQuery create(ReactiveNeo4jOperations neo4jOperations,
82-
Neo4jMappingContext mappingContext, ValueExpressionDelegate delegate,
83-
Neo4jQueryMethod queryMethod, ProjectionFactory factory) {
75+
Neo4jMappingContext mappingContext, ValueExpressionDelegate delegate, Neo4jQueryMethod queryMethod,
76+
ProjectionFactory factory) {
8477

8578
Query queryAnnotation = queryMethod.getQueryAnnotation()
8679
.orElseThrow(() -> new MappingException("Expected @Query annotation on the query method"));
8780

8881
String cypherTemplate = Optional.ofNullable(queryAnnotation.value()).filter(StringUtils::hasText)
8982
.orElseThrow(() -> new MappingException("Expected @Query annotation to have a value, but it did not"));
9083

91-
return new ReactiveStringBasedNeo4jQuery(neo4jOperations, mappingContext, delegate, queryMethod,
92-
cypherTemplate, Neo4jQueryType.fromDefinition(queryAnnotation), factory);
84+
return new ReactiveStringBasedNeo4jQuery(neo4jOperations, mappingContext, delegate, queryMethod, cypherTemplate,
85+
Neo4jQueryType.fromDefinition(queryAnnotation), factory);
9386
}
9487

9588
/**
@@ -103,45 +96,44 @@ static ReactiveStringBasedNeo4jQuery create(ReactiveNeo4jOperations neo4jOperati
10396
* @return A new instance of a String based Neo4j query.
10497
*/
10598
static ReactiveStringBasedNeo4jQuery create(ReactiveNeo4jOperations neo4jOperations,
106-
Neo4jMappingContext mappingContext, ValueExpressionDelegate delegate,
107-
Neo4jQueryMethod queryMethod, String cypherTemplate, ProjectionFactory factory) {
99+
Neo4jMappingContext mappingContext, ValueExpressionDelegate delegate, Neo4jQueryMethod queryMethod,
100+
String cypherTemplate, ProjectionFactory factory) {
108101

109102
Assert.hasText(cypherTemplate, "Cannot create String based Neo4j query without a cypher template");
110103

111-
return new ReactiveStringBasedNeo4jQuery(neo4jOperations, mappingContext, delegate, queryMethod,
112-
cypherTemplate, Neo4jQueryType.DEFAULT, factory);
104+
return new ReactiveStringBasedNeo4jQuery(neo4jOperations, mappingContext, delegate, queryMethod, cypherTemplate,
105+
Neo4jQueryType.DEFAULT, factory);
113106
}
114107

115108
private ReactiveStringBasedNeo4jQuery(ReactiveNeo4jOperations neo4jOperations, Neo4jMappingContext mappingContext,
116-
ValueExpressionDelegate delegate, Neo4jQueryMethod queryMethod,
117-
String cypherTemplate, Neo4jQueryType queryType, ProjectionFactory factory) {
109+
ValueExpressionDelegate delegate, Neo4jQueryMethod queryMethod, String cypherTemplate, Neo4jQueryType queryType,
110+
ProjectionFactory factory) {
118111

119112
super(neo4jOperations, mappingContext, queryMethod, queryType, factory);
120113

121-
this.queryRewriter = ValueExpressionQueryRewriter.of(delegate,
122-
StringBasedNeo4jQuery::parameterNameSource, StringBasedNeo4jQuery::replacementSource);
114+
this.queryRewriter = createQueryRewriter(delegate);
123115
this.parsedQuery = queryRewriter.parse(cypherTemplate, queryMethod.getParameters());
124116
}
125117

118+
static ValueExpressionQueryRewriter.EvaluatingValueExpressionQueryRewriter createQueryRewriter(ValueExpressionDelegate delegate) {
119+
return ValueExpressionQueryRewriter.of(delegate, StringBasedNeo4jQuery::parameterNameSource,
120+
StringBasedNeo4jQuery::replacementSource);
121+
}
122+
126123
@Override
127-
protected <T extends Object> PreparedQuery<T> prepareQuery(Class<T> returnedType, Collection<PropertyFilter.ProjectedPath> includedProperties,
128-
Neo4jParameterAccessor parameterAccessor, @Nullable Neo4jQueryType queryType,
129-
@Nullable Supplier<BiFunction<TypeSystem, MapAccessor, ?>> mappingFunction, @Nullable UnaryOperator<Integer> limitModifier) {
124+
protected <T extends Object> PreparedQuery<T> prepareQuery(Class<T> returnedType,
125+
Collection<PropertyFilter.ProjectedPath> includedProperties, Neo4jParameterAccessor parameterAccessor,
126+
@Nullable Neo4jQueryType queryType, @Nullable Supplier<BiFunction<TypeSystem, MapAccessor, ?>> mappingFunction,
127+
@Nullable UnaryOperator<Integer> limitModifier) {
130128

131129
Map<String, Object> boundParameters = bindParameters(parameterAccessor);
132-
QueryContext queryContext = new QueryContext(
133-
queryMethod.getRepositoryName() + "." + queryMethod.getName(),
134-
parsedQuery.getQueryString(),
135-
boundParameters
136-
);
130+
QueryContext queryContext = new QueryContext(queryMethod.getRepositoryName() + "." + queryMethod.getName(),
131+
parsedQuery.getQueryString(), boundParameters);
137132

138133
logWarningsIfNecessary(queryContext, parameterAccessor);
139134

140-
return PreparedQuery.queryFor(returnedType)
141-
.withCypherQuery(queryContext.query)
142-
.withParameters(boundParameters)
143-
.usingMappingFunction(mappingFunction)
144-
.build();
135+
return PreparedQuery.queryFor(returnedType).withCypherQuery(queryContext.query).withParameters(boundParameters)
136+
.usingMappingFunction(mappingFunction).build();
145137
}
146138

147139
Map<String, Object> bindParameters(Neo4jParameterAccessor parameterAccessor) {

src/main/java/org/springframework/data/neo4j/repository/support/Neo4jRepositoryFactory.java

-3
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
import org.springframework.data.repository.core.support.RepositoryFragment;
4040
import org.springframework.data.repository.query.QueryLookupStrategy;
4141
import org.springframework.data.repository.query.QueryLookupStrategy.Key;
42-
import org.springframework.data.repository.query.QueryMethodEvaluationContextProvider;
4342
import org.springframework.data.repository.query.ValueExpressionDelegate;
4443

4544
/**
@@ -61,8 +60,6 @@ final class Neo4jRepositoryFactory extends RepositoryFactorySupport {
6160

6261
this.neo4jOperations = neo4jOperations;
6362
this.mappingContext = mappingContext;
64-
65-
setEvaluationContextProvider(QueryMethodEvaluationContextProvider.DEFAULT);
6663
}
6764

6865
@SuppressWarnings("unchecked")

src/test/java/org/springframework/data/neo4j/repository/query/ReactiveRepositoryQueryTest.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@
5454
import org.springframework.data.repository.core.support.DefaultRepositoryMetadata;
5555
import org.springframework.data.repository.query.Param;
5656
import org.springframework.data.repository.query.QueryMethodValueEvaluationContextAccessor;
57-
import org.springframework.data.repository.query.SpelQueryContext;
5857
import org.springframework.data.repository.query.ValueExpressionDelegate;
58+
import org.springframework.data.repository.query.ValueExpressionQueryRewriter;
5959
import org.springframework.data.repository.reactive.ReactiveCrudRepository;
6060
import org.springframework.util.ReflectionUtils;
6161

@@ -95,24 +95,24 @@ class ReactiveStringBasedNeo4jQueryTest {
9595
@Test
9696
void spelQueryContextShouldBeConfiguredCorrectly() {
9797

98-
SpelQueryContext spelQueryContext = ReactiveStringBasedNeo4jQuery.SPEL_QUERY_CONTEXT;
98+
ValueExpressionQueryRewriter rewriter = ReactiveStringBasedNeo4jQuery.createQueryRewriter(ValueExpressionDelegate.create());
9999

100100
String template;
101101
String query;
102-
SpelQueryContext.SpelExtractor spelExtractor;
102+
ValueExpressionQueryRewriter.ParsedQuery parsedQuery;
103103

104104
template = "MATCH (user:User) WHERE user.name = :#{#searchUser.name} and user.middleName = ?#{#searchUser.middleName} RETURN user";
105105

106-
spelExtractor = spelQueryContext.parse(template);
107-
query = spelExtractor.getQueryString();
106+
parsedQuery = rewriter.parse(template);
107+
query = parsedQuery.getQueryString();
108108

109109
assertThat(query)
110110
.isEqualTo(
111111
"MATCH (user:User) WHERE user.name = $__SpEL__0 and user.middleName = $__SpEL__1 RETURN user");
112112

113113
template = "MATCH (user:User) WHERE user.name=?#{[0]} and user.name=:#{[0]} RETURN user";
114-
spelExtractor = spelQueryContext.parse(template);
115-
query = spelExtractor.getQueryString();
114+
parsedQuery = rewriter.parse(template);
115+
query = parsedQuery.getQueryString();
116116

117117
assertThat(query)
118118
.isEqualTo("MATCH (user:User) WHERE user.name=$__SpEL__0 and user.name=$__SpEL__1 RETURN user");

0 commit comments

Comments
 (0)