refactoring
This commit is contained in:
parent
1370f03d50
commit
1eb2a4fd97
@ -1,25 +1,164 @@
|
|||||||
package com.knecon.fforesight.mongo.database.commons.config;
|
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.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.context.annotation.Configuration;
|
||||||
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;
|
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;
|
||||||
|
|
||||||
import com.knecon.fforesight.mongo.database.commons.service.MongoDataSources;
|
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.MongoClient;
|
||||||
import com.mongodb.client.MongoDatabase;
|
import com.mongodb.client.MongoDatabase;
|
||||||
|
import com.mongodb.client.MongoIterable;
|
||||||
|
import com.mongodb.connection.ClusterDescription;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
public class MultiTenantMongoDBFactory extends SimpleMongoClientDatabaseFactory {
|
public class MultiTenantMongoDBFactory extends SimpleMongoClientDatabaseFactory {
|
||||||
|
|
||||||
@Autowired
|
private final MongoDataSources mongoDataSources;
|
||||||
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) {
|
protected @NotNull MongoDatabase doGetMongoDatabase(@NotNull String dbName) {
|
||||||
|
|
||||||
return mongoDataSources.mongoDatabaseCurrentTenantResolver();
|
return mongoDataSources.mongoDatabaseCurrentTenantResolver();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,6 @@
|
|||||||
package com.knecon.fforesight.mongo.database.commons.service;
|
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.Bean;
|
||||||
import org.springframework.context.annotation.Lazy;
|
|
||||||
import org.springframework.data.mongodb.core.MongoTemplate;
|
import org.springframework.data.mongodb.core.MongoTemplate;
|
||||||
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
|
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
|
||||||
import org.springframework.data.mongodb.core.convert.MongoCustomConversions;
|
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.config.MultiTenantMongoDBFactory;
|
||||||
import com.knecon.fforesight.mongo.database.commons.exception.MongoDBTenantException;
|
import com.knecon.fforesight.mongo.database.commons.exception.MongoDBTenantException;
|
||||||
import com.knecon.fforesight.tenantcommons.TenantContext;
|
import com.knecon.fforesight.tenantcommons.TenantContext;
|
||||||
import com.mongodb.client.MongoClient;
|
|
||||||
import com.mongodb.client.MongoClients;
|
|
||||||
import com.mongodb.client.MongoDatabase;
|
import com.mongodb.client.MongoDatabase;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@ -25,27 +21,9 @@ public class MongoDataSources {
|
|||||||
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public String databaseName() {
|
public MongoTemplate mongoTemplate(MultiTenantMongoDBFactory multiTenantMongoDatabaseFactory, MongoCustomConversions mongoCustomConversions) {
|
||||||
|
|
||||||
final String tenantId = TenantContext.getTenantId();
|
MongoTemplate mongoTemplate = new MongoTemplate(multiTenantMongoDatabaseFactory);
|
||||||
|
|
||||||
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);
|
|
||||||
MappingMongoConverter conv = (MappingMongoConverter) mongoTemplate.getConverter();
|
MappingMongoConverter conv = (MappingMongoConverter) mongoTemplate.getConverter();
|
||||||
conv.setCustomConversions(mongoCustomConversions);
|
conv.setCustomConversions(mongoCustomConversions);
|
||||||
conv.afterPropertiesSet();
|
conv.afterPropertiesSet();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user