diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/MongoDbUtils.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/MongoDbUtils.java index 0a2e89859..0e0c9d31b 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/MongoDbUtils.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/MongoDbUtils.java @@ -90,7 +90,7 @@ public abstract class MongoDbUtils { } } - LOGGER.debug("Opening Mongo DB"); + LOGGER.trace("Getting Mongo Database name=["+databaseName+"]"); DB db = mongo.getDB(databaseName); boolean credentialsGiven = username != null && password != null; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/MongoTemplate.java index aa00074ae..684523d3f 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/MongoTemplate.java @@ -668,7 +668,7 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica * @see org.springframework.data.document.mongodb.MongoOperations#save(java.lang.Object) */ public void save(Object objectToSave) { - save(getRequiredDefaultCollectionName(), objectToSave); + save(getEntityCollection(objectToSave), objectToSave); } /* (non-Javadoc) @@ -1104,6 +1104,10 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica private String getEntityCollection(Class clazz) { if (null != mappingContext) { PersistentEntity entity = mappingContext.getPersistentEntity(clazz); + if (entity == null) { + mappingContext.addPersistentEntity(clazz); + entity = mappingContext.getPersistentEntity(clazz); + } if (null != entity && entity instanceof MongoPersistentEntity) { return ((MongoPersistentEntity) entity).getCollection(); } @@ -1321,5 +1325,9 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica public void setWriteResultChecking(WriteResultChecking resultChecking) { this.writeResultChecking = resultChecking; } + + public void setWriteConcern(WriteConcern writeConcern) { + this.writeConcern = writeConcern; + } } diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/document/mongodb/config/spring-mongo-1.0.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/document/mongodb/config/spring-mongo-1.0.xsd index 6f706247b..f2cf68774 100644 --- a/spring-data-mongodb/src/main/resources/org/springframework/data/document/mongodb/config/spring-mongo-1.0.xsd +++ b/spring-data-mongodb/src/main/resources/org/springframework/data/document/mongodb/config/spring-mongo-1.0.xsd @@ -120,13 +120,6 @@ The base package in which to scan for entities annotated with @Document ]]> - - - - - diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/GeoSpatialTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/GeoSpatialTests.java index 87ab20856..642651a9b 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/GeoSpatialTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/GeoSpatialTests.java @@ -21,6 +21,8 @@ import static org.junit.Assert.assertThat; import java.util.List; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; @@ -42,15 +44,15 @@ import com.mongodb.DBCollection; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoException; +import com.mongodb.WriteConcern; /** * Modified from https://github.com/deftlabs/mongo-java-geospatial-example * @author Mark Pollack * */ -//@RunWith(SpringJUnit4ClassRunner.class) -//@ContextConfiguration("classpath:geospatial.xml") public class GeoSpatialTests { + private static final Log LOGGER = LogFactory.getLog(GeoSpatialTests.class); private final String[] collectionsToDrop = new String[]{"newyork"}; ApplicationContext applicationContext; @@ -65,12 +67,14 @@ public class GeoSpatialTests { } applicationContext = new ClassPathXmlApplicationContext("/geospatial.xml"); template = applicationContext.getBean(MongoTemplate.class); - //template.dropCollection(template.getDefaultCollectionName()); + template.setWriteConcern(WriteConcern.FSYNC_SAFE); template.ensureIndex(new GeospatialIndex("location")); + indexCreated(); addVenues(); } private void addVenues() { + template.insert(new Venue("Penn Station", -73.99408, 40.75057)); template.insert(new Venue("10gen Office", -73.99171, 40.738868)); template.insert(new Venue("Flatiron Building", -73.988135, 40.741404)); @@ -102,15 +106,18 @@ public class GeoSpatialTests { } @Test - public void indexCreated() { + public void searchAllData() { assertThat(template, notNullValue()); Venue foundVenue = template.findOne( new Query(Criteria.where("name").is("Penn Station")), Venue.class); assertThat(foundVenue, notNullValue()); List venues = template.getCollection(Venue.class); assertThat(venues.size(), equalTo(13)); - + } + + public void indexCreated() { List indexInfo = getIndexInfo(); + LOGGER.debug(indexInfo); assertThat(indexInfo.size(), equalTo(2)); assertThat(indexInfo.get(1).get("name").toString(), equalTo("location_2d")); assertThat(indexInfo.get(1).get("ns").toString(), diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/Venue.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/Venue.java index c27c7c2cf..72a51137c 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/Venue.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/Venue.java @@ -17,12 +17,14 @@ package org.springframework.data.document.mongodb; import java.util.Arrays; +import org.springframework.data.annotation.Id; import org.springframework.data.annotation.PersistenceConstructor; import org.springframework.data.document.mongodb.mapping.Document; -@Document +@Document(collection="newyork") public class Venue { + @Id private String id; private String name; private Double[] location; @@ -47,6 +49,14 @@ public class Venue { public Double[] getLocation() { return location; } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } @Override public String toString() { diff --git a/spring-data-mongodb/src/test/resources/geospatial.xml b/spring-data-mongodb/src/test/resources/geospatial.xml index 4c828e2cb..6e0f70e77 100644 --- a/spring-data-mongodb/src/test/resources/geospatial.xml +++ b/spring-data-mongodb/src/test/resources/geospatial.xml @@ -6,8 +6,7 @@ http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd"> - + diff --git a/spring-data-mongodb/src/test/resources/mapping.xml b/spring-data-mongodb/src/test/resources/mapping.xml index 99dc0ed8f..57b8c9848 100644 --- a/spring-data-mongodb/src/test/resources/mapping.xml +++ b/spring-data-mongodb/src/test/resources/mapping.xml @@ -6,8 +6,7 @@ http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd"> - +