From 8d002a540c2e1df84887d3c9b9fe1ca9cac712fc Mon Sep 17 00:00:00 2001 From: pith Date: Thu, 5 Nov 2015 12:41:05 +0100 Subject: [PATCH] Refactor packages --- .../mongodb/MongoDbAsyncIT.java | 2 +- .../persistence => }/mongodb/MongoDbIT.java | 2 +- ....mongo.props => org.seedstack.mongo.props} | 8 +- .../internal/AbstractMongoDbManager.java | 5 +- .../internal/AsyncMongoDbManager.java | 5 +- .../morphia/internal}/MongoDbErrorCodes.java | 4 +- .../morphia}/internal/MongoDbManager.java | 2 +- .../morphia}/internal/MongoDbModule.java | 2 +- .../morphia}/internal/MongoDbPlugin.java | 13 +- .../morphia}/internal/SyncMongoDbManager.java | 5 +- ...odb.internal.MongoDbErrorCodes.properties} | 0 .../services/io.nuun.kernel.api.Plugin | 2 +- .../morphia}/MongoDbIT.java | 2 +- .../morphia}/MongodbRepositoryIT.java | 275 +++++++++--------- .../mongodb/morphia/MorphiaIT.java | 65 ++--- .../morphia/fixtures}/dummyobject/Dummy1.java | 38 +-- .../morphia/fixtures}/dummyobject/Dummy2.java | 38 +-- .../morphia/fixtures}/dummyobject/Dummy3.java | 38 +-- .../morphia/fixtures}/dummyobject/Dummy4.java | 40 +-- .../morphia/fixtures}/dummyobject/Dummy5.java | 38 +-- .../morphia/fixtures}/dummyobject/Dummy6.java | 38 +-- .../morphia/fixtures}/user/Address.java | 134 ++++----- .../morphia/fixtures}/user/User.java | 160 +++++----- ....mongo.props => org.seedstack.mongo.props} | 20 +- .../morphia}/BaseMongodbRepository.java | 10 +- .../api => mongodb/morphia}/Morphia.java | 2 +- .../morphia}/MorphiaDatastore.java | 60 ++-- .../morphia}/internal/DatastoreProvider.java | 106 +++---- .../internal/DefaultMongodbRepository.java | 104 +++---- .../internal/MorphiaDatastoreImpl.java | 146 +++++----- .../morphia/internal}/MorphiaErrorCodes.java | 4 +- .../morphia}/internal/MorphiaModule.java | 100 +++---- .../morphia/internal/MorphiaPlugin.java | 157 ++++++++++ .../mongodb/internal/MorphiaPlugin.java | 167 ----------- ...hia.internal.MorphiaErrorCodes.properties} | 0 .../services/io.nuun.kernel.api.Plugin | 2 +- 36 files changed, 884 insertions(+), 910 deletions(-) rename core/src/it/java/org/seedstack/{seed/persistence => }/mongodb/MongoDbAsyncIT.java (97%) rename core/src/it/java/org/seedstack/{seed/persistence => }/mongodb/MongoDbIT.java (96%) rename core/src/it/resources/META-INF/configuration/{org.seedstack.seed.persistence.mongo.props => org.seedstack.mongo.props} (71%) rename core/src/main/java/org/seedstack/{seed/persistence/mongodb => mongodb/morphia}/internal/AbstractMongoDbManager.java (97%) rename core/src/main/java/org/seedstack/{seed/persistence/mongodb => mongodb/morphia}/internal/AsyncMongoDbManager.java (98%) rename core/src/main/java/org/seedstack/{seed/persistence/mongodb/api => mongodb/morphia/internal}/MongoDbErrorCodes.java (86%) rename core/src/main/java/org/seedstack/{seed/persistence/mongodb => mongodb/morphia}/internal/MongoDbManager.java (91%) rename core/src/main/java/org/seedstack/{seed/persistence/mongodb => mongodb/morphia}/internal/MongoDbModule.java (97%) rename core/src/main/java/org/seedstack/{seed/persistence/mongodb => mongodb/morphia}/internal/MongoDbPlugin.java (91%) rename core/src/main/java/org/seedstack/{seed/persistence/mongodb => mongodb/morphia}/internal/SyncMongoDbManager.java (97%) rename core/src/main/resources/META-INF/errors/{org.seedstack.seed.persistence.mongodb.api.MongoDbErrorCodes.properties => org.seedstack.mongodb.internal.MongoDbErrorCodes.properties} (100%) rename morphia/src/it/java/org/seedstack/{seed/persistence/mongodb => mongodb/morphia}/MongoDbIT.java (96%) rename morphia/src/it/java/org/seedstack/{seed/business/mongodb => mongodb/morphia}/MongodbRepositoryIT.java (79%) rename morphia/src/it/java/org/seedstack/{seed/persistence => }/mongodb/morphia/MorphiaIT.java (77%) rename morphia/src/it/java/org/seedstack/{seed/mongodb/domain => mongodb/morphia/fixtures}/dummyobject/Dummy1.java (75%) rename morphia/src/it/java/org/seedstack/{seed/mongodb/domain => mongodb/morphia/fixtures}/dummyobject/Dummy2.java (75%) rename morphia/src/it/java/org/seedstack/{seed/mongodb/domain => mongodb/morphia/fixtures}/dummyobject/Dummy3.java (75%) rename morphia/src/it/java/org/seedstack/{seed/mongodb/domain => mongodb/morphia/fixtures}/dummyobject/Dummy4.java (76%) rename morphia/src/it/java/org/seedstack/{seed/mongodb/domain => mongodb/morphia/fixtures}/dummyobject/Dummy5.java (76%) rename morphia/src/it/java/org/seedstack/{seed/mongodb/domain => mongodb/morphia/fixtures}/dummyobject/Dummy6.java (76%) rename morphia/src/it/java/org/seedstack/{seed/mongodb/domain => mongodb/morphia/fixtures}/user/Address.java (89%) rename morphia/src/it/java/org/seedstack/{seed/mongodb/domain => mongodb/morphia/fixtures}/user/User.java (87%) rename morphia/src/it/resources/META-INF/configuration/{org.seedstack.seed.persistence.mongo.props => org.seedstack.mongo.props} (59%) rename morphia/src/main/java/org/seedstack/{seed/business/mongodb => mongodb/morphia}/BaseMongodbRepository.java (85%) rename morphia/src/main/java/org/seedstack/{seed/persistence/mongodb/api => mongodb/morphia}/Morphia.java (92%) rename morphia/src/main/java/org/seedstack/{seed/persistence/mongodb/api => mongodb/morphia}/MorphiaDatastore.java (91%) rename morphia/src/main/java/org/seedstack/{seed/persistence/mongodb => mongodb/morphia}/internal/DatastoreProvider.java (84%) rename morphia/src/main/java/org/seedstack/{seed/business/mongodb => mongodb/morphia}/internal/DefaultMongodbRepository.java (81%) rename morphia/src/main/java/org/seedstack/{seed/persistence/mongodb => mongodb/morphia}/internal/MorphiaDatastoreImpl.java (89%) rename morphia/src/main/java/org/seedstack/{seed/persistence/mongodb/api => mongodb/morphia/internal}/MorphiaErrorCodes.java (84%) rename morphia/src/main/java/org/seedstack/{seed/persistence/mongodb => mongodb/morphia}/internal/MorphiaModule.java (88%) create mode 100644 morphia/src/main/java/org/seedstack/mongodb/morphia/internal/MorphiaPlugin.java delete mode 100644 morphia/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MorphiaPlugin.java rename morphia/src/main/resources/META-INF/errors/{org.seedstack.seed.persistence.mongodb.api.MorphiaErrorCodes.properties => org.seedstack.mongodb.morphia.internal.MorphiaErrorCodes.properties} (100%) diff --git a/core/src/it/java/org/seedstack/seed/persistence/mongodb/MongoDbAsyncIT.java b/core/src/it/java/org/seedstack/mongodb/MongoDbAsyncIT.java similarity index 97% rename from core/src/it/java/org/seedstack/seed/persistence/mongodb/MongoDbAsyncIT.java rename to core/src/it/java/org/seedstack/mongodb/MongoDbAsyncIT.java index ed8cf58..2160d1b 100644 --- a/core/src/it/java/org/seedstack/seed/persistence/mongodb/MongoDbAsyncIT.java +++ b/core/src/it/java/org/seedstack/mongodb/MongoDbAsyncIT.java @@ -5,7 +5,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.seedstack.seed.persistence.mongodb; +package org.seedstack.mongodb; import com.mongodb.async.SingleResultCallback; import com.mongodb.async.client.MongoClient; diff --git a/core/src/it/java/org/seedstack/seed/persistence/mongodb/MongoDbIT.java b/core/src/it/java/org/seedstack/mongodb/MongoDbIT.java similarity index 96% rename from core/src/it/java/org/seedstack/seed/persistence/mongodb/MongoDbIT.java rename to core/src/it/java/org/seedstack/mongodb/MongoDbIT.java index 2702d8a..53bafd9 100644 --- a/core/src/it/java/org/seedstack/seed/persistence/mongodb/MongoDbIT.java +++ b/core/src/it/java/org/seedstack/mongodb/MongoDbIT.java @@ -5,7 +5,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.seedstack.seed.persistence.mongodb; +package org.seedstack.mongodb; import com.mongodb.MongoClient; import com.mongodb.client.MongoDatabase; diff --git a/core/src/it/resources/META-INF/configuration/org.seedstack.seed.persistence.mongo.props b/core/src/it/resources/META-INF/configuration/org.seedstack.mongo.props similarity index 71% rename from core/src/it/resources/META-INF/configuration/org.seedstack.seed.persistence.mongo.props rename to core/src/it/resources/META-INF/configuration/org.seedstack.mongo.props index ce5f3d5..9e20b49 100644 --- a/core/src/it/resources/META-INF/configuration/org.seedstack.seed.persistence.mongo.props +++ b/core/src/it/resources/META-INF/configuration/org.seedstack.mongo.props @@ -6,21 +6,21 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. # -[org.seedstack.seed.persistence.mongodb] +[org.seedstack.mongodb] clients = client1, client2, client3 -[org.seedstack.seed.persistence.mongodb.client.client1] +[org.seedstack.mongodb.client.client1] hosts = localhost option.connectionsPerHost = 50 databases = db1 -[org.seedstack.seed.persistence.mongodb.client.client2] +[org.seedstack.mongodb.client.client2] async = true hosts = localhost setting.connectionPool.maxSize = 50 databases = db2 -[org.seedstack.seed.persistence.mongodb.client.client3] +[org.seedstack.mongodb.client.client3] async = true hosts = localhost databases = db2 diff --git a/core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/AbstractMongoDbManager.java b/core/src/main/java/org/seedstack/mongodb/morphia/internal/AbstractMongoDbManager.java similarity index 97% rename from core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/AbstractMongoDbManager.java rename to core/src/main/java/org/seedstack/mongodb/morphia/internal/AbstractMongoDbManager.java index 6072f3d..81bcbc5 100644 --- a/core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/AbstractMongoDbManager.java +++ b/core/src/main/java/org/seedstack/mongodb/morphia/internal/AbstractMongoDbManager.java @@ -5,15 +5,14 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.seedstack.seed.persistence.mongodb.internal; +package org.seedstack.mongodb.morphia.internal; import com.google.inject.Module; import com.mongodb.AuthenticationMechanism; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; import org.apache.commons.configuration.Configuration; -import org.seedstack.seed.core.api.SeedException; -import org.seedstack.seed.persistence.mongodb.api.MongoDbErrorCodes; +import org.seedstack.seed.SeedException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/AsyncMongoDbManager.java b/core/src/main/java/org/seedstack/mongodb/morphia/internal/AsyncMongoDbManager.java similarity index 98% rename from core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/AsyncMongoDbManager.java rename to core/src/main/java/org/seedstack/mongodb/morphia/internal/AsyncMongoDbManager.java index 7b4418c..db42aca 100644 --- a/core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/AsyncMongoDbManager.java +++ b/core/src/main/java/org/seedstack/mongodb/morphia/internal/AsyncMongoDbManager.java @@ -5,7 +5,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.seedstack.seed.persistence.mongodb.internal; +package org.seedstack.mongodb.morphia.internal; import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; @@ -23,8 +23,7 @@ import com.mongodb.selector.ServerSelector; import org.apache.commons.configuration.Configuration; import org.bson.codecs.configuration.CodecRegistry; -import org.seedstack.seed.core.api.SeedException; -import org.seedstack.seed.persistence.mongodb.api.MongoDbErrorCodes; +import org.seedstack.seed.SeedException; import java.util.Iterator; import java.util.concurrent.TimeUnit; diff --git a/core/src/main/java/org/seedstack/seed/persistence/mongodb/api/MongoDbErrorCodes.java b/core/src/main/java/org/seedstack/mongodb/morphia/internal/MongoDbErrorCodes.java similarity index 86% rename from core/src/main/java/org/seedstack/seed/persistence/mongodb/api/MongoDbErrorCodes.java rename to core/src/main/java/org/seedstack/mongodb/morphia/internal/MongoDbErrorCodes.java index 9896562..1d27e6b 100644 --- a/core/src/main/java/org/seedstack/seed/persistence/mongodb/api/MongoDbErrorCodes.java +++ b/core/src/main/java/org/seedstack/mongodb/morphia/internal/MongoDbErrorCodes.java @@ -5,9 +5,9 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.seedstack.seed.persistence.mongodb.api; +package org.seedstack.mongodb.morphia.internal; -import org.seedstack.seed.core.api.ErrorCode; +import org.seedstack.seed.ErrorCode; public enum MongoDbErrorCodes implements ErrorCode { MISSING_URI, diff --git a/core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MongoDbManager.java b/core/src/main/java/org/seedstack/mongodb/morphia/internal/MongoDbManager.java similarity index 91% rename from core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MongoDbManager.java rename to core/src/main/java/org/seedstack/mongodb/morphia/internal/MongoDbManager.java index c1e2786..b9a1248 100644 --- a/core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MongoDbManager.java +++ b/core/src/main/java/org/seedstack/mongodb/morphia/internal/MongoDbManager.java @@ -5,7 +5,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.seedstack.seed.persistence.mongodb.internal; +package org.seedstack.mongodb.morphia.internal; import com.google.inject.Module; import org.apache.commons.configuration.Configuration; diff --git a/core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MongoDbModule.java b/core/src/main/java/org/seedstack/mongodb/morphia/internal/MongoDbModule.java similarity index 97% rename from core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MongoDbModule.java rename to core/src/main/java/org/seedstack/mongodb/morphia/internal/MongoDbModule.java index 6859460..837bd7a 100644 --- a/core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MongoDbModule.java +++ b/core/src/main/java/org/seedstack/mongodb/morphia/internal/MongoDbModule.java @@ -5,7 +5,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.seedstack.seed.persistence.mongodb.internal; +package org.seedstack.mongodb.morphia.internal; import com.google.inject.AbstractModule; import com.google.inject.Key; diff --git a/core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MongoDbPlugin.java b/core/src/main/java/org/seedstack/mongodb/morphia/internal/MongoDbPlugin.java similarity index 91% rename from core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MongoDbPlugin.java rename to core/src/main/java/org/seedstack/mongodb/morphia/internal/MongoDbPlugin.java index 9051859..f567d49 100644 --- a/core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MongoDbPlugin.java +++ b/core/src/main/java/org/seedstack/mongodb/morphia/internal/MongoDbPlugin.java @@ -5,7 +5,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.seedstack.seed.persistence.mongodb.internal; +package org.seedstack.mongodb.morphia.internal; import com.google.inject.AbstractModule; import io.nuun.kernel.api.Plugin; @@ -14,10 +14,9 @@ import io.nuun.kernel.api.plugin.context.InitContext; import io.nuun.kernel.core.AbstractPlugin; import org.apache.commons.configuration.Configuration; -import org.seedstack.seed.core.api.Application; -import org.seedstack.seed.core.api.SeedException; +import org.seedstack.seed.Application; +import org.seedstack.seed.SeedException; import org.seedstack.seed.core.internal.application.ApplicationPlugin; -import org.seedstack.seed.persistence.mongodb.api.MongoDbErrorCodes; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,9 +26,9 @@ import java.util.Set; public class MongoDbPlugin extends AbstractPlugin { - public static final String MONGO_PLUGIN_CONFIGURATION_PREFIX = "org.seedstack.seed.persistence.mongodb"; private static final Logger LOGGER = LoggerFactory.getLogger(MongoDbPlugin.class); + public static final String CONFIGURATION_PREFIX = "org.seedstack.mongodb"; private static class SyncHolder { private static final MongoDbManager INSTANCE = new SyncMongoDbManager(); @@ -44,7 +43,7 @@ private static class AsyncHolder { @Override public String name() { - return "seed-persistence-mongodb-plugin"; + return "mongodb"; } @Override @@ -56,7 +55,7 @@ public InitState init(InitContext initContext) { for (Plugin plugin : initContext.pluginsRequired()) { if (plugin instanceof ApplicationPlugin) { application = ((ApplicationPlugin) plugin).getApplication(); - mongoConfiguration = application.getConfiguration().subset(MongoDbPlugin.MONGO_PLUGIN_CONFIGURATION_PREFIX); + mongoConfiguration = application.getConfiguration().subset(MongoDbPlugin.CONFIGURATION_PREFIX); } } diff --git a/core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/SyncMongoDbManager.java b/core/src/main/java/org/seedstack/mongodb/morphia/internal/SyncMongoDbManager.java similarity index 97% rename from core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/SyncMongoDbManager.java rename to core/src/main/java/org/seedstack/mongodb/morphia/internal/SyncMongoDbManager.java index 8e9d2cf..1dd6178 100644 --- a/core/src/main/java/org/seedstack/seed/persistence/mongodb/internal/SyncMongoDbManager.java +++ b/core/src/main/java/org/seedstack/mongodb/morphia/internal/SyncMongoDbManager.java @@ -5,7 +5,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.seedstack.seed.persistence.mongodb.internal; +package org.seedstack.mongodb.morphia.internal; import com.mongodb.DBDecoderFactory; import com.mongodb.DBEncoderFactory; @@ -19,8 +19,7 @@ import com.mongodb.client.MongoDatabase; import org.apache.commons.configuration.Configuration; import org.bson.codecs.configuration.CodecRegistry; -import org.seedstack.seed.core.api.SeedException; -import org.seedstack.seed.persistence.mongodb.api.MongoDbErrorCodes; +import org.seedstack.seed.SeedException; import javax.net.SocketFactory; import java.util.Iterator; diff --git a/core/src/main/resources/META-INF/errors/org.seedstack.seed.persistence.mongodb.api.MongoDbErrorCodes.properties b/core/src/main/resources/META-INF/errors/org.seedstack.mongodb.internal.MongoDbErrorCodes.properties similarity index 100% rename from core/src/main/resources/META-INF/errors/org.seedstack.seed.persistence.mongodb.api.MongoDbErrorCodes.properties rename to core/src/main/resources/META-INF/errors/org.seedstack.mongodb.internal.MongoDbErrorCodes.properties diff --git a/core/src/main/resources/META-INF/services/io.nuun.kernel.api.Plugin b/core/src/main/resources/META-INF/services/io.nuun.kernel.api.Plugin index 6db54f6..a5a7335 100644 --- a/core/src/main/resources/META-INF/services/io.nuun.kernel.api.Plugin +++ b/core/src/main/resources/META-INF/services/io.nuun.kernel.api.Plugin @@ -1 +1 @@ -org.seedstack.seed.persistence.mongodb.internal.MongoDbPlugin \ No newline at end of file +org.seedstack.mongodb.morphia.internal.MongoDbPlugin \ No newline at end of file diff --git a/morphia/src/it/java/org/seedstack/seed/persistence/mongodb/MongoDbIT.java b/morphia/src/it/java/org/seedstack/mongodb/morphia/MongoDbIT.java similarity index 96% rename from morphia/src/it/java/org/seedstack/seed/persistence/mongodb/MongoDbIT.java rename to morphia/src/it/java/org/seedstack/mongodb/morphia/MongoDbIT.java index 2702d8a..3b86d3b 100644 --- a/morphia/src/it/java/org/seedstack/seed/persistence/mongodb/MongoDbIT.java +++ b/morphia/src/it/java/org/seedstack/mongodb/morphia/MongoDbIT.java @@ -5,7 +5,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.seedstack.seed.persistence.mongodb; +package org.seedstack.mongodb.morphia; import com.mongodb.MongoClient; import com.mongodb.client.MongoDatabase; diff --git a/morphia/src/it/java/org/seedstack/seed/business/mongodb/MongodbRepositoryIT.java b/morphia/src/it/java/org/seedstack/mongodb/morphia/MongodbRepositoryIT.java similarity index 79% rename from morphia/src/it/java/org/seedstack/seed/business/mongodb/MongodbRepositoryIT.java rename to morphia/src/it/java/org/seedstack/mongodb/morphia/MongodbRepositoryIT.java index 8de81b2..f20caa0 100644 --- a/morphia/src/it/java/org/seedstack/seed/business/mongodb/MongodbRepositoryIT.java +++ b/morphia/src/it/java/org/seedstack/mongodb/morphia/MongodbRepositoryIT.java @@ -1,143 +1,132 @@ -/** - * Copyright (c) 2013-2015, The SeedStack authors - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -package org.seedstack.seed.business.mongodb; - -import org.assertj.core.api.Assertions; -import org.junit.Test; -import org.seedstack.business.api.domain.Repository; -import org.seedstack.seed.core.api.SeedException; -import org.seedstack.seed.it.AbstractSeedIT; -import org.seedstack.seed.mongodb.domain.dummyobject.Dummy1; -import org.seedstack.seed.mongodb.domain.dummyobject.Dummy2; -import org.seedstack.seed.mongodb.domain.dummyobject.Dummy3; -import org.seedstack.seed.mongodb.domain.dummyobject.Dummy4; -import org.seedstack.seed.mongodb.domain.dummyobject.Dummy5; -import org.seedstack.seed.mongodb.domain.dummyobject.Dummy6; -import org.seedstack.seed.mongodb.domain.user.Address; -import org.seedstack.seed.mongodb.domain.user.User; -import org.seedstack.seed.persistence.mongodb.api.Morphia; -import org.seedstack.seed.persistence.mongodb.api.MorphiaErrorCodes; - -import com.google.inject.Inject; -import com.google.inject.Injector; -import com.google.inject.Key; -import com.google.inject.ProvisionException; -import com.google.inject.TypeLiteral; -import com.google.inject.util.Types; - -public class MongodbRepositoryIT extends AbstractSeedIT { - - @Inject - @Morphia - private Repository userRepository; - - @Inject - private Injector injector; - - @Test - public void repository_injection_test_no_client_for_aggregate() { - try { - - injector.getInstance( - Key.get(TypeLiteral.get(Types.newParameterizedType(Repository.class, Dummy1.class, Long.class)), - Morphia.class)); - } catch (ProvisionException e) { - Assertions.assertThat(e.getCause().getMessage()) - .isEqualTo(SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATASTORE_CLIENT).getMessage()); - } - } - - @Test - public void repository_injection_test_no_dbName_for_aggregate() { - try { - injector.getInstance( - Key.get(TypeLiteral.get(Types.newParameterizedType(Repository.class, Dummy2.class, Long.class)), - Morphia.class)); - } catch (ProvisionException e) { - Assertions.assertThat(e.getCause().getMessage()) - .isEqualTo(SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATASTORE_DATABASE).getMessage()); - } - } - - @Test - public void repository_injection_test_no_mongoDb_client() { - try { - injector.getInstance( - Key.get(TypeLiteral.get(Types.newParameterizedType(Repository.class, Dummy3.class, Long.class)), - Morphia.class)); - } catch (ProvisionException e) { - Assertions.assertThat(e.getCause().getMessage()) - .isEqualTo(SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATASTORE_CLIENT).getMessage()); - } - } - - @Test - public void repository_injection_test_no_mongoDb_database() { - try { - injector.getInstance( - Key.get(TypeLiteral.get(Types.newParameterizedType(Repository.class, Dummy4.class, Long.class)), - Morphia.class)); - } catch (ProvisionException e) { - Assertions.assertThat(e.getCause().getMessage()) - .isEqualTo(SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATABASE_NAME).getMessage()); - } - } - - @Test - public void repository_injection_test_no_mongodb_for_aggregate() { - try { - injector.getInstance( - Key.get(TypeLiteral.get(Types.newParameterizedType(Repository.class, Dummy5.class, Long.class)), - Morphia.class)); - } catch (ProvisionException e) { - Assertions.assertThat(e.getCause().getMessage()) - .isEqualTo(SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATASTORE_CONFIGURATION).getMessage()); - } - } - - @Test - public void repository_injection_async_client() { - try { - injector.getInstance( - Key.get(TypeLiteral.get(Types.newParameterizedType(Repository.class, Dummy6.class, Long.class)), - Morphia.class)); - } catch (ProvisionException e) { - Assertions.assertThat(e.getCause().getMessage()) - .isEqualTo(SeedException.createNew(MorphiaErrorCodes.ERROR_ASYNC_CLIENT).getMessage()); - } - } - - - @Test - public void mongodb_repository_test() { - Assertions.assertThat(userRepository).isNotNull(); - User user1 = getUser(1L, "N°", "1"); - userRepository.persist(user1); - User user2 = userRepository.load(user1.getEntityId()); - Assertions.assertThat(user1.getId()).isEqualTo(user2.getId()); - Assertions.assertThat(user1.getEntityId()).isEqualTo(user2.getEntityId()); - userRepository.delete(user1); - User user3 = userRepository.load(user1.getEntityId()); - Assertions.assertThat(user3).isEqualTo(null); - User user5 = getUser(2L, "N°", "2"); - userRepository.delete(user5); - userRepository.save(user5); - User user6 = userRepository.load(user5.getEntityId()); - Assertions.assertThat(user6.getId()).isEqualTo(user5.getId()); - userRepository.delete(user5); - user6 = userRepository.load(user5.getEntityId()); - Assertions.assertThat(user6).isEqualTo(null); - userRepository.persist(user5); - Assertions.assertThat(userRepository.load(2L)).isNotEqualTo(null); - } - - public User getUser(long id, String firstname, String lastName) { - return new User(id, firstname, lastName, new Address("France", "75001", "Paris", "Champ Elysee avenue", 1)); - } - -} +/** + * Copyright (c) 2013-2015, The SeedStack authors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.seedstack.mongodb.morphia; + +import com.google.inject.*; +import com.google.inject.util.Types; +import org.assertj.core.api.Assertions; +import org.junit.Test; +import org.seedstack.business.domain.Repository; +import org.seedstack.mongodb.morphia.internal.MorphiaErrorCodes; +import org.seedstack.seed.SeedException; +import org.seedstack.seed.it.AbstractSeedIT; +import org.seedstack.mongodb.morphia.fixtures.dummyobject.*; +import org.seedstack.mongodb.morphia.fixtures.user.Address; +import org.seedstack.mongodb.morphia.fixtures.user.User; + +public class MongodbRepositoryIT extends AbstractSeedIT { + + @Inject + @Morphia + private Repository userRepository; + + @Inject + private Injector injector; + + @Test + public void repository_injection_test_no_client_for_aggregate() { + try { + + injector.getInstance( + Key.get(TypeLiteral.get(Types.newParameterizedType(Repository.class, Dummy1.class, Long.class)), + Morphia.class)); + } catch (ProvisionException e) { + Assertions.assertThat(e.getCause().getMessage()) + .isEqualTo(SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATASTORE_CLIENT).getMessage()); + } + } + + @Test + public void repository_injection_test_no_dbName_for_aggregate() { + try { + injector.getInstance( + Key.get(TypeLiteral.get(Types.newParameterizedType(Repository.class, Dummy2.class, Long.class)), + Morphia.class)); + } catch (ProvisionException e) { + Assertions.assertThat(e.getCause().getMessage()) + .isEqualTo(SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATASTORE_DATABASE).getMessage()); + } + } + + @Test + public void repository_injection_test_no_mongoDb_client() { + try { + injector.getInstance( + Key.get(TypeLiteral.get(Types.newParameterizedType(Repository.class, Dummy3.class, Long.class)), + Morphia.class)); + } catch (ProvisionException e) { + Assertions.assertThat(e.getCause().getMessage()) + .isEqualTo(SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATASTORE_CLIENT).getMessage()); + } + } + + @Test + public void repository_injection_test_no_mongoDb_database() { + try { + injector.getInstance( + Key.get(TypeLiteral.get(Types.newParameterizedType(Repository.class, Dummy4.class, Long.class)), + Morphia.class)); + } catch (ProvisionException e) { + Assertions.assertThat(e.getCause().getMessage()) + .isEqualTo(SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATABASE_NAME).getMessage()); + } + } + + @Test + public void repository_injection_test_no_mongodb_for_aggregate() { + try { + injector.getInstance( + Key.get(TypeLiteral.get(Types.newParameterizedType(Repository.class, Dummy5.class, Long.class)), + Morphia.class)); + } catch (ProvisionException e) { + Assertions.assertThat(e.getCause().getMessage()) + .isEqualTo(SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATASTORE_CONFIGURATION).getMessage()); + } + } + + @Test + public void repository_injection_async_client() { + try { + injector.getInstance( + Key.get(TypeLiteral.get(Types.newParameterizedType(Repository.class, Dummy6.class, Long.class)), + Morphia.class)); + } catch (ProvisionException e) { + Assertions.assertThat(e.getCause().getMessage()) + .isEqualTo(SeedException.createNew(MorphiaErrorCodes.ERROR_ASYNC_CLIENT).getMessage()); + } + } + + + @Test + public void mongodb_repository_test() { + Assertions.assertThat(userRepository).isNotNull(); + User user1 = getUser(1L, "N°", "1"); + userRepository.persist(user1); + User user2 = userRepository.load(user1.getEntityId()); + Assertions.assertThat(user1.getId()).isEqualTo(user2.getId()); + Assertions.assertThat(user1.getEntityId()).isEqualTo(user2.getEntityId()); + userRepository.delete(user1); + User user3 = userRepository.load(user1.getEntityId()); + Assertions.assertThat(user3).isEqualTo(null); + User user5 = getUser(2L, "N°", "2"); + userRepository.delete(user5); + userRepository.save(user5); + User user6 = userRepository.load(user5.getEntityId()); + Assertions.assertThat(user6.getId()).isEqualTo(user5.getId()); + userRepository.delete(user5); + user6 = userRepository.load(user5.getEntityId()); + Assertions.assertThat(user6).isEqualTo(null); + userRepository.persist(user5); + Assertions.assertThat(userRepository.load(2L)).isNotEqualTo(null); + } + + public User getUser(long id, String firstname, String lastName) { + return new User(id, firstname, lastName, new Address("France", "75001", "Paris", "Champ Elysee avenue", 1)); + } + +} diff --git a/morphia/src/it/java/org/seedstack/seed/persistence/mongodb/morphia/MorphiaIT.java b/morphia/src/it/java/org/seedstack/mongodb/morphia/MorphiaIT.java similarity index 77% rename from morphia/src/it/java/org/seedstack/seed/persistence/mongodb/morphia/MorphiaIT.java rename to morphia/src/it/java/org/seedstack/mongodb/morphia/MorphiaIT.java index a81be10..3c4d2d2 100644 --- a/morphia/src/it/java/org/seedstack/seed/persistence/mongodb/morphia/MorphiaIT.java +++ b/morphia/src/it/java/org/seedstack/mongodb/morphia/MorphiaIT.java @@ -1,33 +1,32 @@ -/** - * Copyright (c) 2013-2015, The SeedStack authors - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -package org.seedstack.seed.persistence.mongodb.morphia; - -import org.assertj.core.api.Assertions; -import org.junit.Test; -import org.mongodb.morphia.Datastore; -import org.mongodb.morphia.Key; -import org.seedstack.seed.it.AbstractSeedIT; -import org.seedstack.seed.mongodb.domain.user.Address; -import org.seedstack.seed.mongodb.domain.user.User; -import org.seedstack.seed.persistence.mongodb.api.MorphiaDatastore; - -import com.google.inject.Inject; - - -public class MorphiaIT extends AbstractSeedIT{ - @Inject - @MorphiaDatastore(clientName = "client1",dbName="db1") - private Datastore datastore; - - @Test - public void datastore_test(){ - User user = new User(1L,"Gerard", "menvuça", new Address("France", "78300", "Poissy", "avenue de l'europe", 1)); - Key keyUser = datastore.save(user); - Assertions.assertThat(keyUser).isNotNull(); - } -} +/** + * Copyright (c) 2013-2015, The SeedStack authors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.seedstack.mongodb.morphia; + +import org.assertj.core.api.Assertions; +import org.junit.Test; +import org.mongodb.morphia.Datastore; +import org.mongodb.morphia.Key; +import org.seedstack.seed.it.AbstractSeedIT; +import org.seedstack.mongodb.morphia.fixtures.user.Address; +import org.seedstack.mongodb.morphia.fixtures.user.User; + +import com.google.inject.Inject; + + +public class MorphiaIT extends AbstractSeedIT{ + @Inject + @MorphiaDatastore(clientName = "client1",dbName="db1") + private Datastore datastore; + + @Test + public void datastore_test(){ + User user = new User(1L,"Gerard", "menvuça", new Address("France", "78300", "Poissy", "avenue de l'europe", 1)); + Key keyUser = datastore.save(user); + Assertions.assertThat(keyUser).isNotNull(); + } +} diff --git a/morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy1.java b/morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy1.java similarity index 75% rename from morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy1.java rename to morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy1.java index 88a47c7..26b961f 100644 --- a/morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy1.java +++ b/morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy1.java @@ -1,19 +1,19 @@ -/** - * Copyright (c) 2013-2015, The SeedStack authors - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -package org.seedstack.seed.mongodb.domain.dummyobject; - -import org.seedstack.business.api.domain.BaseAggregateRoot; - -public class Dummy1 extends BaseAggregateRoot { - - @Override - public Long getEntityId() { - return null; - } - -} +/** + * Copyright (c) 2013-2015, The SeedStack authors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.seedstack.mongodb.morphia.fixtures.dummyobject; + +import org.seedstack.business.domain.BaseAggregateRoot; + +public class Dummy1 extends BaseAggregateRoot { + + @Override + public Long getEntityId() { + return null; + } + +} diff --git a/morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy2.java b/morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy2.java similarity index 75% rename from morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy2.java rename to morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy2.java index 4e28b08..b367f0c 100644 --- a/morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy2.java +++ b/morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy2.java @@ -1,19 +1,19 @@ -/** - * Copyright (c) 2013-2015, The SeedStack authors - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -package org.seedstack.seed.mongodb.domain.dummyobject; - -import org.seedstack.business.api.domain.BaseAggregateRoot; - -public class Dummy2 extends BaseAggregateRoot { - - @Override - public Long getEntityId() { - return null; - } - -} +/** + * Copyright (c) 2013-2015, The SeedStack authors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.seedstack.mongodb.morphia.fixtures.dummyobject; + +import org.seedstack.business.domain.BaseAggregateRoot; + +public class Dummy2 extends BaseAggregateRoot { + + @Override + public Long getEntityId() { + return null; + } + +} diff --git a/morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy3.java b/morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy3.java similarity index 75% rename from morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy3.java rename to morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy3.java index 3508d03..eeb0e91 100644 --- a/morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy3.java +++ b/morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy3.java @@ -1,19 +1,19 @@ -/** - * Copyright (c) 2013-2015, The SeedStack authors - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -package org.seedstack.seed.mongodb.domain.dummyobject; - -import org.seedstack.business.api.domain.BaseAggregateRoot; - -public class Dummy3 extends BaseAggregateRoot { - - @Override - public Long getEntityId() { - return null; - } - -} +/** + * Copyright (c) 2013-2015, The SeedStack authors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.seedstack.mongodb.morphia.fixtures.dummyobject; + +import org.seedstack.business.domain.BaseAggregateRoot; + +public class Dummy3 extends BaseAggregateRoot { + + @Override + public Long getEntityId() { + return null; + } + +} diff --git a/morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy4.java b/morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy4.java similarity index 76% rename from morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy4.java rename to morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy4.java index baad94b..8fd347a 100644 --- a/morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy4.java +++ b/morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy4.java @@ -1,20 +1,20 @@ -/** - * Copyright (c) 2013-2015, The SeedStack authors - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -package org.seedstack.seed.mongodb.domain.dummyobject; - -import org.seedstack.business.api.domain.BaseAggregateRoot; - -public class Dummy4 extends BaseAggregateRoot { - - @Override - public Long getEntityId() { - // TODO Auto-generated method stub - return null; - } - -} +/** + * Copyright (c) 2013-2015, The SeedStack authors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.seedstack.mongodb.morphia.fixtures.dummyobject; + +import org.seedstack.business.domain.BaseAggregateRoot; + +public class Dummy4 extends BaseAggregateRoot { + + @Override + public Long getEntityId() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy5.java b/morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy5.java similarity index 76% rename from morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy5.java rename to morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy5.java index e4d4344..6d7ddf8 100644 --- a/morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy5.java +++ b/morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy5.java @@ -1,20 +1,20 @@ -/** - * Copyright (c) 2013-2015, The SeedStack authors - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -package org.seedstack.seed.mongodb.domain.dummyobject; - -import org.seedstack.business.api.domain.BaseAggregateRoot; - -public class Dummy5 extends BaseAggregateRoot { - - @Override - public Long getEntityId() { - // TODO Auto-generated method stub - return null; - } - +/** + * Copyright (c) 2013-2015, The SeedStack authors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.seedstack.mongodb.morphia.fixtures.dummyobject; + +import org.seedstack.business.domain.BaseAggregateRoot; + +public class Dummy5 extends BaseAggregateRoot { + + @Override + public Long getEntityId() { + // TODO Auto-generated method stub + return null; + } + } \ No newline at end of file diff --git a/morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy6.java b/morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy6.java similarity index 76% rename from morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy6.java rename to morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy6.java index fe1eb14..006aeb4 100644 --- a/morphia/src/it/java/org/seedstack/seed/mongodb/domain/dummyobject/Dummy6.java +++ b/morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/dummyobject/Dummy6.java @@ -1,20 +1,20 @@ -/** - * Copyright (c) 2013-2015, The SeedStack authors - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -package org.seedstack.seed.mongodb.domain.dummyobject; - -import org.seedstack.business.api.domain.BaseAggregateRoot; - -public class Dummy6 extends BaseAggregateRoot { - - @Override - public Long getEntityId() { - // TODO Auto-generated method stub - return null; - } - +/** + * Copyright (c) 2013-2015, The SeedStack authors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.seedstack.mongodb.morphia.fixtures.dummyobject; + +import org.seedstack.business.domain.BaseAggregateRoot; + +public class Dummy6 extends BaseAggregateRoot { + + @Override + public Long getEntityId() { + // TODO Auto-generated method stub + return null; + } + } \ No newline at end of file diff --git a/morphia/src/it/java/org/seedstack/seed/mongodb/domain/user/Address.java b/morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/user/Address.java similarity index 89% rename from morphia/src/it/java/org/seedstack/seed/mongodb/domain/user/Address.java rename to morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/user/Address.java index 136aee9..e7ed0a4 100644 --- a/morphia/src/it/java/org/seedstack/seed/mongodb/domain/user/Address.java +++ b/morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/user/Address.java @@ -1,67 +1,67 @@ -/** - * Copyright (c) 2013-2015, The SeedStack authors - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -package org.seedstack.seed.mongodb.domain.user; - -import org.mongodb.morphia.annotations.Embedded; -import org.seedstack.business.api.domain.ValueObject; - -@Embedded -public class Address implements ValueObject{ - private String country; - private String zipcode; - private String city; - private String street; - private Integer number; - - - - public Address() { - super(); - } - public Address(String country, String zipcode, String city, String street, Integer number) { - super(); - this.country = country; - this.zipcode = zipcode; - this.city = city; - this.street = street; - this.number = number; - } - public String getCountry() { - return country; - } - public void setCountry(String country) { - this.country = country; - } - public String getZipcode() { - return zipcode; - } - public void setZipcode(String zipcode) { - this.zipcode = zipcode; - } - public String getCity() { - return city; - } - public void setCity(String city) { - this.city = city; - } - public String getStreet() { - return street; - } - public void setStreet(String street) { - this.street = street; - } - public Integer getNumber() { - return number; - } - public void setNumber(Integer number) { - this.number = number; - } - - - -} +/** + * Copyright (c) 2013-2015, The SeedStack authors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.seedstack.mongodb.morphia.fixtures.user; + +import org.mongodb.morphia.annotations.Embedded; +import org.seedstack.business.domain.ValueObject; + +@Embedded +public class Address implements ValueObject{ + private String country; + private String zipcode; + private String city; + private String street; + private Integer number; + + + + public Address() { + super(); + } + public Address(String country, String zipcode, String city, String street, Integer number) { + super(); + this.country = country; + this.zipcode = zipcode; + this.city = city; + this.street = street; + this.number = number; + } + public String getCountry() { + return country; + } + public void setCountry(String country) { + this.country = country; + } + public String getZipcode() { + return zipcode; + } + public void setZipcode(String zipcode) { + this.zipcode = zipcode; + } + public String getCity() { + return city; + } + public void setCity(String city) { + this.city = city; + } + public String getStreet() { + return street; + } + public void setStreet(String street) { + this.street = street; + } + public Integer getNumber() { + return number; + } + public void setNumber(Integer number) { + this.number = number; + } + + + +} diff --git a/morphia/src/it/java/org/seedstack/seed/mongodb/domain/user/User.java b/morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/user/User.java similarity index 87% rename from morphia/src/it/java/org/seedstack/seed/mongodb/domain/user/User.java rename to morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/user/User.java index a41f9a2..cbe6974 100644 --- a/morphia/src/it/java/org/seedstack/seed/mongodb/domain/user/User.java +++ b/morphia/src/it/java/org/seedstack/mongodb/morphia/fixtures/user/User.java @@ -1,80 +1,80 @@ -/** - * Copyright (c) 2013-2015, The SeedStack authors - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -package org.seedstack.seed.mongodb.domain.user; - -import org.mongodb.morphia.annotations.Entity; -import org.mongodb.morphia.annotations.Id; -import org.seedstack.business.api.domain.AggregateRoot; - -@Entity -public class User implements AggregateRoot{ - - - - public User() { - super(); - // TODO Auto-generated constructor stub - } - - public User(long id, String name, String lastname, Address address) { - super(); - this.id = id; - this.name = name; - this.lastname = lastname; - this.address = address; - } - - @Id - private long id; - - private String name; - - private String lastname; - - private Address address; - - - public long getId() { - return id; - } - - public void setId(long id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getLastname() { - return lastname; - } - - public void setLastname(String lastname) { - this.lastname = lastname; - } - - public Address getAddress() { - return address; - } - - public void setAddress(Address address) { - this.address = address; - } - - @Override - public Long getEntityId() { - return id; - } - - -} +/** + * Copyright (c) 2013-2015, The SeedStack authors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.seedstack.mongodb.morphia.fixtures.user; + +import org.mongodb.morphia.annotations.Entity; +import org.mongodb.morphia.annotations.Id; +import org.seedstack.business.domain.AggregateRoot; + +@Entity +public class User implements AggregateRoot{ + + + + public User() { + super(); + // TODO Auto-generated constructor stub + } + + public User(long id, String name, String lastname, Address address) { + super(); + this.id = id; + this.name = name; + this.lastname = lastname; + this.address = address; + } + + @Id + private long id; + + private String name; + + private String lastname; + + private Address address; + + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getLastname() { + return lastname; + } + + public void setLastname(String lastname) { + this.lastname = lastname; + } + + public Address getAddress() { + return address; + } + + public void setAddress(Address address) { + this.address = address; + } + + @Override + public Long getEntityId() { + return id; + } + + +} diff --git a/morphia/src/it/resources/META-INF/configuration/org.seedstack.seed.persistence.mongo.props b/morphia/src/it/resources/META-INF/configuration/org.seedstack.mongo.props similarity index 59% rename from morphia/src/it/resources/META-INF/configuration/org.seedstack.seed.persistence.mongo.props rename to morphia/src/it/resources/META-INF/configuration/org.seedstack.mongo.props index 277b291..28cc42f 100644 --- a/morphia/src/it/resources/META-INF/configuration/org.seedstack.seed.persistence.mongo.props +++ b/morphia/src/it/resources/META-INF/configuration/org.seedstack.mongo.props @@ -6,45 +6,45 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. # -[org.seedstack.seed.persistence.mongodb] +[org.seedstack.mongodb] clients = client1, client2, client3 -[org.seedstack.seed.persistence.mongodb.client.client1] +[org.seedstack.mongodb.client.client1] hosts = localhost option.connectionsPerHost = 50 databases = db1 -[org.seedstack.seed.persistence.mongodb.client.client2] +[org.seedstack.mongodb.client.client2] async = true hosts = localhost setting.connectionPool.maxSize = 50 databases = db2 -[org.seedstack.seed.persistence.mongodb.client.client3] +[org.seedstack.mongodb.client.client3] async = true hosts = localhost databases = db2 alias.db2 = db3 -[org.seedstack.seed.mongodb.domain.user.*] +[org.seedstack.mongodb.morphia.fixtures.user.*] morphia.clientName = client1 morphia.dbName = db1 -[org.seedstack.seed.mongodb.domain.dummyobject.Dummy1] +[org.seedstack.mongodb.morphia.fixtures.dummyobject.Dummy1] morphia.dbName = db4 -[org.seedstack.seed.mongodb.domain.dummyobject.Dummy2] +[org.seedstack.mongodb.morphia.fixtures.dummyobject.Dummy2] morphia.clientName = clien1 -[org.seedstack.seed.mongodb.domain.dummyobject.Dummy3] +[org.seedstack.mongodb.morphia.fixtures.dummyobject.Dummy3] morphia.dbName = client7 morphia.dbName = db6 -[org.seedstack.seed.mongodb.domain.dummyobject.Dummy4] +[org.seedstack.mongodb.morphia.fixtures.dummyobject.Dummy4] morphia.clientName = client1 morphia.dbName = db6 -[org.seedstack.seed.mongodb.domain.dummyobject.Dummy6] +[org.seedstack.mongodb.morphia.fixtures.dummyobject.Dummy6] morphia.clientName = client2 morphia.dbName = db2 \ No newline at end of file diff --git a/morphia/src/main/java/org/seedstack/seed/business/mongodb/BaseMongodbRepository.java b/morphia/src/main/java/org/seedstack/mongodb/morphia/BaseMongodbRepository.java similarity index 85% rename from morphia/src/main/java/org/seedstack/seed/business/mongodb/BaseMongodbRepository.java rename to morphia/src/main/java/org/seedstack/mongodb/morphia/BaseMongodbRepository.java index 25a0faa..6392d3c 100644 --- a/morphia/src/main/java/org/seedstack/seed/business/mongodb/BaseMongodbRepository.java +++ b/morphia/src/main/java/org/seedstack/mongodb/morphia/BaseMongodbRepository.java @@ -5,13 +5,13 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.seedstack.seed.business.mongodb; +package org.seedstack.mongodb.morphia; import org.mongodb.morphia.Datastore; -import org.seedstack.business.api.domain.AggregateRoot; -import org.seedstack.business.api.domain.BaseRepository; -import org.seedstack.seed.core.api.Application; -import org.seedstack.seed.persistence.mongodb.internal.MorphiaPlugin; +import org.seedstack.business.domain.AggregateRoot; +import org.seedstack.business.domain.BaseRepository; +import org.seedstack.seed.Application; +import org.seedstack.mongodb.morphia.internal.MorphiaPlugin; import com.google.inject.Inject; import com.google.inject.Injector; diff --git a/morphia/src/main/java/org/seedstack/seed/persistence/mongodb/api/Morphia.java b/morphia/src/main/java/org/seedstack/mongodb/morphia/Morphia.java similarity index 92% rename from morphia/src/main/java/org/seedstack/seed/persistence/mongodb/api/Morphia.java rename to morphia/src/main/java/org/seedstack/mongodb/morphia/Morphia.java index 9c974e0..cdcc388 100644 --- a/morphia/src/main/java/org/seedstack/seed/persistence/mongodb/api/Morphia.java +++ b/morphia/src/main/java/org/seedstack/mongodb/morphia/Morphia.java @@ -5,7 +5,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.seedstack.seed.persistence.mongodb.api; +package org.seedstack.mongodb.morphia; import javax.inject.Qualifier; import java.lang.annotation.Documented; diff --git a/morphia/src/main/java/org/seedstack/seed/persistence/mongodb/api/MorphiaDatastore.java b/morphia/src/main/java/org/seedstack/mongodb/morphia/MorphiaDatastore.java similarity index 91% rename from morphia/src/main/java/org/seedstack/seed/persistence/mongodb/api/MorphiaDatastore.java rename to morphia/src/main/java/org/seedstack/mongodb/morphia/MorphiaDatastore.java index 2b952d7..8868832 100644 --- a/morphia/src/main/java/org/seedstack/seed/persistence/mongodb/api/MorphiaDatastore.java +++ b/morphia/src/main/java/org/seedstack/mongodb/morphia/MorphiaDatastore.java @@ -1,31 +1,31 @@ -/** - * Copyright (c) 2013-2015, The SeedStack authors - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -package org.seedstack.seed.persistence.mongodb.api; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -import com.google.inject.BindingAnnotation; - -/** - * This qualifier marks the use of the Mongodb persistence. - * - * @author redouane.loulou@ext.mpsa.com - * Date: 20/10/2015 - */ -@Documented -@Retention(RetentionPolicy.RUNTIME) -@Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD }) -@BindingAnnotation -public @interface MorphiaDatastore { - String clientName(); - String dbName(); +/** + * Copyright (c) 2013-2015, The SeedStack authors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.seedstack.mongodb.morphia; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import com.google.inject.BindingAnnotation; + +/** + * This qualifier marks the use of the Mongodb persistence. + * + * @author redouane.loulou@ext.mpsa.com + * Date: 20/10/2015 + */ +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD }) +@BindingAnnotation +public @interface MorphiaDatastore { + String clientName(); + String dbName(); } \ No newline at end of file diff --git a/morphia/src/main/java/org/seedstack/seed/persistence/mongodb/internal/DatastoreProvider.java b/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/DatastoreProvider.java similarity index 84% rename from morphia/src/main/java/org/seedstack/seed/persistence/mongodb/internal/DatastoreProvider.java rename to morphia/src/main/java/org/seedstack/mongodb/morphia/internal/DatastoreProvider.java index a560103..d149466 100644 --- a/morphia/src/main/java/org/seedstack/seed/persistence/mongodb/internal/DatastoreProvider.java +++ b/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/DatastoreProvider.java @@ -1,53 +1,53 @@ -/** - * Copyright (c) 2013-2015, The SeedStack authors - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -package org.seedstack.seed.persistence.mongodb.internal; - -import org.mongodb.morphia.Datastore; -import org.mongodb.morphia.Morphia; -import org.seedstack.seed.core.api.Application; -import org.seedstack.seed.persistence.mongodb.api.MorphiaDatastore; - -import com.google.inject.Inject; -import com.google.inject.Injector; -import com.google.inject.Key; -import com.google.inject.Provider; -import com.google.inject.name.Names; -import com.mongodb.MongoClient; -/** - * - * @author redouane.loulou@ext.mpsa.com - * - */ -class DatastoreProvider implements Provider { - - @Inject - private Injector injector; - - @Inject - private Application application; - - private Class mappedclass; - - private MorphiaDatastore morphiaDatastore; - - private final Morphia morphia; - - @Override - public Datastore get() { - MongoClient mongoClient = injector - .getInstance(Key.get(MongoClient.class, Names.named(morphiaDatastore.clientName()))); - return morphia.createDatastore(mongoClient, morphiaDatastore.dbName()); - } - - public DatastoreProvider(MorphiaDatastore morphiaDatastore, Morphia morphia) { - super(); - this.morphiaDatastore = morphiaDatastore; - this.morphia = morphia; - } - -} +/** + * Copyright (c) 2013-2015, The SeedStack authors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.seedstack.mongodb.morphia.internal; + +import org.mongodb.morphia.Datastore; +import org.mongodb.morphia.Morphia; +import org.seedstack.seed.Application; +import org.seedstack.mongodb.morphia.MorphiaDatastore; + +import com.google.inject.Inject; +import com.google.inject.Injector; +import com.google.inject.Key; +import com.google.inject.Provider; +import com.google.inject.name.Names; +import com.mongodb.MongoClient; +/** + * + * @author redouane.loulou@ext.mpsa.com + * + */ +class DatastoreProvider implements Provider { + + @Inject + private Injector injector; + + @Inject + private Application application; + + private Class mappedclass; + + private MorphiaDatastore morphiaDatastore; + + private final Morphia morphia; + + @Override + public Datastore get() { + MongoClient mongoClient = injector + .getInstance(Key.get(MongoClient.class, Names.named(morphiaDatastore.clientName()))); + return morphia.createDatastore(mongoClient, morphiaDatastore.dbName()); + } + + public DatastoreProvider(MorphiaDatastore morphiaDatastore, Morphia morphia) { + super(); + this.morphiaDatastore = morphiaDatastore; + this.morphia = morphia; + } + +} diff --git a/morphia/src/main/java/org/seedstack/seed/business/mongodb/internal/DefaultMongodbRepository.java b/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/DefaultMongodbRepository.java similarity index 81% rename from morphia/src/main/java/org/seedstack/seed/business/mongodb/internal/DefaultMongodbRepository.java rename to morphia/src/main/java/org/seedstack/mongodb/morphia/internal/DefaultMongodbRepository.java index ef3a09c..5de4b4c 100644 --- a/morphia/src/main/java/org/seedstack/seed/business/mongodb/internal/DefaultMongodbRepository.java +++ b/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/DefaultMongodbRepository.java @@ -1,53 +1,53 @@ -/** - * Copyright (c) 2013-2015, The SeedStack authors - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -package org.seedstack.seed.business.mongodb.internal; - -import javax.inject.Inject; - -import org.seedstack.business.api.domain.AggregateRoot; -import org.seedstack.business.spi.GenericImplementation; -import org.seedstack.seed.business.mongodb.BaseMongodbRepository; -import org.seedstack.seed.core.utils.SeedCheckUtils; -import org.seedstack.seed.persistence.mongodb.api.Morphia; - -import com.google.inject.assistedinject.Assisted; - -/** - * Default Morphia implementation for Repository. Used only when no implementation is provided for an aggregate. - * - * To inject this implementation you have to use {@link org.seedstack.business.api.domain.Repository} as follows: - *
- * {@literal @}Inject
- * Repository{@literal } myAggregateRepository;
- * 
- * - * @param the aggregate root - * @param the aggregate key - * @author redouane.loulou@ext.mpsa.com - * @see org.seedstack.business.api.domain.Repository - * @see org.seedstack.business.mongodb.BaseMongodbRepository - */ -@Morphia -@GenericImplementation -public class DefaultMongodbRepository, KEY> extends BaseMongodbRepository { - - /** - * Constructs a DefaultMongodbRepository. - * - * @param genericClasses the resolved generics for the aggregate root class and the key class - */ - @SuppressWarnings("unchecked") - @Inject - public DefaultMongodbRepository(@Assisted Object[] genericClasses) { - Object[] clonedClasses = genericClasses.clone(); - SeedCheckUtils.checkIfNotNull(clonedClasses); - SeedCheckUtils.checkIf(clonedClasses.length == 2); - this.aggregateRootClass = (Class) clonedClasses[0]; - this.keyClass = (Class) clonedClasses[1]; - } +/** + * Copyright (c) 2013-2015, The SeedStack authors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.seedstack.mongodb.morphia.internal; + +import javax.inject.Inject; + +import org.seedstack.business.domain.AggregateRoot; +import org.seedstack.business.spi.GenericImplementation; +import org.seedstack.mongodb.morphia.BaseMongodbRepository; +import org.seedstack.seed.core.utils.SeedCheckUtils; +import org.seedstack.mongodb.morphia.Morphia; + +import com.google.inject.assistedinject.Assisted; + +/** + * Default Morphia implementation for Repository. Used only when no implementation is provided for an aggregate. + * + * To inject this implementation you have to use {@link org.seedstack.business.domain.Repository} as follows: + *
+ * {@literal @}Inject
+ * Repository{@literal } myAggregateRepository;
+ * 
+ * + * @param the aggregate root + * @param the aggregate key + * @author redouane.loulou@ext.mpsa.com + * @see org.seedstack.business.domain.Repository + * @see org.seedstack.business.mongodb.BaseMongodbRepository + */ +@Morphia +@GenericImplementation +public class DefaultMongodbRepository, KEY> extends BaseMongodbRepository { + + /** + * Constructs a DefaultMongodbRepository. + * + * @param genericClasses the resolved generics for the aggregate root class and the key class + */ + @SuppressWarnings("unchecked") + @Inject + public DefaultMongodbRepository(@Assisted Object[] genericClasses) { + Object[] clonedClasses = genericClasses.clone(); + SeedCheckUtils.checkIfNotNull(clonedClasses); + SeedCheckUtils.checkIf(clonedClasses.length == 2); + this.aggregateRootClass = (Class) clonedClasses[0]; + this.keyClass = (Class) clonedClasses[1]; + } } \ No newline at end of file diff --git a/morphia/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MorphiaDatastoreImpl.java b/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/MorphiaDatastoreImpl.java similarity index 89% rename from morphia/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MorphiaDatastoreImpl.java rename to morphia/src/main/java/org/seedstack/mongodb/morphia/internal/MorphiaDatastoreImpl.java index 3eb2f54..bcb929f 100644 --- a/morphia/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MorphiaDatastoreImpl.java +++ b/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/MorphiaDatastoreImpl.java @@ -1,74 +1,74 @@ -/** - * Copyright (c) 2013-2015, The SeedStack authors - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -package org.seedstack.seed.persistence.mongodb.internal; - -import java.io.Serializable; -import java.lang.annotation.Annotation; - -import org.seedstack.seed.persistence.mongodb.api.MorphiaDatastore; -/** - * - * @author redouane.loulou@ext.mpsa.com - * - */ -class MorphiaDatastoreImpl implements MorphiaDatastore, Serializable { - - private static final long serialVersionUID = 3861460142806494075L; - private String clientName; - private String dbName; - - public MorphiaDatastoreImpl(String clientName, String dbName) { - this.clientName = clientName; - this.dbName = dbName; - } - - @Override - public Class annotationType() { - return MorphiaDatastore.class; - } - - @Override - public String dbName() { - return dbName; - } - - @Override - public String clientName() { - return clientName; - } - - @Override - public int hashCode() { - return ((127 * "clientName".hashCode()) ^ clientName.hashCode()) - + ((127 * "dbName".hashCode()) ^ dbName.hashCode()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (!(obj instanceof MorphiaDatastore)) - return false; - MorphiaDatastoreImpl other = (MorphiaDatastoreImpl) obj; - if (clientName == null) { - if (other.clientName != null) - return false; - } else if (!clientName.equals(other.clientName)) - return false; - if (dbName == null) { - if (other.dbName != null) - return false; - } else if (!dbName.equals(other.dbName)) - return false; - return true; - } - - +/** + * Copyright (c) 2013-2015, The SeedStack authors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.seedstack.mongodb.morphia.internal; + +import java.io.Serializable; +import java.lang.annotation.Annotation; + +import org.seedstack.mongodb.morphia.MorphiaDatastore; +/** + * + * @author redouane.loulou@ext.mpsa.com + * + */ +class MorphiaDatastoreImpl implements MorphiaDatastore, Serializable { + + private static final long serialVersionUID = 3861460142806494075L; + private String clientName; + private String dbName; + + public MorphiaDatastoreImpl(String clientName, String dbName) { + this.clientName = clientName; + this.dbName = dbName; + } + + @Override + public Class annotationType() { + return MorphiaDatastore.class; + } + + @Override + public String dbName() { + return dbName; + } + + @Override + public String clientName() { + return clientName; + } + + @Override + public int hashCode() { + return ((127 * "clientName".hashCode()) ^ clientName.hashCode()) + + ((127 * "dbName".hashCode()) ^ dbName.hashCode()); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (!(obj instanceof MorphiaDatastore)) + return false; + MorphiaDatastoreImpl other = (MorphiaDatastoreImpl) obj; + if (clientName == null) { + if (other.clientName != null) + return false; + } else if (!clientName.equals(other.clientName)) + return false; + if (dbName == null) { + if (other.dbName != null) + return false; + } else if (!dbName.equals(other.dbName)) + return false; + return true; + } + + } \ No newline at end of file diff --git a/morphia/src/main/java/org/seedstack/seed/persistence/mongodb/api/MorphiaErrorCodes.java b/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/MorphiaErrorCodes.java similarity index 84% rename from morphia/src/main/java/org/seedstack/seed/persistence/mongodb/api/MorphiaErrorCodes.java rename to morphia/src/main/java/org/seedstack/mongodb/morphia/internal/MorphiaErrorCodes.java index 8cf9f04..75a4bb8 100644 --- a/morphia/src/main/java/org/seedstack/seed/persistence/mongodb/api/MorphiaErrorCodes.java +++ b/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/MorphiaErrorCodes.java @@ -5,9 +5,9 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.seedstack.seed.persistence.mongodb.api; +package org.seedstack.mongodb.morphia.internal; -import org.seedstack.seed.core.api.ErrorCode; +import org.seedstack.seed.ErrorCode; /** * diff --git a/morphia/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MorphiaModule.java b/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/MorphiaModule.java similarity index 88% rename from morphia/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MorphiaModule.java rename to morphia/src/main/java/org/seedstack/mongodb/morphia/internal/MorphiaModule.java index 73075e2..6615888 100644 --- a/morphia/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MorphiaModule.java +++ b/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/MorphiaModule.java @@ -1,50 +1,50 @@ -/** - * Copyright (c) 2013-2015, The SeedStack authors - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -/** - * - */ -package org.seedstack.seed.persistence.mongodb.internal; - -import java.util.Collection; - -import org.mongodb.morphia.Datastore; -import org.mongodb.morphia.Morphia; -import org.seedstack.seed.persistence.mongodb.api.MorphiaDatastore; - -import com.google.inject.AbstractModule; -import com.google.inject.Key; - -/** - * @author redouane.loulou@ext.mpsa.com - * - */ -class MorphiaModule extends AbstractModule{ - - private Collection morphiaDatastoresAnnotation; - private final Morphia morphia; - - public MorphiaModule(Collection morphiaDatastoresAnnotation, Morphia morphia) { - super(); - this.morphiaDatastoresAnnotation = morphiaDatastoresAnnotation; - this.morphia = morphia; - } - - @Override - protected void configure() { - if(morphiaDatastoresAnnotation!=null && !morphiaDatastoresAnnotation.isEmpty()){ - for (MorphiaDatastore morphiaDatastore : morphiaDatastoresAnnotation) { - DatastoreProvider datastoreProvider = new DatastoreProvider(morphiaDatastore, morphia); - requestInjection(datastoreProvider); - bind(Key.get(Datastore.class, morphiaDatastore)).toProvider(datastoreProvider); - } - } - } - - - -} +/** + * Copyright (c) 2013-2015, The SeedStack authors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +/** + * + */ +package org.seedstack.mongodb.morphia.internal; + +import java.util.Collection; + +import org.mongodb.morphia.Datastore; +import org.mongodb.morphia.Morphia; +import org.seedstack.mongodb.morphia.MorphiaDatastore; + +import com.google.inject.AbstractModule; +import com.google.inject.Key; + +/** + * @author redouane.loulou@ext.mpsa.com + * + */ +class MorphiaModule extends AbstractModule{ + + private Collection morphiaDatastoresAnnotation; + private final Morphia morphia; + + public MorphiaModule(Collection morphiaDatastoresAnnotation, Morphia morphia) { + super(); + this.morphiaDatastoresAnnotation = morphiaDatastoresAnnotation; + this.morphia = morphia; + } + + @Override + protected void configure() { + if(morphiaDatastoresAnnotation!=null && !morphiaDatastoresAnnotation.isEmpty()){ + for (MorphiaDatastore morphiaDatastore : morphiaDatastoresAnnotation) { + DatastoreProvider datastoreProvider = new DatastoreProvider(morphiaDatastore, morphia); + requestInjection(datastoreProvider); + bind(Key.get(Datastore.class, morphiaDatastore)).toProvider(datastoreProvider); + } + } + } + + + +} diff --git a/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/MorphiaPlugin.java b/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/MorphiaPlugin.java new file mode 100644 index 0000000..320a562 --- /dev/null +++ b/morphia/src/main/java/org/seedstack/mongodb/morphia/internal/MorphiaPlugin.java @@ -0,0 +1,157 @@ +/** + * Copyright (c) 2013-2015, The SeedStack authors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.seedstack.mongodb.morphia.internal; + +import io.nuun.kernel.api.Plugin; +import io.nuun.kernel.api.plugin.InitState; +import io.nuun.kernel.api.plugin.PluginException; +import io.nuun.kernel.api.plugin.context.InitContext; +import io.nuun.kernel.api.plugin.request.ClasspathScanRequest; +import io.nuun.kernel.core.AbstractPlugin; +import org.apache.commons.configuration.Configuration; +import org.kametic.specifications.Specification; +import org.mongodb.morphia.Morphia; +import org.mongodb.morphia.annotations.Embedded; +import org.mongodb.morphia.annotations.Entity; +import org.seedstack.mongodb.morphia.MorphiaDatastore; +import org.seedstack.seed.Application; +import org.seedstack.seed.SeedException; +import org.seedstack.seed.core.internal.application.ApplicationPlugin; +import org.seedstack.seed.core.utils.BaseClassSpecifications; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; + +import static org.seedstack.seed.core.utils.BaseClassSpecifications.classIsAbstract; + +/** + * + * @author redouane.loulou@ext.mpsa.com + */ +public class MorphiaPlugin extends AbstractPlugin { + + private static final Specification> MORPHIA_MAPPED_CLASSES_SPECS = morphiaSpecification(); + + private Collection morphiaDatastores = new HashSet(); + + private final Morphia morphia = new Morphia(); + + + @Override + public String name() { + return "seed-persistence-morphia-plugin"; + } + + @Override + public InitState init(InitContext initContext) { + Application application = null; + for (Plugin plugin : initContext.pluginsRequired()) { + if (plugin instanceof ApplicationPlugin) { + application = ((ApplicationPlugin) plugin).getApplication(); + } + } + + if (application == null) { + throw new PluginException("Unable to find application plugin"); + } + + if (MORPHIA_MAPPED_CLASSES_SPECS != null) { + Collection> morphiaScannedClasses = initContext.scannedTypesBySpecification().get(MORPHIA_MAPPED_CLASSES_SPECS); + + if (morphiaScannedClasses != null && !morphiaScannedClasses.isEmpty()) { + morphia.map(new HashSet(morphiaScannedClasses)); + for (Class morphiaClass : morphiaScannedClasses) { + MorphiaDatastore morphiaDatastore = getMongoDatastore(application, morphiaClass); + if (!morphiaDatastores.contains(morphiaDatastore)) { + morphiaDatastores.add(morphiaDatastore); + } + } + } + } + return InitState.INITIALIZED; + } + + /** + * Returns an instance of the annotation MorphiaDatastore if the morphia configuration is ok. + * + * @param application Application + * @param morphiaClass persistent morphia object + * @return MorphiaDatastore + */ + public static MorphiaDatastore getMongoDatastore(Application application, Class morphiaClass) { + Configuration morphiaEntityConfiguration = application.getConfiguration(morphiaClass).subset("morphia"); + if (morphiaEntityConfiguration.isEmpty()) { + throw SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATASTORE_CONFIGURATION).put("aggregate", + morphiaClass.getName()); + } + String clientName = morphiaEntityConfiguration.getString("clientName"); + String dbName = morphiaEntityConfiguration.getString("dbName"); + if (clientName == null) { + throw SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATASTORE_CLIENT) + .put("aggregate", morphiaClass.getName()).put("clientName", clientName); + } + if (dbName == null) { + throw SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATASTORE_DATABASE) + .put("aggregate", morphiaClass.getName()).put("clientName", clientName).put("dbName", dbName); + } + checkMongoClient(application, morphiaClass, clientName, dbName); + MorphiaDatastore morphiaDatastore = new MorphiaDatastoreImpl(clientName, dbName); + return morphiaDatastore; + } + + private static void checkMongoClient(Application application, Class mappedClass, String clientName, String dbName) { + Configuration configurationClientMongodb = application.getConfiguration().subset(MongoDbPlugin.CONFIGURATION_PREFIX + ".client." + clientName); + if (configurationClientMongodb.isEmpty()) { + throw SeedException.createNew(MongoDbErrorCodes.UNKNOWN_CLIENT_SPECIFIED) + .put("aggregate", mappedClass.getName()).put("clientName", clientName).put("dbName", dbName); + } + boolean async = configurationClientMongodb.getBoolean("async", false); + if (async) { + throw SeedException.createNew(MorphiaErrorCodes.ERROR_ASYNC_CLIENT) + .put("aggregate", mappedClass.getName()).put("clientName", clientName).put("dbName", dbName); + } + String[] dbNames = configurationClientMongodb.getStringArray("databases"); + if (dbNames != null && dbNames.length > 0 && !Arrays.asList(dbNames).contains(dbName)) { + throw SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATABASE_NAME) + .put("aggregate", mappedClass.getName()).put("clientName", clientName).put("dbName", dbName); + } + } + + @Override + public Collection> requiredPlugins() { + Collection> plugins = new ArrayList>(); + plugins.add(ApplicationPlugin.class); + plugins.add(MongoDbPlugin.class); + return plugins; + } + + @Override + public Collection classpathScanRequests() { + return classpathScanRequestBuilder().specification(MORPHIA_MAPPED_CLASSES_SPECS).build(); + } + + @SuppressWarnings("unchecked") + private static Specification> morphiaSpecification() { + Specification> specification; + specification = BaseClassSpecifications.and( + BaseClassSpecifications.or(BaseClassSpecifications.classAnnotatedWith(Entity.class), + BaseClassSpecifications.classAnnotatedWith(Embedded.class)), + BaseClassSpecifications.not(classIsAbstract())); + + return specification; + } + + @Override + public Object nativeUnitModule() { + return new MorphiaModule(morphiaDatastores, morphia); + } + + +} \ No newline at end of file diff --git a/morphia/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MorphiaPlugin.java b/morphia/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MorphiaPlugin.java deleted file mode 100644 index b658421..0000000 --- a/morphia/src/main/java/org/seedstack/seed/persistence/mongodb/internal/MorphiaPlugin.java +++ /dev/null @@ -1,167 +0,0 @@ -/** - * Copyright (c) 2013-2015, The SeedStack authors - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ -package org.seedstack.seed.persistence.mongodb.internal; - -import static org.seedstack.seed.core.utils.BaseClassSpecifications.classIsAbstract; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashSet; - -import org.apache.commons.configuration.Configuration; -import org.kametic.specifications.Specification; -import org.mongodb.morphia.Morphia; -import org.mongodb.morphia.annotations.Embedded; -import org.mongodb.morphia.annotations.Entity; -import org.seedstack.seed.core.api.Application; -import org.seedstack.seed.core.api.SeedException; -import org.seedstack.seed.core.internal.application.ApplicationPlugin; -import org.seedstack.seed.core.utils.BaseClassSpecifications; -import org.seedstack.seed.persistence.mongodb.api.MongoDbErrorCodes; -import org.seedstack.seed.persistence.mongodb.api.MorphiaDatastore; -import org.seedstack.seed.persistence.mongodb.api.MorphiaErrorCodes; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import io.nuun.kernel.api.Plugin; -import io.nuun.kernel.api.plugin.InitState; -import io.nuun.kernel.api.plugin.PluginException; -import io.nuun.kernel.api.plugin.context.InitContext; -import io.nuun.kernel.api.plugin.request.ClasspathScanRequest; -import io.nuun.kernel.core.AbstractPlugin; - -/** - * - * @author redouane.loulou@ext.mpsa.com - * - */ -public class MorphiaPlugin extends AbstractPlugin { - public static final String MONGO_PLUGIN_CONFIGURATION_PREFIX = "org.seedstack.seed.persistence.mongodb"; - - private static final Logger LOGGER = LoggerFactory.getLogger(MorphiaPlugin.class); - - private static final Specification> MORPHIA_MAPPED_CLASSES_SPECS = morphiaSpecification(); - - private Collection> morphiaScannedClasses; - - private Collection morphiaDatastores = new HashSet(); - - private final Morphia morphia = new Morphia(); - - - @Override - public String name() { - return "seed-persistence-morphia-plugin"; - } - - @Override - public InitState init(InitContext initContext) { - Application application = null; - for (Plugin plugin : initContext.pluginsRequired()) { - if (plugin instanceof ApplicationPlugin) { - application = ((ApplicationPlugin) plugin).getApplication(); - } - } - - if (application == null) { - throw new PluginException("Unable to find application plugin"); - } - - if(MORPHIA_MAPPED_CLASSES_SPECS!=null){ - morphiaScannedClasses = initContext.scannedTypesBySpecification().get(MORPHIA_MAPPED_CLASSES_SPECS); - - if(morphiaScannedClasses != null && !morphiaScannedClasses.isEmpty()){ - morphia.map(new HashSet(morphiaScannedClasses)); - for (Class morphiaClass : morphiaScannedClasses) { - MorphiaDatastore morphiaDatastore = getMongoDatastore(application, morphiaClass); - if(!morphiaDatastores.contains(morphiaDatastore)){ - morphiaDatastores.add(morphiaDatastore); - } - } - } - } - return InitState.INITIALIZED; - } - - /** - * if the morphia configuration is ok, Return an instance of the annatation MorphiaDatastore - * @param application Application - * @param morphiaClass persistent morphia object - * @return MorphiaDatastore - */ - public static MorphiaDatastore getMongoDatastore(Application application, Class morphiaClass) { - Configuration morphiaEntityConfiguration = application.getConfiguration(morphiaClass).subset("morphia"); - if (morphiaEntityConfiguration.isEmpty()) { - throw SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATASTORE_CONFIGURATION).put("aggregate", - morphiaClass.getName()); - } - String clientName = morphiaEntityConfiguration.getString("clientName"); - String dbName = morphiaEntityConfiguration.getString("dbName"); - if (clientName == null) { - throw SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATASTORE_CLIENT) - .put("aggregate", morphiaClass.getName()).put("clientName", clientName); - } - if (dbName == null) { - throw SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATASTORE_DATABASE) - .put("aggregate", morphiaClass.getName()).put("clientName", clientName).put("dbName", dbName); - } - checkMongoClient(application, morphiaClass, clientName, dbName); - MorphiaDatastore morphiaDatastore = new MorphiaDatastoreImpl(clientName, dbName); - return morphiaDatastore; - } - - private static void checkMongoClient(Application application, Class mappedClass, String clientName, String dbName) { - Configuration configurationClientMongodb = application.getConfiguration().subset(MongoDbPlugin.MONGO_PLUGIN_CONFIGURATION_PREFIX + ".client." + clientName); - if (configurationClientMongodb.isEmpty()) { - throw SeedException.createNew(MongoDbErrorCodes.UNKNOWN_CLIENT_SPECIFIED) - .put("aggregate", mappedClass.getName()).put("clientName", clientName).put("dbName", dbName); - } - boolean async = configurationClientMongodb.getBoolean("async", false); - if(async){ - throw SeedException.createNew(MorphiaErrorCodes.ERROR_ASYNC_CLIENT) - .put("aggregate", mappedClass.getName()).put("clientName", clientName).put("dbName", dbName); - } - String[] dbNames = configurationClientMongodb.getStringArray("databases"); - if (dbNames != null && dbNames.length>0 && !Arrays.asList(dbNames).contains(dbName)) { - throw SeedException.createNew(MorphiaErrorCodes.UNKNOW_DATABASE_NAME) - .put("aggregate", mappedClass.getName()).put("clientName", clientName).put("dbName", dbName); - } - } - - @Override - public Collection> requiredPlugins() { - Collection> plugins = new ArrayList>(); - plugins.add(ApplicationPlugin.class); - plugins.add(MongoDbPlugin.class); - return plugins; - } - - @Override - public Collection classpathScanRequests() { - return classpathScanRequestBuilder().specification(MORPHIA_MAPPED_CLASSES_SPECS).build(); - } - - @SuppressWarnings("unchecked") - private static Specification> morphiaSpecification() { - Specification> specification = null; - specification = BaseClassSpecifications.and( - BaseClassSpecifications.or(BaseClassSpecifications.classAnnotatedWith(Entity.class), - BaseClassSpecifications.classAnnotatedWith(Embedded.class)), - BaseClassSpecifications.not(classIsAbstract())); - - return specification; - } - - @Override - public Object nativeUnitModule() { - return new MorphiaModule(morphiaDatastores, morphia); - } - - -} \ No newline at end of file diff --git a/morphia/src/main/resources/META-INF/errors/org.seedstack.seed.persistence.mongodb.api.MorphiaErrorCodes.properties b/morphia/src/main/resources/META-INF/errors/org.seedstack.mongodb.morphia.internal.MorphiaErrorCodes.properties similarity index 100% rename from morphia/src/main/resources/META-INF/errors/org.seedstack.seed.persistence.mongodb.api.MorphiaErrorCodes.properties rename to morphia/src/main/resources/META-INF/errors/org.seedstack.mongodb.morphia.internal.MorphiaErrorCodes.properties diff --git a/morphia/src/main/resources/META-INF/services/io.nuun.kernel.api.Plugin b/morphia/src/main/resources/META-INF/services/io.nuun.kernel.api.Plugin index 9be6f1e..072c86d 100644 --- a/morphia/src/main/resources/META-INF/services/io.nuun.kernel.api.Plugin +++ b/morphia/src/main/resources/META-INF/services/io.nuun.kernel.api.Plugin @@ -1 +1 @@ -org.seedstack.seed.persistence.mongodb.internal.MorphiaPlugin \ No newline at end of file +org.seedstack.mongodb.morphia.internal.MorphiaPlugin \ No newline at end of file