All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.quarkus.liquibase.runtime.LiquibaseFactoryUtil Maven / Gradle / Ivy

package io.quarkus.liquibase.runtime;

import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.List;

import jakarta.enterprise.inject.Default;

import io.quarkus.agroal.runtime.AgroalDataSourceUtil;
import io.quarkus.arc.Arc;
import io.quarkus.arc.InstanceHandle;
import io.quarkus.datasource.common.runtime.DataSourceUtil;
import io.quarkus.liquibase.LiquibaseDataSource;
import io.quarkus.liquibase.LiquibaseFactory;

public final class LiquibaseFactoryUtil {
    private LiquibaseFactoryUtil() {
    }

    public static InstanceHandle getLiquibaseFactory(String dataSourceName) {
        return Arc.container().instance(LiquibaseFactory.class,
                getLiquibaseFactoryQualifier(dataSourceName));
    }

    public static List> getActiveLiquibaseFactories() {
        List> result = new ArrayList<>();
        for (String datasourceName : AgroalDataSourceUtil.activeDataSourceNames()) {
            InstanceHandle handle = Arc.container().instance(LiquibaseFactory.class,
                    getLiquibaseFactoryQualifier(datasourceName));
            if (!handle.isAvailable()) {
                continue;
            }
            result.add(handle);
        }
        return result;
    }

    public static Annotation getLiquibaseFactoryQualifier(String dataSourceName) {
        if (DataSourceUtil.isDefault(dataSourceName)) {
            return Default.Literal.INSTANCE;
        }

        return LiquibaseDataSource.LiquibaseDataSourceLiteral.of(dataSourceName);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy