Skip to content

Commit 9eb309c

Browse files
DATAREDIS-425 - Adapted to changes in Spring Data KeyValue APIs.
Default query initialization changed to new, so we can delete some code here. Original Pull Request: #156
1 parent 2cc3055 commit 9eb309c

File tree

3 files changed

+22
-76
lines changed

3 files changed

+22
-76
lines changed

src/main/java/org/springframework/data/redis/repository/support/RedisRepositoryFactory.java

Lines changed: 13 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -16,26 +16,17 @@
1616
package org.springframework.data.redis.repository.support;
1717

1818
import java.io.Serializable;
19-
import java.lang.reflect.Method;
2019

2120
import org.springframework.data.keyvalue.core.KeyValueOperations;
2221
import org.springframework.data.keyvalue.repository.query.KeyValuePartTreeQuery;
23-
import org.springframework.data.keyvalue.repository.query.KeyValuePartTreeQuery.QueryInitialization;
2422
import org.springframework.data.keyvalue.repository.support.KeyValueRepositoryFactory;
25-
import org.springframework.data.projection.ProjectionFactory;
2623
import org.springframework.data.redis.core.mapping.RedisPersistentEntity;
2724
import org.springframework.data.redis.repository.core.MappingRedisEntityInformation;
25+
import org.springframework.data.redis.repository.query.RedisQueryCreator;
2826
import org.springframework.data.repository.core.EntityInformation;
29-
import org.springframework.data.repository.core.NamedQueries;
30-
import org.springframework.data.repository.core.RepositoryMetadata;
3127
import org.springframework.data.repository.core.support.RepositoryFactorySupport;
32-
import org.springframework.data.repository.query.EvaluationContextProvider;
33-
import org.springframework.data.repository.query.QueryLookupStrategy;
34-
import org.springframework.data.repository.query.QueryLookupStrategy.Key;
35-
import org.springframework.data.repository.query.QueryMethod;
3628
import org.springframework.data.repository.query.RepositoryQuery;
3729
import org.springframework.data.repository.query.parser.AbstractQueryCreator;
38-
import org.springframework.util.Assert;
3930

4031
/**
4132
* {@link RepositoryFactorySupport} specific of handing Redis
@@ -48,14 +39,13 @@
4839
public class RedisRepositoryFactory extends KeyValueRepositoryFactory {
4940

5041
private final KeyValueOperations operations;
51-
private final Class<? extends AbstractQueryCreator<?, ?>> queryCreator;
5242

5343
/**
5444
* @param keyValueOperations
5545
* @see KeyValueRepositoryFactory#KeyValueRepositoryFactory(KeyValueOperations)
5646
*/
5747
public RedisRepositoryFactory(KeyValueOperations keyValueOperations) {
58-
this(keyValueOperations, DEFAULT_QUERY_CREATOR);
48+
this(keyValueOperations, RedisQueryCreator.class);
5949
}
6050

6151
/**
@@ -65,19 +55,20 @@ public RedisRepositoryFactory(KeyValueOperations keyValueOperations) {
6555
*/
6656
public RedisRepositoryFactory(KeyValueOperations keyValueOperations,
6757
Class<? extends AbstractQueryCreator<?, ?>> queryCreator) {
68-
super(keyValueOperations, queryCreator);
69-
70-
this.operations = keyValueOperations;
71-
this.queryCreator = queryCreator;
58+
this(keyValueOperations, queryCreator, KeyValuePartTreeQuery.class);
7259
}
7360

