diff --git a/src/main/java/com/knecon/fforesight/mongo/database/commons/liquibase/TenantMongoLiquibaseExecutor.java b/src/main/java/com/knecon/fforesight/mongo/database/commons/liquibase/TenantMongoLiquibaseExecutor.java index a84e136..8f50492 100644 --- a/src/main/java/com/knecon/fforesight/mongo/database/commons/liquibase/TenantMongoLiquibaseExecutor.java +++ b/src/main/java/com/knecon/fforesight/mongo/database/commons/liquibase/TenantMongoLiquibaseExecutor.java @@ -5,6 +5,8 @@ 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; import com.knecon.fforesight.mongo.database.commons.utils.MongoUtils; import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; @@ -18,21 +20,26 @@ import liquibase.Liquibase; import liquibase.changelog.ChangeSet; import liquibase.database.DatabaseFactory; import liquibase.ext.mongodb.database.MongoLiquibaseDatabase; -import liquibase.resource.ClassLoaderResourceAccessor; +import liquibase.integration.spring.SpringResourceAccessor; import lombok.RequiredArgsConstructor; +import lombok.Setter; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @Slf4j @RequiredArgsConstructor -public class TenantMongoLiquibaseExecutor implements InitializingBean { +public class TenantMongoLiquibaseExecutor implements InitializingBean, ResourceLoaderAware { private final EncryptionDecryptionService encryptionService; + private final TenantProvider tenantProvider; @Qualifier("tenantLiquibaseProperties") private final LiquibaseProperties tenantLiquibaseProperties; + @Setter + private ResourceLoader resourceLoader; + @Override public void afterPropertiesSet() { @@ -62,11 +69,13 @@ public class TenantMongoLiquibaseExecutor implements InitializingBean { try (MongoLiquibaseDatabase database = (MongoLiquibaseDatabase) DatabaseFactory.getInstance() .openDatabase(mongoUrl, mongoDBConnection.getUsername(), encryptionService.decrypt(mongoDBConnection.getPassword()), null, null)) { - try (Liquibase liquibase = new Liquibase(tenantLiquibaseProperties.getChangeLog(), new ClassLoaderResourceAccessor(), database)) { - Contexts contexts = new Contexts(tenantLiquibaseProperties.getContexts()); - List changeSetsList = liquibase.listUnrunChangeSets(contexts, null); - if (!changeSetsList.isEmpty()) { - liquibase.update(contexts); + try (SpringResourceAccessor resourceAccessor = new SpringResourceAccessor(resourceLoader)) { + try (Liquibase liquibase = new Liquibase(tenantLiquibaseProperties.getChangeLog(), resourceAccessor, database)) { + Contexts contexts = new Contexts(tenantLiquibaseProperties.getContexts()); + List changeSetsList = liquibase.listUnrunChangeSets(contexts, null); + if (!changeSetsList.isEmpty()) { + liquibase.update(contexts); + } } } 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 1bea4c2..19a6509 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,7 +1,9 @@ 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.stereotype.Component; import com.knecon.fforesight.mongo.database.commons.exception.MongoDBTenantException; @@ -20,6 +22,7 @@ public class MongoDataSources { @Bean + @Lazy public String databaseName() { return "dummy"; @@ -27,12 +30,21 @@ public class MongoDataSources { @Bean + @Lazy public MongoClient getMongoClient() { return MongoClients.create(); } + @Bean + @Lazy + public MongoTemplate mongoTemplate(@Qualifier("getMongoClient") MongoClient mongoClient, String databaseName) { + + return new MongoTemplate(mongoClient, databaseName); + } + + public MongoDatabase mongoDatabaseCurrentTenantResolver() { try {