bugfix for liquibase

This commit is contained in:
maverickstuder 2024-03-22 16:47:28 +01:00
parent 95feb3bc20
commit 691dc813ef
2 changed files with 28 additions and 7 deletions

View File

@ -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<ChangeSet> 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<ChangeSet> changeSetsList = liquibase.listUnrunChangeSets(contexts, null);
if (!changeSetsList.isEmpty()) {
liquibase.update(contexts);
}
}
}

View File

@ -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 {