74-
/*
75-
* (non-Javadoc)
76-
* @see org.springframework.data.keyvalue.repository.support.KeyValueRepositoryFactory#getQueryLookupStrategy(org.springframework.data.repository.query.QueryLookupStrategy.Key, org.springframework.data.repository.query.EvaluationContextProvider)
61+
/**
62+
* @param keyValueOperations
63+
* @param queryCreator
64+
* @param repositoryQueryType
65+
* @see KeyValueRepositoryFactory#KeyValueRepositoryFactory(KeyValueOperations, Class, Class)
7766
*/
78-
@Override
79-
protected QueryLookupStrategy getQueryLookupStrategy(Key key, EvaluationContextProvider evaluationContextProvider) {
80-
return new RedisQueryLookupStrategy(key, evaluationContextProvider, operations, queryCreator);
67+
public RedisRepositoryFactory(KeyValueOperations keyValueOperations,
68+
Class<? extends AbstractQueryCreator<?, ?>> queryCreator, Class<? extends RepositoryQuery> repositoryQueryType) {
69+
super(keyValueOperations, queryCreator, repositoryQueryType);
70+
71+
this.operations = keyValueOperations;
8172
}
8273

8374
/*
@@ -95,53 +86,4 @@ public <T, ID extends Serializable> EntityInformation<T, ID> getEntityInformatio
9586

9687
return entityInformation;
9788
}
98-
99-
/**
100-
* @author Christoph Strobl
101-
* @since 1.7
102-
*/
103-
private static class RedisQueryLookupStrategy implements QueryLookupStrategy {
104-
105-
private EvaluationContextProvider evaluationContextProvider;
106-
private KeyValueOperations keyValueOperations;
107-
108-
private Class<? extends AbstractQueryCreator<?, ?>> queryCreator;
109-
110-
/**
111-
* Creates a new {@link RedisQueryLookupStrategy} for the given {@link Key}, {@link EvaluationContextProvider},
112-
* {@link KeyValueOperations} and query creator type.
113-
* <p>
114-
*
115-
* @param key
116-
* @param evaluationContextProvider must not be {@literal null}.
117-
* @param keyValueOperations must not be {@literal null}.
118-
* @param queryCreator must not be {@literal null}.
119-
*/
120-
public RedisQueryLookupStrategy(Key key, EvaluationContextProvider evaluationContextProvider,
121-
KeyValueOperations keyValueOperations, Class<? extends AbstractQueryCreator<?, ?>> queryCreator) {
122-
123-
Assert.notNull(evaluationContextProvider, "EvaluationContextProvider must not be null!");
124-
Assert.notNull(keyValueOperations, "KeyValueOperations must not be null!");
125-
Assert.notNull(queryCreator, "Query creator type must not be null!");
126-
127-
this.evaluationContextProvider = evaluationContextProvider;
128-
this.keyValueOperations = keyValueOperations;
129-
this.queryCreator = queryCreator;
130-
}
131-
132-
/*
133-
* (non-Javadoc)
134-
* @see org.springframework.data.repository.query.QueryLookupStrategy#resolveQuery(java.lang.reflect.Method, org.springframework.data.repository.core.RepositoryMetadata, org.springframework.data.repository.core.NamedQueries)
135-
*/
136-
@Override
137-
public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, ProjectionFactory factory,
138-
NamedQueries namedQueries) {
139-
140-
QueryMethod queryMethod = new QueryMethod(method, metadata, factory);
141-
KeyValuePartTreeQuery partTreeQuery = new KeyValuePartTreeQuery(queryMethod, evaluationContextProvider,
142-
this.keyValueOperations, this.queryCreator);
143-
partTreeQuery.setQueryIntialization(QueryInitialization.NEW);
144-
return partTreeQuery;
145-
}
146-
}
14789
}

src/main/java/org/springframework/data/redis/repository/support/RedisRepositoryFactoryBean.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.springframework.data.keyvalue.core.KeyValueOperations;
2222
import org.springframework.data.keyvalue.repository.support.KeyValueRepositoryFactoryBean;
2323
import org.springframework.data.repository.Repository;
24+
import org.springframework.data.repository.query.RepositoryQuery;
2425
import org.springframework.data.repository.query.parser.AbstractQueryCreator;
2526

2627
/**
@@ -33,16 +34,16 @@
3334
* @param <ID> The repository id type.
3435
* @since 1.7
3536
*/
36-
public class RedisRepositoryFactoryBean<T extends Repository<S, ID>, S, ID extends Serializable> extends
37-
KeyValueRepositoryFactoryBean<T, S, ID> {
37+
public class RedisRepositoryFactoryBean<T extends Repository<S, ID>, S, ID extends Serializable>
38+
extends KeyValueRepositoryFactoryBean<T, S, ID> {
3839

3940
/*
4041
* (non-Javadoc)
41-
* @see org.springframework.data.keyvalue.repository.support.KeyValueRepositoryFactoryBean#createRepositoryFactory(org.springframework.data.keyvalue.core.KeyValueOperations, java.lang.Class)
42+
* @see org.springframework.data.keyvalue.repository.support.KeyValueRepositoryFactoryBean#createRepositoryFactory(org.springframework.data.keyvalue.core.KeyValueOperations, java.lang.Class, java.lang.Class)
4243
*/
4344
@Override
4445
protected RedisRepositoryFactory createRepositoryFactory(KeyValueOperations operations,
45-
Class<? extends AbstractQueryCreator<?, ?>> queryCreator) {
46-
return new RedisRepositoryFactory(operations, queryCreator);
46+
Class<? extends AbstractQueryCreator<?, ?>> queryCreator, Class<? extends RepositoryQuery> repositoryQueryType) {
47+
return new RedisRepositoryFactory(operations, queryCreator, repositoryQueryType);
4748
}
4849
}

src/test/java/org/springframework/data/redis/repository/RedisRepositoryIntegrationTests.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,9 @@ public void simpleFindShouldReturnEntitiesCorrectly() {
115115
assertThat(repo.findByFirstname("rand").size(), is(1));
116116
assertThat(repo.findByFirstname("rand"), hasItem(rand));
117117

118+
assertThat(repo.findByFirstname("egwene").size(), is(1));
119+
assertThat(repo.findByFirstname("egwene"), hasItem(egwene));
120+
118121
assertThat(repo.findByLastname("al'thor"), hasItem(rand));
119122
}
120123

0 commit comments

Comments
 (0)