From 3fdd43bef851ed0adcb015eb9ac5c53acb5782e1 Mon Sep 17 00:00:00 2001 From: Jon Brisbin Date: Mon, 4 Apr 2011 15:14:42 -0500 Subject: [PATCH] DATADOC-78: Added code to MongoTemplate to check for overriden collection name when saving an entity without specifying a collection. Removed SLF4J from source code and reverted to commons-logging API for internal logging. --- spring-data-couchdb/pom.xml | 39 ----------- spring-data-document-core/pom.xml | 57 ---------------- spring-data-document-parent/pom.xml | 7 +- .../document/persistence/test/Resume.java | 1 - spring-data-mongodb/pom.xml | 39 ----------- .../data/document/mongodb/MongoTemplate.java | 65 ++++++++++++++++--- .../mapping/MongoPersistentEntity.java | 16 +++-- .../MongoPersistentEntityIndexCreator.java | 6 +- .../event/AbstractMappingEventListener.java | 6 +- .../mongodb/repository/MongoQueryCreator.java | 6 +- .../MongoRepositoryFactoryBean.java | 37 +++++------ .../repository/StringBasedMongoQuery.java | 10 +-- .../document/mongodb/mapping/Location.java | 2 +- .../mapping/MappingEventsListener.java | 6 +- .../mongodb/mapping/MappingTests.java | 25 +++++-- spring-data-mongodb/template.mf | 1 - 16 files changed, 124 insertions(+), 199 deletions(-) diff --git a/spring-data-couchdb/pom.xml b/spring-data-couchdb/pom.xml index 48d8a4edd..d80608c5e 100644 --- a/spring-data-couchdb/pom.xml +++ b/spring-data-couchdb/pom.xml @@ -82,45 +82,6 @@ 1.6.1 - - - org.slf4j - slf4j-api - - - org.slf4j - jcl-over-slf4j - compile - - - org.slf4j - slf4j-log4j12 - runtime - - - log4j - log4j - - - javax.mail - mail - - - javax.jms - jms - - - com.sun.jdmk - jmxtools - - - com.sun.jmx - jmxri - - - runtime - - javax.annotation jsr250-api diff --git a/spring-data-document-core/pom.xml b/spring-data-document-core/pom.xml index a07b9b599..53724ff82 100644 --- a/spring-data-document-core/pom.xml +++ b/spring-data-document-core/pom.xml @@ -26,45 +26,6 @@ spring-web - - - org.slf4j - slf4j-api - - - org.slf4j - jcl-over-slf4j - compile - - - org.slf4j - slf4j-log4j12 - runtime - - - log4j - log4j - - - javax.mail - mail - - - javax.jms - jms - - - com.sun.jdmk - jmxtools - - - com.sun.jmx - jmxri - - - runtime - - javax.annotation jsr250-api @@ -95,34 +56,16 @@ org.springframework spring-core ${org.springframework.version} - - - commons-logging - commons-logging - - org.springframework spring-web ${org.springframework.version} - - - commons-logging - commons-logging - - org.springframework spring-webmvc ${org.springframework.version} - - - commons-logging - commons-logging - - diff --git a/spring-data-document-parent/pom.xml b/spring-data-document-parent/pom.xml index 39dccaa96..c1eeae7ec 100644 --- a/spring-data-document-parent/pom.xml +++ b/spring-data-document-parent/pom.xml @@ -103,12 +103,6 @@ org.springframework spring-core ${org.springframework.version} - - - commons-logging - commons-logging - - org.springframework @@ -169,6 +163,7 @@ org.slf4j slf4j-api ${org.slf4j.version} + runtime org.slf4j diff --git a/spring-data-mongodb-cross-store/src/test/java/org/springframework/data/document/persistence/test/Resume.java b/spring-data-mongodb-cross-store/src/test/java/org/springframework/data/document/persistence/test/Resume.java index 85ad9ac95..9a889e63e 100644 --- a/spring-data-mongodb-cross-store/src/test/java/org/springframework/data/document/persistence/test/Resume.java +++ b/spring-data-mongodb-cross-store/src/test/java/org/springframework/data/document/persistence/test/Resume.java @@ -2,7 +2,6 @@ package org.springframework.data.document.persistence.test; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.springframework.data.persistence.document.mongo.MongoDocumentBacking; //@DocumentEntity public class Resume { diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index f2ad6ff58..06a373655 100644 --- a/spring-data-mongodb/pom.xml +++ b/spring-data-mongodb/pom.xml @@ -62,45 +62,6 @@ - - - org.slf4j - slf4j-api - - - org.slf4j - jcl-over-slf4j - compile - - - org.slf4j - slf4j-log4j12 - runtime - - - log4j - log4j - - - javax.mail - mail - - - javax.jms - jms - - - com.sun.jdmk - jmxtools - - - com.sun.jmx - jmxri - - - runtime - - com.mysema.querydsl querydsl-mongodb 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 3d0a58780..fedaee693 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 @@ -57,6 +57,8 @@ import org.springframework.data.document.mongodb.convert.MappingMongoConverter; import org.springframework.data.document.mongodb.convert.MongoConverter; import org.springframework.data.document.mongodb.convert.SimpleMongoConverter; import org.springframework.data.document.mongodb.index.IndexDefinition; +import org.springframework.data.document.mongodb.mapping.Document; +import org.springframework.data.document.mongodb.mapping.MongoPersistentEntity; import org.springframework.data.document.mongodb.mapping.event.AfterConvertEvent; import org.springframework.data.document.mongodb.mapping.event.AfterLoadEvent; import org.springframework.data.document.mongodb.mapping.event.AfterSaveEvent; @@ -65,6 +67,7 @@ import org.springframework.data.document.mongodb.mapping.event.BeforeSaveEvent; import org.springframework.data.document.mongodb.mapping.event.MongoMappingEvent; import org.springframework.data.document.mongodb.query.Query; import org.springframework.data.document.mongodb.query.Update; +import org.springframework.data.mapping.model.MappingContext; import org.springframework.jca.cci.core.ConnectionCallback; import org.springframework.util.Assert; @@ -505,11 +508,19 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica // Find methods that take a Query to express the query and that return a List of objects. public List find(Query query, Class targetClass) { - return find(getDefaultCollectionName(), query, targetClass); + String collName = getEntityCollection(targetClass); + if (null == collName) { + collName = getRequiredDefaultCollectionName(); + } + return find(collName, query, targetClass); } public List find(Query query, Class targetClass, MongoReader reader) { - return find(getDefaultCollectionName(), query, targetClass, reader); + String collName = getEntityCollection(targetClass); + if (null == collName) { + collName = getRequiredDefaultCollectionName(); + } + return find(collName, query, targetClass, reader); } public List find(String collectionName, final Query query, Class targetClass) { @@ -556,17 +567,17 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica } public T findAndRemove(Query query, Class targetClass, - MongoReader reader) { + MongoReader reader) { return findAndRemove(getDefaultCollectionName(), query, targetClass, reader); } public T findAndRemove(String collectionName, Query query, - Class targetClass) { + Class targetClass) { return findAndRemove(collectionName, query, targetClass, null); } public T findAndRemove(String collectionName, Query query, - Class targetClass, MongoReader reader) { + Class targetClass, MongoReader reader) { return doFindAndRemove(collectionName, query.getQueryObject(), query.getFieldsObject(), query.getSortObject(), targetClass, reader); } @@ -574,7 +585,11 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica * @see org.springframework.data.document.mongodb.MongoOperations#insert(java.lang.Object) */ public void insert(Object objectToSave) { - insert(getRequiredDefaultCollectionName(), objectToSave); + String collName = getEntityCollection(objectToSave); + if (null == collName) { + collName = getRequiredDefaultCollectionName(); + } + insert(collName, objectToSave); } /* (non-Javadoc) @@ -588,7 +603,11 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica * @see org.springframework.data.document.mongodb.MongoOperations#insert(T, org.springframework.data.document.mongodb.MongoWriter) */ public void insert(T objectToSave, MongoWriter writer) { - insert(getDefaultCollectionName(), objectToSave, writer); + String collName = getEntityCollection(objectToSave); + if (null == collName) { + collName = getDefaultCollectionName(); + } + insert(collName, objectToSave, writer); } /* (non-Javadoc) @@ -1084,6 +1103,36 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica return name; } + private String getEntityCollection(Object obj) { + if (null != obj) { + return getEntityCollection(obj.getClass()); + } + + return null; + } + + private String getEntityCollection(Class clazz) { + if (mongoConverter instanceof MappingMongoConverter) { + MappingContext ctx = ((MappingMongoConverter) mongoConverter).getMappingContext(); + MongoPersistentEntity entity = (MongoPersistentEntity) ctx.getPersistentEntity(clazz); + if (null != entity) { + return entity.getCollection(); + } + } + // Entity hasn't yet been added, try and figure it out anyway + if (clazz.isAnnotationPresent(Document.class)) { + Document doc = clazz.getAnnotation(Document.class); + if (!"".equals(doc.collection())) { + return doc.collection(); + } + + // Default to simple name + return clazz.getSimpleName().toLowerCase(); + } + + return null; + } + /** * Checks and handles any errors. *

