From dd06973f50eef3eb67602fefe6bc773615c9f3a7 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 6 Jul 2011 19:49:11 +0200 Subject: [PATCH] =?UTF-8?q?DATADOC-190=20-=20SimpleMongoRepository.exists(?= =?UTF-8?q?=E2=80=A6)=20now=20works=20for=20entities=20with=20non-ObjectId?= =?UTF-8?q?=20id=20type.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changed the implementation of the exists(…) method to make sure the query is handed to the QueryMapper to convert the id appropriately before executing the query. --- .../mongodb/repository/SimpleMongoRepository.java | 14 ++------------ .../AbstractPersonRepositoryIntegrationTests.java | 8 ++++++++ .../data/document/mongodb/repository/Contact.java | 6 +++--- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/SimpleMongoRepository.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/SimpleMongoRepository.java index c7be76469..d61e9dc4f 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/SimpleMongoRepository.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/SimpleMongoRepository.java @@ -22,8 +22,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import org.springframework.dao.DataAccessException; -import org.springframework.data.document.mongodb.CollectionCallback; import org.springframework.data.document.mongodb.MongoOperations; import org.springframework.data.document.mongodb.MongoTemplate; import org.springframework.data.document.mongodb.query.Criteria; @@ -35,10 +33,6 @@ import org.springframework.data.domain.Sort; import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.util.Assert; -import com.mongodb.BasicDBObject; -import com.mongodb.DBCollection; -import com.mongodb.MongoException; - /** * Repository base implementation for Mongo. * @@ -121,12 +115,8 @@ public class SimpleMongoRepository implements Paging */ public boolean exists(final ID id) { - return template.execute(entityInformation.getCollectionName(), new CollectionCallback() { - - public Boolean doInCollection(DBCollection collection) throws MongoException, DataAccessException { - return collection.count(new BasicDBObject("_id", id)) > 0; - } - }); + return template.findOne(new Query(Criteria.where("_id").is(id)), Object.class, + entityInformation.getCollectionName()) != null; } /* diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java index 2d4f6dac8..0d67b908a 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java @@ -259,4 +259,12 @@ public abstract class AbstractPersonRepositoryIntegrationTests { assertThat(result.size(), is(1)); assertThat(result, hasItem(dave)); } + + /** + * @see DATADOC-190 + */ + @Test + public void existsWorksCorrectly() { + assertThat(repository.exists(dave.getId()), is(true)); + } } \ No newline at end of file diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/Contact.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/Contact.java index 5d0d58099..287935358 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/Contact.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/Contact.java @@ -28,13 +28,13 @@ import org.springframework.data.document.mongodb.mapping.Document; abstract class Contact { @Id - protected final ObjectId id; + protected final String id; public Contact() { - this.id = new ObjectId(); + this.id = new ObjectId().toString(); } - public ObjectId getId() { + public String getId() { return id; } }