From b91ec53ae057e0067b0b1e823874f5666e0abe6f Mon Sep 17 00:00:00 2001 From: Thomas Darimont Date: Fri, 23 Jan 2015 10:52:45 +0100 Subject: [PATCH] =?UTF-8?q?DATAMONGO-1146=20-=20Added=20QueryDslMongoRepos?= =?UTF-8?q?itory.exists(=E2=80=A6)=20which=20accepts=20a=20Querydsl=20pred?= =?UTF-8?q?icate.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added explicit test case for QueryDslMongoRepository. Related tickets: DATACMNS-636. Original pull request: #270. --- .../support/QueryDslMongoRepository.java | 10 ++- ...eryDslMongoRepositoryIntegrationTests.java | 80 +++++++++++++++++++ 2 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepositoryIntegrationTests.java diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepository.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepository.java index 9aaddd2db..9d4f7bbe4 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepository.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2011-2014 the original author or authors. + * Copyright 2011-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -161,6 +161,14 @@ public class QueryDslMongoRepository extends SimpleM return createQueryFor(predicate).count(); } + /* + * (non-Javadoc) + * @see org.springframework.data.querydsl.QueryDslPredicateExecutor#exists(com.mysema.query.types.Predicate) + */ + public boolean exists(Predicate predicate) { + return createQueryFor(predicate).exists(); + } + /** * Creates a {@link MongodbQuery} for the given {@link Predicate}. * diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepositoryIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepositoryIntegrationTests.java new file mode 100644 index 000000000..3809fbb41 --- /dev/null +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepositoryIntegrationTests.java @@ -0,0 +1,80 @@ +/* + * Copyright 2015 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.data.mongodb.repository.support; + +import static org.hamcrest.Matchers.*; +import static org.junit.Assert.*; + +import java.util.Arrays; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoOperations; +import org.springframework.data.mongodb.repository.Person; +import org.springframework.data.mongodb.repository.QPerson; +import org.springframework.data.mongodb.repository.query.MongoEntityInformation; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.mysema.query.types.Predicate; + +/** + * Integration test for {@link QueryDslMongoRepository}. + * + * @author Thomas Darimont + */ +@ContextConfiguration( + locations = "/org/springframework/data/mongodb/repository/PersonRepositoryIntegrationTests-context.xml") +@RunWith(SpringJUnit4ClassRunner.class) +public class QueryDslMongoRepositoryIntegrationTests { + + @Autowired MongoOperations operations; + QueryDslMongoRepository repository; + + Person dave, oliver, carter; + QPerson person; + + @Before + public void setup() { + + MongoRepositoryFactory factory = new MongoRepositoryFactory(operations); + MongoEntityInformation entityInformation = factory.getEntityInformation(Person.class); + repository = new QueryDslMongoRepository(entityInformation, operations); + + operations.dropCollection(Person.class); + + dave = new Person("Dave", "Matthews", 42); + oliver = new Person("Oliver August", "Matthews", 4); + carter = new Person("Carter", "Beauford", 49); + + person = new QPerson("person"); + + repository.save(Arrays.asList(oliver, dave, carter)); + } + + /** + * @see DATAMONGO-1146 + */ + @Test + public void shouldSupportExistsWithPredicate() throws Exception { + + assertThat(repository.exists(person.firstname.eq("Dave")), is(true)); + assertThat(repository.exists(person.firstname.eq("Unknown")), is(false)); + assertThat(repository.exists((Predicate) null), is(true)); + } +}