From 1eb2a4fd979b7ef99f386732102358b61ba9ff6d Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Mon, 25 Mar 2024 17:16:22 +0100 Subject: [PATCH] refactoring --- .../config/MultiTenantMongoDBFactory.java | 156 +++++++++++++++++- .../commons/service/MongoDataSources.java | 26 +-- 2 files changed, 151 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/knecon/fforesight/mongo/database/commons/config/MultiTenantMongoDBFactory.java b/src/main/java/com/knecon/fforesight/mongo/database/commons/config/MultiTenantMongoDBFactory.java index f9146cb..b113341 100644 --- a/src/main/java/com/knecon/fforesight/mongo/database/commons/config/MultiTenantMongoDBFactory.java +++ b/src/main/java/com/knecon/fforesight/mongo/database/commons/config/MultiTenantMongoDBFactory.java @@ -1,25 +1,164 @@ package com.knecon.fforesight.mongo.database.commons.config; +import java.util.List; + +import org.bson.Document; +import org.bson.conversions.Bson; import org.jetbrains.annotations.NotNull; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory; import com.knecon.fforesight.mongo.database.commons.service.MongoDataSources; +import com.mongodb.ClientSessionOptions; +import com.mongodb.client.ChangeStreamIterable; +import com.mongodb.client.ClientSession; +import com.mongodb.client.ListDatabasesIterable; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoDatabase; +import com.mongodb.client.MongoIterable; +import com.mongodb.connection.ClusterDescription; @Configuration public class MultiTenantMongoDBFactory extends SimpleMongoClientDatabaseFactory { - @Autowired - MongoDataSources mongoDataSources; + private final MongoDataSources mongoDataSources; - public MultiTenantMongoDBFactory(@Qualifier("getMongoClient") MongoClient mongoClient, String databaseName) { + public MultiTenantMongoDBFactory(MongoDataSources mongoDataSources) { - super(mongoClient, databaseName); + super(new MongoClient() { + @Override + public MongoDatabase getDatabase(String s) { + + return null; + } + + + @Override + public ClientSession startSession() { + + return null; + } + + + @Override + public ClientSession startSession(ClientSessionOptions clientSessionOptions) { + + return null; + } + + + @Override + public void close() { + + } + + + @Override + public MongoIterable listDatabaseNames() { + + return null; + } + + + @Override + public MongoIterable listDatabaseNames(ClientSession clientSession) { + + return null; + } + + + @Override + public ListDatabasesIterable listDatabases() { + + return null; + } + + + @Override + public ListDatabasesIterable listDatabases(ClientSession clientSession) { + + return null; + } + + + @Override + public ListDatabasesIterable listDatabases(Class aClass) { + + return null; + } + + + @Override + public ListDatabasesIterable listDatabases(ClientSession clientSession, Class aClass) { + + return null; + } + + + @Override + public ChangeStreamIterable watch() { + + return null; + } + + + @Override + public ChangeStreamIterable watch(Class aClass) { + + return null; + } + + + @Override + public ChangeStreamIterable watch(List list) { + + return null; + } + + + @Override + public ChangeStreamIterable watch(List list, Class aClass) { + + return null; + } + + + @Override + public ChangeStreamIterable watch(ClientSession clientSession) { + + return null; + } + + + @Override + public ChangeStreamIterable watch(ClientSession clientSession, Class aClass) { + + return null; + } + + + @Override + public ChangeStreamIterable watch(ClientSession clientSession, List list) { + + return null; + } + + + @Override + public ChangeStreamIterable watch(ClientSession clientSession, List list, Class aClass) { + + return null; + } + + + @Override + public ClusterDescription getClusterDescription() { + + return null; + } + }, "BOOTSTRAP"); + this.mongoDataSources = mongoDataSources; } @@ -27,7 +166,10 @@ public class MultiTenantMongoDBFactory extends SimpleMongoClientDatabaseFactory protected @NotNull MongoDatabase doGetMongoDatabase(@NotNull String dbName) { return mongoDataSources.mongoDatabaseCurrentTenantResolver(); - } } + + + + diff --git a/src/main/java/com/knecon/fforesight/mongo/database/commons/service/MongoDataSources.java b/src/main/java/com/knecon/fforesight/mongo/database/commons/service/MongoDataSources.java index f3a4f5e..08e0954 100644 --- a/src/main/java/com/knecon/fforesight/mongo/database/commons/service/MongoDataSources.java +++ b/src/main/java/com/knecon/fforesight/mongo/database/commons/service/MongoDataSources.java @@ -1,8 +1,6 @@ package com.knecon.fforesight.mongo.database.commons.service; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Lazy; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.convert.MappingMongoConverter; import org.springframework.data.mongodb.core.convert.MongoCustomConversions; @@ -11,8 +9,6 @@ import org.springframework.stereotype.Component; import com.knecon.fforesight.mongo.database.commons.config.MultiTenantMongoDBFactory; import com.knecon.fforesight.mongo.database.commons.exception.MongoDBTenantException; import com.knecon.fforesight.tenantcommons.TenantContext; -import com.mongodb.client.MongoClient; -import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; import lombok.RequiredArgsConstructor; @@ -25,27 +21,9 @@ public class MongoDataSources { @Bean - public String databaseName() { + public MongoTemplate mongoTemplate(MultiTenantMongoDBFactory multiTenantMongoDatabaseFactory, MongoCustomConversions mongoCustomConversions) { - final String tenantId = TenantContext.getTenantId(); - - return tenantId == null ? "redaction" : tenantId; - } - - - @Bean - public MongoClient getMongoClient() { - - final String tenantId = TenantContext.getTenantId(); - - return tenantId == null ? MongoClients.create() : mongoClientCache.getClient(tenantId); - } - - - @Bean - public MongoTemplate mongoTemplate(MultiTenantMongoDBFactory mongoDBFactory, MongoCustomConversions mongoCustomConversions) { - - MongoTemplate mongoTemplate = new MongoTemplate(mongoDBFactory); + MongoTemplate mongoTemplate = new MongoTemplate(multiTenantMongoDatabaseFactory); MappingMongoConverter conv = (MappingMongoConverter) mongoTemplate.getConverter(); conv.setCustomConversions(mongoCustomConversions); conv.afterPropertiesSet();