@ -15,12 +15,13 @@
* /
* /
package org.springframework.data.mongodb.core ;
package org.springframework.data.mongodb.core ;
import static org.hamcrest.Core Matchers.* ;
import static org.hamcrest.Matchers.* ;
import static org.junit.Assert.* ;
import static org.junit.Assert.* ;
import static org.mockito.Matchers.* ;
import static org.mockito.Matchers.* ;
import static org.mockito.Mockito.* ;
import static org.mockito.Mockito.* ;
import java.math.BigInteger ;
import java.math.BigInteger ;
import java.util.Collection ;
import java.util.Collections ;
import java.util.Collections ;
import java.util.regex.Pattern ;
import java.util.regex.Pattern ;
@ -31,6 +32,7 @@ import org.junit.runner.RunWith;
import org.mockito.Mock ;
import org.mockito.Mock ;
import org.mockito.Mockito ;
import org.mockito.Mockito ;
import org.mockito.runners.MockitoJUnitRunner ;
import org.mockito.runners.MockitoJUnitRunner ;
import org.springframework.context.ApplicationListener ;
import org.springframework.context.support.GenericApplicationContext ;
import org.springframework.context.support.GenericApplicationContext ;
import org.springframework.core.convert.converter.Converter ;
import org.springframework.core.convert.converter.Converter ;
import org.springframework.dao.DataAccessException ;
import org.springframework.dao.DataAccessException ;
@ -40,6 +42,7 @@ import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.convert.CustomConversions ;
import org.springframework.data.mongodb.core.convert.CustomConversions ;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter ;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter ;
import org.springframework.data.mongodb.core.convert.QueryMapper ;
import org.springframework.data.mongodb.core.convert.QueryMapper ;
import org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator ;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext ;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext ;
import org.springframework.data.mongodb.core.query.Query ;
import org.springframework.data.mongodb.core.query.Query ;
import org.springframework.data.mongodb.core.query.Update ;
import org.springframework.data.mongodb.core.query.Update ;
@ -71,11 +74,13 @@ public class MongoTemplateUnitTests extends MongoOperationsUnitTests {
DBCollection collection ;
DBCollection collection ;
MappingMongoConverter converter ;
MappingMongoConverter converter ;
MongoMappingContext mappingContext ;
@Before
@Before
public void setUp ( ) {
public void setUp ( ) {
this . converter = new MappingMongoConverter ( factory , new MongoMappingContext ( ) ) ;
this . mappingContext = new MongoMappingContext ( ) ;
this . converter = new MappingMongoConverter ( factory , mappingContext ) ;
this . template = new MongoTemplate ( factory , converter ) ;
this . template = new MongoTemplate ( factory , converter ) ;
when ( factory . getDb ( ) ) . thenReturn ( db ) ;
when ( factory . getDb ( ) ) . thenReturn ( db ) ;
@ -198,6 +203,29 @@ public class MongoTemplateUnitTests extends MongoOperationsUnitTests {
assertThat ( entity . id , is ( 5 ) ) ;
assertThat ( entity . id , is ( 5 ) ) ;
}
}
/ * *
* @see DATAMONGO - 533
* /
@Test
public void registersDefaultEntityIndexCreatorIfApplicationContextHasOneForDifferentMappingContext ( ) {
GenericApplicationContext applicationContext = new GenericApplicationContext ( ) ;
applicationContext . getBeanFactory ( ) . registerSingleton ( "foo" ,
new MongoPersistentEntityIndexCreator ( new MongoMappingContext ( ) , factory ) ) ;
MongoTemplate mongoTemplate = new MongoTemplate ( factory , converter ) ;
mongoTemplate . setApplicationContext ( applicationContext ) ;
Collection < ApplicationListener < ? > > listeners = applicationContext . getApplicationListeners ( ) ;
assertThat ( listeners , hasSize ( 1 ) ) ;
ApplicationListener < ? > listener = listeners . iterator ( ) . next ( ) ;
assertThat ( listener , is ( instanceOf ( MongoPersistentEntityIndexCreator . class ) ) ) ;
MongoPersistentEntityIndexCreator creator = ( MongoPersistentEntityIndexCreator ) listener ;
assertThat ( creator . isIndexCreatorFor ( mappingContext ) , is ( true ) ) ;
}
class AutogenerateableId {
class AutogenerateableId {
@Id
@Id