refactoring

This commit is contained in:
maverickstuder 2024-03-25 15:24:21 +01:00
parent 691dc813ef
commit 1370f03d50
6 changed files with 29 additions and 18 deletions

View File

@ -9,6 +9,8 @@ import org.bson.Document;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.ReadingConverter;
import org.springframework.data.convert.WritingConverter;
import org.springframework.data.mongodb.core.convert.MongoCustomConversions;
@Configuration
@ -21,6 +23,7 @@ public class MongoDbConfiguration {
}
@WritingConverter
public static class MongoOffsetDateTimeWriter implements Converter<OffsetDateTime, Document> {
public static final String DATE_FIELD = "dateTime";
@ -38,6 +41,7 @@ public class MongoDbConfiguration {
}
@ReadingConverter
public static class MongoOffsetDateTimeReader implements Converter<Document, OffsetDateTime> {
@Override

View File

@ -1,5 +1,6 @@
package com.knecon.fforesight.mongo.database.commons.liquibase;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.liquibase.LiquibaseProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
@ -11,9 +12,9 @@ import com.knecon.fforesight.tenantcommons.TenantProvider;
@Configuration
public class MongoLiquibaseConfig {
@Bean
@Bean(name = "tenantMongoLiquibaseProperties")
@ConfigurationProperties("multitenancy.tenant.mongo.liquibase")
public LiquibaseProperties tenantLiquibaseProperties() {
public LiquibaseProperties tenantMongoLiquibaseProperties() {
return new LiquibaseProperties();
}
@ -22,8 +23,8 @@ public class MongoLiquibaseConfig {
@Bean
public TenantMongoLiquibaseExecutor tenantLiquibase(EncryptionDecryptionService encryptionService,
TenantProvider tenantProvider,
LiquibaseProperties tenantLiquibaseProperties) {
@Qualifier("tenantMongoLiquibaseProperties") LiquibaseProperties mongoLiquibaseProperties) {
return new TenantMongoLiquibaseExecutor(encryptionService, tenantProvider, tenantLiquibaseProperties);
return new TenantMongoLiquibaseExecutor(encryptionService, tenantProvider, mongoLiquibaseProperties);
}
}

View File

@ -7,7 +7,7 @@ import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TenantCreatedEvent {
public class MongoTenantCreatedEvent {
private String tenantId;

View File

@ -29,7 +29,7 @@ public class MongoTenantCreatedListener {
@SneakyThrows
@RabbitListener(queues = "${fforesight.multitenancy.tenant-created-queue:tenant-created}")
public void createTenant(TenantCreatedEvent tenantRequest) {
public void createTenant(MongoTenantCreatedEvent tenantRequest) {
tenantMongoLiquibaseExecutor.initializeTenant(tenantRequest.getTenantId());
}

View File

@ -3,7 +3,6 @@ package com.knecon.fforesight.mongo.database.commons.liquibase;
import java.util.List;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.liquibase.LiquibaseProperties;
import org.springframework.context.ResourceLoaderAware;
import org.springframework.core.io.ResourceLoader;
@ -34,8 +33,7 @@ public class TenantMongoLiquibaseExecutor implements InitializingBean, ResourceL
private final TenantProvider tenantProvider;
@Qualifier("tenantLiquibaseProperties")
private final LiquibaseProperties tenantLiquibaseProperties;
private final LiquibaseProperties tenantMongoLiquibaseProperties;
@Setter
private ResourceLoader resourceLoader;
@ -70,8 +68,8 @@ public class TenantMongoLiquibaseExecutor implements InitializingBean, ResourceL
.openDatabase(mongoUrl, mongoDBConnection.getUsername(), encryptionService.decrypt(mongoDBConnection.getPassword()), null, null)) {
try (SpringResourceAccessor resourceAccessor = new SpringResourceAccessor(resourceLoader)) {
try (Liquibase liquibase = new Liquibase(tenantLiquibaseProperties.getChangeLog(), resourceAccessor, database)) {
Contexts contexts = new Contexts(tenantLiquibaseProperties.getContexts());
try (Liquibase liquibase = new Liquibase(tenantMongoLiquibaseProperties.getChangeLog(), resourceAccessor, database)) {
Contexts contexts = new Contexts(tenantMongoLiquibaseProperties.getContexts());
List<ChangeSet> changeSetsList = liquibase.listUnrunChangeSets(contexts, null);
if (!changeSetsList.isEmpty()) {
liquibase.update(contexts);

View File

@ -4,8 +4,11 @@ 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;
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;
@ -22,26 +25,31 @@ public class MongoDataSources {
@Bean
@Lazy
public String databaseName() {
return "dummy";
final String tenantId = TenantContext.getTenantId();
return tenantId == null ? "redaction" : tenantId;
}
@Bean
@Lazy
public MongoClient getMongoClient() {
return MongoClients.create();
final String tenantId = TenantContext.getTenantId();
return tenantId == null ? MongoClients.create() : mongoClientCache.getClient(tenantId);
}
@Bean
@Lazy
public MongoTemplate mongoTemplate(@Qualifier("getMongoClient") MongoClient mongoClient, String databaseName) {
public MongoTemplate mongoTemplate(MultiTenantMongoDBFactory mongoDBFactory, MongoCustomConversions mongoCustomConversions) {
return new MongoTemplate(mongoClient, databaseName);
MongoTemplate mongoTemplate = new MongoTemplate(mongoDBFactory);
MappingMongoConverter conv = (MappingMongoConverter) mongoTemplate.getConverter();
conv.setCustomConversions(mongoCustomConversions);
conv.afterPropertiesSet();
return mongoTemplate;
}