package restx.jongo; import com.mongodb.MongoClient; import org.jongo.Jongo; import org.jongo.Mapper; import org.jongo.marshall.jackson.JacksonMapper; import restx.factory.Module; import restx.factory.Name; import restx.factory.Provides; import restx.factory.SatisfiedBOM; import restx.jackson.BsonJodaTimeModule; import restx.jackson.Views; import restx.mongo.MongoModule; import javax.inject.Named; /** * User: xavierhanin * Date: 1/19/13 * Time: 12:12 AM */ @Module public class JongoModule { public static final Name<Jongo> NAME = Name.of(Jongo.class, "Jongo"); @Provides @Named("Mapper") public Mapper mapper() { return new JacksonMapper.Builder() .registerModule(new BsonJodaTimeModule()) .withView(Views.Private.class) .build(); } @Provides @Named("Jongo") public Jongo jongo(@Named(MongoModule.MONGO_DB_NAME) String dbName, @Named(MongoModule.MONGO_CLIENT_NAME) MongoClient mongoClient, @Named("Mapper") Mapper mapper) { return new Jongo(mongoClient.getDB(dbName), mapper); } }