diff --git a/src/main/java/org/springframework/data/couchbase/repository/query/CouchbaseRepositoryQuery.java b/src/main/java/org/springframework/data/couchbase/repository/query/CouchbaseRepositoryQuery.java index c7fd87bd..19bb1435 100644 --- a/src/main/java/org/springframework/data/couchbase/repository/query/CouchbaseRepositoryQuery.java +++ b/src/main/java/org/springframework/data/couchbase/repository/query/CouchbaseRepositoryQuery.java @@ -35,12 +35,11 @@ public class CouchbaseRepositoryQuery implements RepositoryQuery { private final QueryMethodEvaluationContextProvider evaluationContextProvider; public CouchbaseRepositoryQuery(final CouchbaseOperations operations, final CouchbaseQueryMethod queryMethod, - final NamedQueries namedQueries, final QueryMethodEvaluationContextProvider evaluationContextProvider) { + final NamedQueries namedQueries) { this.operations = operations; this.queryMethod = queryMethod; this.namedQueries = namedQueries; - this.evaluationContextProvider = evaluationContextProvider; - throw new RuntimeException("Deprecated"); + this.evaluationContextProvider = QueryMethodEvaluationContextProvider.DEFAULT; } @Override diff --git a/src/main/java/org/springframework/data/couchbase/repository/query/N1qlRepositoryQueryExecutor.java b/src/main/java/org/springframework/data/couchbase/repository/query/N1qlRepositoryQueryExecutor.java index 4cbf6c9d..cb66afa4 100644 --- a/src/main/java/org/springframework/data/couchbase/repository/query/N1qlRepositoryQueryExecutor.java +++ b/src/main/java/org/springframework/data/couchbase/repository/query/N1qlRepositoryQueryExecutor.java @@ -47,7 +47,6 @@ public class N1qlRepositoryQueryExecutor { this.queryMethod = queryMethod; this.namedQueries = namedQueries; this.evaluationContextProvider = evaluationContextProvider; - throw new RuntimeException("Deprecated"); } private static final SpelExpressionParser SPEL_PARSER = new SpelExpressionParser(); @@ -70,7 +69,8 @@ public class N1qlRepositoryQueryExecutor { SPEL_PARSER, evaluationContextProvider, namedQueries).createQuery(); } else { final PartTree tree = new PartTree(queryMethod.getName(), domainClass); - query = new N1qlQueryCreator(tree, accessor, queryMethod, operations.getConverter(), operations.getBucketName()).createQuery(); + query = new N1qlQueryCreator(tree, accessor, queryMethod, operations.getConverter(), operations.getBucketName()) + .createQuery(); } ExecutableFindByQueryOperation.ExecutableFindByQuery operation = (ExecutableFindByQueryOperation.ExecutableFindByQuery) operations diff --git a/src/main/java/org/springframework/data/couchbase/repository/query/ReactiveCouchbaseRepositoryQuery.java b/src/main/java/org/springframework/data/couchbase/repository/query/ReactiveCouchbaseRepositoryQuery.java index 5e87ab56..0f269de1 100644 --- a/src/main/java/org/springframework/data/couchbase/repository/query/ReactiveCouchbaseRepositoryQuery.java +++ b/src/main/java/org/springframework/data/couchbase/repository/query/ReactiveCouchbaseRepositoryQuery.java @@ -36,14 +36,12 @@ public class ReactiveCouchbaseRepositoryQuery extends AbstractReactiveCouchbaseQ private final QueryMethodEvaluationContextProvider evaluationContextProvider; public ReactiveCouchbaseRepositoryQuery(final ReactiveCouchbaseOperations operations, - final ReactiveCouchbaseQueryMethod queryMethod, final NamedQueries namedQueries, - final QueryMethodEvaluationContextProvider evaluationContextProvider) { - super(queryMethod, operations, new SpelExpressionParser(), evaluationContextProvider); + final ReactiveCouchbaseQueryMethod queryMethod, final NamedQueries namedQueries) { + super(queryMethod, operations, new SpelExpressionParser(), QueryMethodEvaluationContextProvider.DEFAULT); this.operations = operations; this.queryMethod = queryMethod; this.namedQueries = namedQueries; - this.evaluationContextProvider = evaluationContextProvider; - throw new RuntimeException("Deprecated"); + this.evaluationContextProvider = QueryMethodEvaluationContextProvider.DEFAULT; } @Override diff --git a/src/main/java/org/springframework/data/couchbase/repository/query/ReactiveN1qlRepositoryQueryExecutor.java b/src/main/java/org/springframework/data/couchbase/repository/query/ReactiveN1qlRepositoryQueryExecutor.java index 084f1684..f53b356f 100644 --- a/src/main/java/org/springframework/data/couchbase/repository/query/ReactiveN1qlRepositoryQueryExecutor.java +++ b/src/main/java/org/springframework/data/couchbase/repository/query/ReactiveN1qlRepositoryQueryExecutor.java @@ -40,7 +40,6 @@ public class ReactiveN1qlRepositoryQueryExecutor { this.queryMethod = queryMethod; this.namedQueries = namedQueries; this.evaluationContextProvider = evaluationContextProvider; - throw new RuntimeException("Deprecated"); } /** diff --git a/src/test/java/org/springframework/data/couchbase/repository/CouchbaseRepositoryQueryIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/repository/CouchbaseRepositoryQueryIntegrationTests.java index f6f3555d..46b47489 100644 --- a/src/test/java/org/springframework/data/couchbase/repository/CouchbaseRepositoryQueryIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/repository/CouchbaseRepositoryQueryIntegrationTests.java @@ -23,6 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -41,6 +42,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.data.couchbase.CouchbaseClientFactory; import org.springframework.data.couchbase.config.AbstractCouchbaseConfiguration; +import org.springframework.data.couchbase.core.CouchbaseTemplate; import org.springframework.data.couchbase.domain.Address; import org.springframework.data.couchbase.domain.Airport; import org.springframework.data.couchbase.domain.AirportRepository; @@ -49,6 +51,8 @@ import org.springframework.data.couchbase.domain.PersonRepository; import org.springframework.data.couchbase.domain.User; import org.springframework.data.couchbase.domain.UserRepository; import org.springframework.data.couchbase.repository.config.EnableCouchbaseRepositories; +import org.springframework.data.couchbase.repository.query.CouchbaseQueryMethod; +import org.springframework.data.couchbase.repository.query.CouchbaseRepositoryQuery; import org.springframework.data.couchbase.util.Capabilities; import org.springframework.data.couchbase.util.ClusterAwareIntegrationTests; import org.springframework.data.couchbase.util.ClusterType; @@ -56,6 +60,8 @@ import org.springframework.data.couchbase.util.IgnoreWhen; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.data.projection.SpelAwareProxyProjectionFactory; +import org.springframework.data.repository.core.support.DefaultRepositoryMetadata; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import com.couchbase.client.core.error.IndexExistsException; @@ -77,6 +83,8 @@ public class CouchbaseRepositoryQueryIntegrationTests extends ClusterAwareIntegr @Autowired UserRepository userRepository; + @Autowired CouchbaseTemplate couchbaseTemplate; + @BeforeEach public void beforeEach() { try { @@ -287,6 +295,39 @@ public class CouchbaseRepositoryQueryIntegrationTests extends ClusterAwareIntegr } } + @Test // DATACOUCH-650 + void deleteAllById() { + + Airport vienna = new Airport("airports::vie", "vie", "LOWW"); + Airport frankfurt = new Airport("airports::fra", "fra", "EDDF"); + Airport losAngeles = new Airport("airports::lax", "lax", "KLAX"); + + try { + airportRepository.saveAll(asList(vienna, frankfurt, losAngeles)); + + airportRepository.deleteAllById(asList(vienna.getId(), losAngeles.getId())); + + assertThat(airportRepository.findAll()).containsExactly(frankfurt); + } finally { + airportRepository.deleteAll(); + } + } + + @Test + void couchbaseRepositoryQuery() throws Exception { + User user = new User("1", "Dave", "Wilson"); + userRepository.save(user); + String input = "findByFirstname"; + Method method = UserRepository.class.getMethod(input, String.class); + CouchbaseQueryMethod queryMethod = new CouchbaseQueryMethod(method, + new DefaultRepositoryMetadata(UserRepository.class), new SpelAwareProxyProjectionFactory(), + couchbaseTemplate.getConverter().getMappingContext()); + + CouchbaseRepositoryQuery query = new CouchbaseRepositoryQuery(couchbaseTemplate, queryMethod, null); + List users = (List)query.execute(new String[] { "Dave" }); + assertEquals(user, users.get(0)); + } + private void sleep(int millis) { try { Thread.sleep(millis); // so they are executed out-of-order