refactoring

This commit is contained in:
maverickstuder 2024-03-25 17:16:22 +01:00
parent 1370f03d50
commit 1eb2a4fd97
2 changed files with 151 additions and 31 deletions

View File

@ -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<String> listDatabaseNames() {
return null;
}
@Override
public MongoIterable<String> listDatabaseNames(ClientSession clientSession) {
return null;
}
@Override
public ListDatabasesIterable<Document> listDatabases() {
return null;
}
@Override
public ListDatabasesIterable<Document> listDatabases(ClientSession clientSession) {
return null;
}
@Override
public <TResult> ListDatabasesIterable<TResult> listDatabases(Class<TResult> aClass) {
return null;
}
@Override
public <TResult> ListDatabasesIterable<TResult> listDatabases(ClientSession clientSession, Class<TResult> aClass) {
return null;
}
@Override
public ChangeStreamIterable<Document> watch() {
return null;
}
@Override
public <TResult> ChangeStreamIterable<TResult> watch(Class<TResult> aClass) {
return null;
}
@Override
public ChangeStreamIterable<Document> watch(List<? extends Bson> list) {
return null;
}
@Override
public <TResult> ChangeStreamIterable<TResult> watch(List<? extends Bson> list, Class<TResult> aClass) {
return null;
}
@Override
public ChangeStreamIterable<Document> watch(ClientSession clientSession) {
return null;
}
@Override
public <TResult> ChangeStreamIterable<TResult> watch(ClientSession clientSession, Class<TResult> aClass) {
return null;
}
@Override
public ChangeStreamIterable<Document> watch(ClientSession clientSession, List<? extends Bson> list) {
return null;
}
@Override
public <TResult> ChangeStreamIterable<TResult> watch(ClientSession clientSession, List<? extends Bson> list, Class<TResult> 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();
}
}

View File

@ -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();