package com.aperture_software.glados_wiki.spring.root;
import com.aperture_software.glados_wiki.config.WikiConfig;
import com.aperture_software.glados_wiki.spring.mongodb.MongoDbClientContext;
import com.mongodb.MongoClient;
import org.mongodb.morphia.Datastore;
import org.mongodb.morphia.Morphia;
import org.mongodb.morphia.ValidationExtension;
import org.mongodb.morphia.logging.MorphiaLoggerFactory;
import org.mongodb.morphia.logging.slf4j.SLF4JLogrImplFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
/**
* Created with IntelliJ IDEA.
* User: jhyun
* Date: 13. Nov. 15
* Time: 16:44
*/
@Import(value = {MongoDbClientContext.class})
@Configuration
public class MorphiaContext {
static {
MorphiaLoggerFactory.registerLogger(SLF4JLogrImplFactory.class);
}
@Bean
public Morphia morphia() {
Morphia morphia = new Morphia();
morphia.mapPackage("com.aperture_software");
//
new ValidationExtension(morphia);
//
return morphia;
}
@Autowired
@Bean
public Datastore datastore(WikiConfig wikiConfig, MongoClient mongoClient, Morphia morphia) {
Datastore ds = morphia.createDatastore(mongoClient, wikiConfig.getMongoDbName());
ds.ensureIndexes();
return ds;
}
}