From 7e5378bf6001c6a7ad58d3ab1f7329852bc97bd4 Mon Sep 17 00:00:00 2001 From: "J. Brisbin" Date: Tue, 29 Mar 2011 15:05:14 -0500 Subject: [PATCH] Added events, changed tests so that application context is created before each run so that indexing is done correctly. --- .../data/document/mongodb/MongoTemplate.java | 61 ++++++++++++++----- .../mongodb/event/CollectionCreatedEvent.java | 43 ------------- .../event/AbstractMappingEventListener.java | 61 +++++++++++++++++++ .../event/AfterConvertEvent.java} | 16 ++--- .../mongodb/mapping/event/AfterLoadEvent.java | 29 +++++++++ .../event/AfterSaveEvent.java} | 22 ++----- .../event/BeforeConvertEvent.java} | 15 +++-- .../event/BeforeSaveEvent.java} | 21 ++----- .../mapping/event/MongoMappingEvent.java | 25 +++----- ...stener.java => MappingEventsListener.java} | 37 +++++++---- .../mongodb/mapping/MappingTests.java | 23 ++++--- .../src/test/resources/mapping.xml | 2 + 12 files changed, 211 insertions(+), 144 deletions(-) delete mode 100644 spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/event/CollectionCreatedEvent.java create mode 100644 spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/AbstractMappingEventListener.java rename spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/{event/WriteResultEvent.java => mapping/event/AfterConvertEvent.java} (62%) create mode 100644 spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/AfterLoadEvent.java rename spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/{event/InsertEvent.java => mapping/event/AfterSaveEvent.java} (58%) rename spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/{event/EventType.java => mapping/event/BeforeConvertEvent.java} (72%) rename spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/{event/SaveEvent.java => mapping/event/BeforeSaveEvent.java} (58%) rename spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/{InsertEventListener.java => MappingEventsListener.java} (51%) 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 dac1b8eff..ec4c60756 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 @@ -47,6 +47,8 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationEvent; +import org.springframework.context.ApplicationEventPublisher; +import org.springframework.context.ApplicationEventPublisherAware; import org.springframework.core.convert.ConversionFailedException; import org.springframework.dao.DataAccessException; import org.springframework.dao.DataIntegrityViolationException; @@ -54,9 +56,12 @@ import org.springframework.data.document.mongodb.MongoPropertyDescriptors.MongoP 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.event.CollectionCreatedEvent; -import org.springframework.data.document.mongodb.event.InsertEvent; -import org.springframework.data.document.mongodb.event.SaveEvent; +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; +import org.springframework.data.document.mongodb.mapping.event.BeforeConvertEvent; +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.IndexDefinition; import org.springframework.data.document.mongodb.query.Query; import org.springframework.data.document.mongodb.query.Update; @@ -71,7 +76,7 @@ import org.springframework.util.Assert; * @author Mark Pollack * @author Oliver Gierke */ -public class MongoTemplate implements InitializingBean, MongoOperations, ApplicationContextAware { +public class MongoTemplate implements InitializingBean, MongoOperations, ApplicationContextAware, ApplicationEventPublisherAware { private static final Log LOGGER = LogFactory.getLog(MongoTemplate.class); @@ -98,6 +103,7 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica private String username; private String password; private ApplicationContext applicationContext; + private ApplicationEventPublisher eventPublisher; private ExecutorService eventPublishers = Executors.newCachedThreadPool(); private LinkedBlockingQueue eventQueue = new LinkedBlockingQueue(); @@ -189,6 +195,10 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica this.applicationContext = applicationContext; } + public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) { + this.eventPublisher = applicationEventPublisher; + } + /** * Sets the username to use to connect to the Mongo database * @@ -564,12 +574,15 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica */ public void insert(String collectionName, T objectToSave, MongoWriter writer) { BasicDBObject dbDoc = new BasicDBObject(); + + maybeEmitEvent(new BeforeConvertEvent(objectToSave)); writer.write(objectToSave, dbDoc); + + maybeEmitEvent(new BeforeSaveEvent(objectToSave, dbDoc)); Object id = insertDBObject(collectionName, dbDoc); + populateIdIfNecessary(objectToSave, id); - if (null != applicationContext) { - eventQueue.add(new InsertEvent(collectionName, dbDoc)); - } + maybeEmitEvent(new AfterSaveEvent(objectToSave, dbDoc)); } /* (non-Javadoc) @@ -603,13 +616,19 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica List dbObjectList = new ArrayList(); for (T o : listToSave) { BasicDBObject dbDoc = new BasicDBObject(); + + maybeEmitEvent(new BeforeConvertEvent(o)); writer.write(o, dbDoc); + + maybeEmitEvent(new BeforeSaveEvent(o, dbDoc)); dbObjectList.add(dbDoc); } List ids = insertDBObjectList(collectionName, dbObjectList); for (int i = 0; i < listToSave.size(); i++) { if (i < ids.size()) { - populateIdIfNecessary(listToSave.get(i), ids.get(i)); + T obj = listToSave.get(i); + populateIdIfNecessary(obj, ids.get(i)); + maybeEmitEvent(new AfterSaveEvent(obj, dbObjectList.get(i))); } } } @@ -640,12 +659,15 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica */ public void save(String collectionName, T objectToSave, MongoWriter writer) { BasicDBObject dbDoc = new BasicDBObject(); + + maybeEmitEvent(new BeforeConvertEvent(objectToSave)); writer.write(objectToSave, dbDoc); + + maybeEmitEvent(new BeforeSaveEvent(objectToSave, dbDoc)); Object id = saveDBObject(collectionName, dbDoc); + populateIdIfNecessary(objectToSave, id); - if (null != applicationContext) { - eventQueue.add(new SaveEvent(collectionName, dbDoc)); - } + maybeEmitEvent(new AfterSaveEvent(objectToSave, dbDoc)); } @@ -821,6 +843,12 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica return MongoDbUtils.getDB(mongo, databaseName, username, password == null ? null : password.toCharArray()); } + protected void maybeEmitEvent(MongoMappingEvent event) { + if (null != eventPublisher) { + eventPublisher.publishEvent(event); + } + } + /** * Create the specified collection using the provided options * @@ -832,9 +860,7 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica return execute(new DbCallback() { public DBCollection doInDB(DB db) throws MongoException, DataAccessException { DBCollection coll = db.createCollection(collectionName, collectionOptions); - if (null != applicationContext) { - eventQueue.add(new CollectionCreatedEvent(collectionName, collectionOptions)); - } + // TODO: Emit a collection created event return coll; } }); @@ -1166,7 +1192,7 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica * * @author Oliver Gierke */ - private static class ReadDbObjectCallback implements DbObjectCallback { + private class ReadDbObjectCallback implements DbObjectCallback { private final MongoReader reader; private final Class type; @@ -1177,7 +1203,10 @@ public class MongoTemplate implements InitializingBean, MongoOperations, Applica } public T doWith(DBObject object) { - return reader.read(type, object); + maybeEmitEvent(new AfterLoadEvent(object)); + T source = reader.read(type, object); + maybeEmitEvent(new AfterConvertEvent(object, source)); + return source; } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/event/CollectionCreatedEvent.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/event/CollectionCreatedEvent.java deleted file mode 100644 index e4ac468be..000000000 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/event/CollectionCreatedEvent.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2011 by the original author(s). - * - * 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.document.mongodb.event; - -import com.mongodb.DBObject; -import org.springframework.context.ApplicationEvent; - -/** - * @author Jon Brisbin - */ -public class CollectionCreatedEvent extends ApplicationEvent { - - private static final long serialVersionUID = -7258679124450904006L; - private final DBObject options; - - public CollectionCreatedEvent(String collection, DBObject options) { - super(collection); - this.options = options; - } - - public String getCollection() { - return (String) super.getSource(); - } - - public DBObject getOptions() { - return options; - } - -} 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 new file mode 100644 index 000000000..556c79501 --- /dev/null +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/AbstractMappingEventListener.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2011 by the original author(s). + * + * 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.document.mongodb.mapping.event; + +import com.mongodb.DBObject; +import org.springframework.context.ApplicationEvent; +import org.springframework.context.ApplicationListener; + +/** + * @author Jon Brisbin + */ +public abstract class AbstractMappingEventListener implements ApplicationListener { + + @SuppressWarnings({"unchecked"}) + public void onApplicationEvent(T appEvent) { + if (appEvent instanceof MongoMappingEvent) { + MongoMappingEvent event = (MongoMappingEvent) appEvent; + if (event instanceof BeforeConvertEvent) { + onBeforeConvert(event.getSource()); + } else if (event instanceof BeforeSaveEvent) { + onBeforeSave(event.getSource(), event.getDBObject()); + } else if (event instanceof AfterSaveEvent) { + onAfterSave(event.getSource(), event.getDBObject()); + } else if (event instanceof AfterLoadEvent) { + onAfterLoad((DBObject) event.getSource()); + } else if (event instanceof AfterConvertEvent) { + onAfterConvert(event.getDBObject(), event.getSource()); + } + } + } + + public void onBeforeConvert(E source) { + } + + public void onBeforeSave(E source, DBObject dbo) { + } + + public void onAfterSave(E source, DBObject dbo) { + } + + public void onAfterLoad(DBObject dbo) { + } + + public void onAfterConvert(DBObject dbo, E source) { + } + +} diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/event/WriteResultEvent.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/AfterConvertEvent.java similarity index 62% rename from spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/event/WriteResultEvent.java rename to spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/AfterConvertEvent.java index 3341bfbaf..913d8be16 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/event/WriteResultEvent.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/AfterConvertEvent.java @@ -14,23 +14,19 @@ * limitations under the License. */ -package org.springframework.data.document.mongodb.event; +package org.springframework.data.document.mongodb.mapping.event; -import com.mongodb.WriteResult; -import org.springframework.context.ApplicationEvent; +import com.mongodb.DBObject; /** * @author Jon Brisbin */ -public class WriteResultEvent extends ApplicationEvent { +public class AfterConvertEvent extends MongoMappingEvent { - private static final long serialVersionUID = 4460770341573211038L; + private static final long serialVersionUID = 1L; - public WriteResultEvent(WriteResult result) { - super(result); + public AfterConvertEvent(DBObject dbo, E source) { + super(source, dbo); } - public WriteResult getWriteResult() { - return (WriteResult) source; - } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/AfterLoadEvent.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/AfterLoadEvent.java new file mode 100644 index 000000000..1c7d4fecc --- /dev/null +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/AfterLoadEvent.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2011 by the original author(s). + * + * 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.document.mongodb.mapping.event; + +/** + * @author Jon Brisbin + */ +public class AfterLoadEvent extends MongoMappingEvent { + + private static final long serialVersionUID = 1L; + + public AfterLoadEvent(DBObject dbo) { + super(dbo, null); + } +} diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/event/InsertEvent.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/AfterSaveEvent.java similarity index 58% rename from spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/event/InsertEvent.java rename to spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/AfterSaveEvent.java index bb01b8356..264abc9d6 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/event/InsertEvent.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/AfterSaveEvent.java @@ -14,30 +14,20 @@ * limitations under the License. */ -package org.springframework.data.document.mongodb.event; +package org.springframework.data.document.mongodb.mapping.event; import com.mongodb.DBObject; -import org.springframework.context.ApplicationEvent; +import org.springframework.data.mapping.model.PersistentEntity; /** * @author Jon Brisbin */ -public class InsertEvent extends ApplicationEvent { +public class AfterSaveEvent extends MongoMappingEvent { - private static final long serialVersionUID = 8713413423411L; - private final String collection; + private static final long serialVersionUID = 1L; - public InsertEvent(String collection, DBObject dbo) { - super(dbo); - this.collection = collection; - } - - public String getCollection() { - return collection; - } - - public DBObject getDBObject() { - return (DBObject) source; + public AfterSaveEvent(E source, DBObject dbo) { + super(source, dbo); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/event/EventType.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/BeforeConvertEvent.java similarity index 72% rename from spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/event/EventType.java rename to spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/BeforeConvertEvent.java index 3cb5336ce..50bd43c0b 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/event/EventType.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/BeforeConvertEvent.java @@ -14,14 +14,17 @@ * limitations under the License. */ -package org.springframework.data.document.mongodb.event; +package org.springframework.data.document.mongodb.mapping.event; /** * @author Jon Brisbin */ -public enum EventType { - COLLECTION_CREATED, - DOCUMENT_INSERTED, - DOCUMENT_UPDATED, - DOCUMENT_DELETED +public class BeforeConvertEvent extends MongoMappingEvent { + + private static final long serialVersionUID = 1L; + + public BeforeConvertEvent(T source) { + super(source, null); + } } + diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/event/SaveEvent.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/BeforeSaveEvent.java similarity index 58% rename from spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/event/SaveEvent.java rename to spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/BeforeSaveEvent.java index 74ef00984..6d5bff3b1 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/event/SaveEvent.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/BeforeSaveEvent.java @@ -14,30 +14,19 @@ * limitations under the License. */ -package org.springframework.data.document.mongodb.event; +package org.springframework.data.document.mongodb.mapping.event; import com.mongodb.DBObject; -import org.springframework.context.ApplicationEvent; /** * @author Jon Brisbin */ -public class SaveEvent extends ApplicationEvent { +public class BeforeSaveEvent extends MongoMappingEvent { - private static final long serialVersionUID = -5583681211168904206L; - private final String collection; + private static final long serialVersionUID = 1L; - public SaveEvent(String collection, DBObject source) { - super(source); - this.collection = collection; - } - - public DBObject getDBObject() { - return (DBObject) source; - } - - public String getCollection() { - return collection; + public BeforeSaveEvent(E source, DBObject dbo) { + super(source, dbo); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/MongoMappingEvent.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/MongoMappingEvent.java index 3236821eb..8f9938782 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/MongoMappingEvent.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/event/MongoMappingEvent.java @@ -16,35 +16,28 @@ package org.springframework.data.document.mongodb.mapping.event; +import com.mongodb.DBObject; import org.springframework.context.ApplicationEvent; -import org.springframework.data.document.mongodb.event.EventType; -import org.springframework.data.mapping.model.PersistentEntity; /** * @author Jon Brisbin */ public class MongoMappingEvent extends ApplicationEvent { - - private static final long serialVersionUID = 1L; - private final EventType type; - private final PersistentEntity entity; - public MongoMappingEvent(EventType type, PersistentEntity entity, T target) { - super(target); - this.type = type; - this.entity = entity; - } + private static final long serialVersionUID = 1L; + private final DBObject dbo; - public EventType getType() { - return type; + public MongoMappingEvent(T source, DBObject dbo) { + super(source); + this.dbo = dbo; } - public PersistentEntity getEntity() { - return entity; + public DBObject getDBObject() { + return dbo; } + @SuppressWarnings({"unchecked"}) @Override - @SuppressWarnings("unchecked") public T getSource() { return (T) super.getSource(); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/InsertEventListener.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/MappingEventsListener.java similarity index 51% rename from spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/InsertEventListener.java rename to spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/MappingEventsListener.java index 0e7f4a3ce..426fffa6a 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/InsertEventListener.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/MappingEventsListener.java @@ -16,28 +16,41 @@ package org.springframework.data.document.mongodb.mapping; -import java.util.concurrent.atomic.AtomicInteger; - +import com.mongodb.DBObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.context.ApplicationListener; -import org.springframework.data.document.mongodb.event.InsertEvent; +import org.springframework.data.document.mongodb.mapping.event.AbstractMappingEventListener; /** * @author Jon Brisbin */ -public class InsertEventListener implements ApplicationListener { +public class MappingEventsListener extends AbstractMappingEventListener { private Logger log = LoggerFactory.getLogger(getClass()); - private AtomicInteger counter = new AtomicInteger(0); - public void onApplicationEvent(InsertEvent event) { - log.info("Got INSERT event: " + event); - counter.incrementAndGet(); + @Override + public void onBeforeConvert(Object source) { + log.info("onBeforeConvert: " + source); + } + + @Override + public void onBeforeSave(Object source, DBObject dbo) { + log.info("onBeforeSave: " + source + ", " + dbo); + } + + @Override + public void onAfterSave(Object source, DBObject dbo) { + log.info("onAfterSave: " + source + ", " + dbo); + } + + @Override + public void onAfterLoad(DBObject dbo) { + log.info("onAfterLoad: " + dbo); } - public int getCount() { - return counter.get(); + @Override + public void onAfterConvert(DBObject dbo, Object source) { + log.info("onAfterConvert: " + dbo + ", " + 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 c0cd5034a..2ad2f8eb2 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,30 +24,30 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.data.document.mongodb.MongoTemplate; import org.springframework.data.document.mongodb.query.Criteria; import org.springframework.data.document.mongodb.query.Query; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** * @author Jon Brisbin */ -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration("classpath:mapping.xml") public class MappingTests { - @Autowired ApplicationContext applicationContext; - @Autowired MongoTemplate template; - @Autowired MongoMappingContext mappingContext; + @Before + public void setUp() { + applicationContext = new ClassPathXmlApplicationContext("/mapping.xml"); + template = applicationContext.getBean(MongoTemplate.class); + mappingContext = applicationContext.getBean(MongoMappingContext.class); + } + @Test public void testPersonPojo() { PersonPojo p = new PersonPojo(12345, "Person", "Pojo"); @@ -144,4 +144,9 @@ public class MappingTests { assertThat(result.size(), is(1)); } + @Test + public void testEvents(){ + + } + } diff --git a/spring-data-mongodb/src/test/resources/mapping.xml b/spring-data-mongodb/src/test/resources/mapping.xml index 309cac73d..99dc0ed8f 100644 --- a/spring-data-mongodb/src/test/resources/mapping.xml +++ b/spring-data-mongodb/src/test/resources/mapping.xml @@ -16,4 +16,6 @@ + +