From fe71afb6f028683357fe330c9c2988a7146a79f9 Mon Sep 17 00:00:00 2001 From: Redouane Loulou Date: Fri, 15 Apr 2016 09:25:15 +0200 Subject: [PATCH] Add automatically build indexes --- CHANGELOG.md | 1 + .../mongodb/morphia/internal/DatastoreProvider.java | 6 ++++-- .../seedstack/mongodb/morphia/internal/MorphiaModule.java | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a993a16..1909a1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Version 1.1.0 (?) +* [new] Automatically build indexes * [new] Add Bean Validation support to Morphia (at pre-persist). * [new] Add `exists()` and `count()` in `BaseMorphiaRepository`. * [chg] Update for SeedStack 16.4. diff --git a/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/DatastoreProvider.java b/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/DatastoreProvider.java index 05854e6..169337e 100644 --- a/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/DatastoreProvider.java +++ b/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/DatastoreProvider.java @@ -42,10 +42,12 @@ public Datastore get() { MorphiaUtils.getMongoClientConfiguration(application.getConfiguration(), morphiaDatastore.clientName()), morphiaDatastore.dbName() ); - - return morphia.createDatastore( + Datastore datastore = morphia.createDatastore( injector.getInstance(Key.get(MongoClient.class, Names.named(morphiaDatastore.clientName()))), resolvedDbName ); + datastore.ensureIndexes(true); + datastore.ensureCaps(); + return datastore; } } diff --git a/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/MorphiaModule.java b/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/MorphiaModule.java index 3846ba4..38305e8 100644 --- a/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/MorphiaModule.java +++ b/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/MorphiaModule.java @@ -12,6 +12,7 @@ import com.google.inject.AbstractModule; import com.google.inject.Key; +import com.google.inject.Scopes; import org.mongodb.morphia.Datastore; import org.mongodb.morphia.Morphia; import org.seedstack.mongodb.morphia.MorphiaDatastore; @@ -37,7 +38,7 @@ protected void configure() { for (MorphiaDatastore morphiaDatastore : morphiaDatastoresAnnotation) { DatastoreProvider datastoreProvider = new DatastoreProvider(morphiaDatastore, morphia); requestInjection(datastoreProvider); - bind(Key.get(Datastore.class, morphiaDatastore)).toProvider(datastoreProvider); + bind(Key.get(Datastore.class, morphiaDatastore)).toProvider(datastoreProvider).in(Scopes.SINGLETON); } } }