refactoring
This commit is contained in:
parent
691dc813ef
commit
1370f03d50
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,7 +7,7 @@ import lombok.NoArgsConstructor;
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TenantCreatedEvent {
|
||||
public class MongoTenantCreatedEvent {
|
||||
|
||||
private String tenantId;
|
||||
|
||||
@ -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());
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user