@@ -1240,7 +1289,7 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica } public DBObject doInCollection(DBCollection collection) throws MongoException, DataAccessException { - return collection.findAndModify(query, fields, sort, true, null, false, false); + return collection.findAndModify(query, fields, sort, true, null, false, false); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoPersistentEntity.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoPersistentEntity.java index 8fa4e27c0..7b4795894 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoPersistentEntity.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoPersistentEntity.java @@ -24,7 +24,7 @@ import org.springframework.data.util.TypeInformation; /** * Mongo specific {@link PersistentEntity} implementation that adds Mongo specific meta-data such as the collection name * and the like. - * + * * @author Jon Brisbin * @author Oliver Gierke */ @@ -35,25 +35,31 @@ public class MongoPersistentEntity extends BasicPersistentEntity { /** * Creates a new {@link MongoPersistentEntity} with the given {@link MappingContext} and {@link TypeInformation}. Will * default the collection name to the entities simple type name. - * + * * @param mappingContext * @param typeInformation */ public MongoPersistentEntity(MappingContext mappingContext, TypeInformation typeInformation) { super(mappingContext, typeInformation); - this.collection = typeInformation.getType().getSimpleName(); + this.collection = typeInformation.getType().getSimpleName().toLowerCase(); + if (typeInformation.getType().isAnnotationPresent(Document.class)) { + Document d = typeInformation.getType().getAnnotation(Document.class); + if (!"".equals(d.collection())) { + this.collection = d.collection(); + } + } } /** * Returns the collection the entity should be stored in. - * + * * @return */ public String getCollection() { return collection; } - + public void setCollection(String collection) { this.collection = collection; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoPersistentEntityIndexCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoPersistentEntityIndexCreator.java index a8ba4c84b..2db9279b5 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoPersistentEntityIndexCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoPersistentEntityIndexCreator.java @@ -26,8 +26,8 @@ import com.mongodb.DBCollection; import com.mongodb.DBObject; import com.mongodb.MongoException; import com.mongodb.util.JSON; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.context.ApplicationListener; import org.springframework.dao.DataAccessException; import org.springframework.data.document.mongodb.CollectionCallback; @@ -50,7 +50,7 @@ import org.springframework.util.Assert; */ public class MongoPersistentEntityIndexCreator implements ApplicationListener { - private static final Logger log = LoggerFactory.getLogger(MongoPersistentEntityIndexCreator.class); + private static final Log log = LogFactory.getLog(MongoPersistentEntityIndexCreator.class); private Set> classesSeen = Collections.newSetFromMap(new ConcurrentHashMap, Boolean>()); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/AbstractMappingEventListener.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/AbstractMappingEventListener.java index 7b4a9be19..f2015f3e3 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/AbstractMappingEventListener.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/AbstractMappingEventListener.java @@ -17,8 +17,8 @@ package org.springframework.data.document.mongodb.mapping.event; import com.mongodb.DBObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; @@ -27,7 +27,7 @@ import org.springframework.context.ApplicationListener; */ public abstract class AbstractMappingEventListener implements ApplicationListener { - protected final Logger log = LoggerFactory.getLogger(getClass()); + protected final Log log = LogFactory.getLog(getClass()); @SuppressWarnings({"unchecked"}) public void onApplicationEvent(T appEvent) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoQueryCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoQueryCreator.java index 55ccaef8f..23fbbac74 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoQueryCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoQueryCreator.java @@ -21,8 +21,8 @@ import java.util.Collection; import java.util.Iterator; import java.util.regex.Pattern; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.data.document.mongodb.query.Criteria; import org.springframework.data.document.mongodb.query.CriteriaDefinition; import org.springframework.data.document.mongodb.query.Query; @@ -42,7 +42,7 @@ import org.springframework.data.repository.query.parser.PartTree; */ class MongoQueryCreator extends AbstractQueryCreator { - private static final Logger LOG = LoggerFactory.getLogger(MongoQueryCreator.class); + private static final Log LOG = LogFactory.getLog(MongoQueryCreator.class); /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoRepositoryFactoryBean.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoRepositoryFactoryBean.java index 5545db9f6..bf7a1688b 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoRepositoryFactoryBean.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoRepositoryFactoryBean.java @@ -18,8 +18,8 @@ package org.springframework.data.document.mongodb.repository; import java.io.Serializable; import java.lang.reflect.Method; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.data.document.mongodb.MongoOperations; import org.springframework.data.document.mongodb.MongoPropertyDescriptors.MongoPropertyDescriptor; import org.springframework.data.document.mongodb.MongoTemplate; @@ -43,7 +43,7 @@ import org.springframework.util.StringUtils; /** * {@link org.springframework.beans.factory.FactoryBean} to create {@link MongoRepository} instances. - * + * * @author Oliver Gierke */ public class MongoRepositoryFactoryBean, S, ID extends Serializable> extends @@ -54,18 +54,17 @@ public class MongoRepositoryFactoryBean, S, ID /** * Configures the {@link MongoTemplate} to be used. - * - * @param template - * the template to set + * + * @param template the template to set */ public void setTemplate(MongoTemplate template) { this.template = template; } - + /** * Sets the {@link MappingContext} used with the underlying {@link MongoTemplate}. - * + * * @param mappingContext the mappingContext to set */ public void setMappingContext(MappingContext mappingContext) { @@ -103,7 +102,7 @@ public class MongoRepositoryFactoryBean, S, ID /** * Repository to create {@link MongoRepository} instances. - * + * * @author Oliver Gierke */ public static class MongoRepositoryFactory extends RepositoryFactorySupport { @@ -116,8 +115,8 @@ public class MongoRepositoryFactoryBean, S, ID /** * Creates a new {@link MongoRepositoryFactory} with the given {@link MongoTemplate} and {@link MappingContext}. - * - * @param template must not be {@literal null} + * + * @param template must not be {@literal null} * @param mappingContext */ public MongoRepositoryFactory(MongoTemplate template, MappingContext mappingContext) { @@ -149,7 +148,7 @@ public class MongoRepositoryFactoryBean, S, ID * (org.springframework.data.repository.support.RepositoryMetadata) */ @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) + @SuppressWarnings({"rawtypes", "unchecked"}) protected Object getTargetRepository(RepositoryMetadata metadata) { Class repositoryInterface = metadata.getRepositoryInterface(); @@ -183,7 +182,7 @@ public class MongoRepositoryFactoryBean, S, ID /** * {@link QueryLookupStrategy} to create {@link PartTreeMongoQuery} instances. - * + * * @author Oliver Gierke */ private class MongoQueryLookupStrategy implements QueryLookupStrategy { @@ -239,16 +238,16 @@ public class MongoRepositoryFactoryBean, S, ID return entityInformationCreator.getEntityInformation(domainClass); } } - + /** * Simple wrapper to to create {@link MongoEntityInformation} instances based on a {@link MappingContext}. * * @author Oliver Gierke */ static class EntityInformationCreator { - + private final MappingContext mappingContext; - + public EntityInformationCreator(MappingContext mappingContext) { this.mappingContext = mappingContext; } @@ -257,7 +256,7 @@ public class MongoRepositoryFactoryBean, S, ID if (null == mappingContext) { return new SimpleMongoEntityInformation(domainClass); } - + PersistentEntity persistentEntity = mappingContext.getPersistentEntity(domainClass); if (persistentEntity == null) { persistentEntity = mappingContext.addPersistentEntity(domainClass); @@ -269,12 +268,12 @@ public class MongoRepositoryFactoryBean, S, ID /** * {@link QueryCreationListener} inspecting {@link PartTreeMongoQuery}s and creating an index for the properties it * refers to. - * + * * @author Oliver Gierke */ private static class IndexEnsuringQueryCreationListener implements QueryCreationListener { - private static final Logger LOG = LoggerFactory.getLogger(IndexEnsuringQueryCreationListener.class); + private static final Log LOG = LogFactory.getLog(IndexEnsuringQueryCreationListener.class); private final MongoOperations operations; public IndexEnsuringQueryCreationListener(MongoOperations operations) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/StringBasedMongoQuery.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/StringBasedMongoQuery.java index b50977e3b..e824ad4e9 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/StringBasedMongoQuery.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/StringBasedMongoQuery.java @@ -18,9 +18,9 @@ package org.springframework.data.document.mongodb.repository; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.bson.types.ObjectId; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.data.document.mongodb.MongoTemplate; import org.springframework.data.document.mongodb.query.BasicQuery; import org.springframework.data.document.mongodb.query.Query; @@ -33,7 +33,7 @@ import org.springframework.data.document.mongodb.query.Query; public class StringBasedMongoQuery extends AbstractMongoQuery { private static final Pattern PLACEHOLDER = Pattern.compile("\\?(\\d+)"); - private static final Logger LOG = LoggerFactory.getLogger(StringBasedMongoQuery.class); + private static final Log LOG = LogFactory.getLog(StringBasedMongoQuery.class); private final String query; private final String fieldSpec; @@ -71,7 +71,9 @@ public class StringBasedMongoQuery extends AbstractMongoQuery { query = new BasicQuery(queryString); } - LOG.debug("Created query {}", query.getQueryObject()); + if (LOG.isDebugEnabled()) { + LOG.debug(String.format("Created query {}", query.getQueryObject())); + } return query; } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/Location.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/Location.java index 6949b9c54..cf71d9575 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/Location.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/Location.java @@ -21,7 +21,7 @@ import org.bson.types.ObjectId; /** * @author Jon Brisbin */ -@Document +@Document(collection = "places") public class Location { private ObjectId id; diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/MappingEventsListener.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/MappingEventsListener.java index 426fffa6a..6e9346cb2 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/MappingEventsListener.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/MappingEventsListener.java @@ -17,8 +17,8 @@ package org.springframework.data.document.mongodb.mapping; import com.mongodb.DBObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.data.document.mongodb.mapping.event.AbstractMappingEventListener; /** @@ -26,7 +26,7 @@ import org.springframework.data.document.mongodb.mapping.event.AbstractMappingEv */ public class MappingEventsListener extends AbstractMappingEventListener { - private Logger log = LoggerFactory.getLogger(getClass()); + private Log log = LogFactory.getLog(getClass()); @Override public void onBeforeConvert(Object source) { diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/MappingTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/MappingTests.java index 783b705a9..a2d9841af 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/MappingTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/MappingTests.java @@ -24,11 +24,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import com.mongodb.DB; import com.mongodb.Mongo; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.junit.Before; import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.data.document.mongodb.MongoDbUtils; @@ -41,7 +42,8 @@ import org.springframework.data.document.mongodb.query.Query; */ public class MappingTests { - private static final Logger LOGGER = LoggerFactory.getLogger(MongoDbUtils.class); + private static final Log LOGGER = LogFactory.getLog(MongoDbUtils.class); + private final String[] collectionsToDrop = new String[]{"person", "personmapproperty", "personpojo", "personcustomidname", "account"}; ApplicationContext applicationContext; MongoTemplate template; @@ -50,7 +52,10 @@ public class MappingTests { @Before public void setUp() throws Exception { Mongo mongo = new Mongo(); - mongo.getDB("database").getCollection("person").drop(); + DB db = mongo.getDB("database"); + for (String coll : collectionsToDrop) { + db.getCollection(coll).drop(); + } applicationContext = new ClassPathXmlApplicationContext("/mapping.xml"); template = applicationContext.getBean(MongoTemplate.class); mappingContext = applicationContext.getBean(MongoMappingContext.class); @@ -58,6 +63,9 @@ public class MappingTests { @Test public void testPersonPojo() throws Exception { + // POJOs aren't auto-detected, have to add manually + mappingContext.addPersistentEntity(PersonPojo.class); + LOGGER.info("about to create new personpojo"); PersonPojo p = new PersonPojo(12345, "Person", "Pojo"); LOGGER.info("about to insert"); @@ -73,6 +81,9 @@ public class MappingTests { @Test public void testPersonWithCustomIdName() { + // POJOs aren't auto-detected, have to add manually + mappingContext.addPersistentEntity(PersonCustomIdName.class); + PersonCustomIdName p = new PersonCustomIdName(123456, "Custom", "Id"); template.insert(p); @@ -163,15 +174,15 @@ public class MappingTests { } @Test - public void testPrimitives() { + public void testPrimitivesAndCustomCollectionName() { Location loc = new Location( new double[]{1.0, 2.0}, new int[]{1, 2, 3, 4}, new float[]{1.0f, 2.0f} ); - template.insert("locations", loc); + template.insert(loc); - List result = template.find("locations", new Query(Criteria.where("_id").is(loc.getId())), Location.class); + List result = template.find("places", new Query(Criteria.where("_id").is(loc.getId())), Location.class); assertThat(result.size(), is(1)); } diff --git a/spring-data-mongodb/template.mf b/spring-data-mongodb/template.mf index 49520cb21..27577ee7e 100644 --- a/spring-data-mongodb/template.mf +++ b/spring-data-mongodb/template.mf @@ -33,5 +33,4 @@ Import-Template: org.apache.commons.collections15.*;version="[4.0.0,5.0.0)", org.apache.commons.logging.*;version="[1.1.1, 2.0.0)", org.bson.*;version="0", - org.slf4j.*;version="[1.5.0,1.6.0)", org.w3c.dom.*;version="0"