io.dropwizard.flyway.cli.AbstractFlywayCommand Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dropwizard-flyway Show documentation
Show all versions of dropwizard-flyway Show documentation
Addon bundle for Dropwizard to support Flyway for database migrations
package io.dropwizard.flyway.cli;
import io.dropwizard.flyway.FlywayConfiguration;
import io.dropwizard.flyway.FlywayFactory;
import io.dropwizard.Configuration;
import io.dropwizard.cli.ConfiguredCommand;
import io.dropwizard.db.PooledDataSourceFactory;
import io.dropwizard.db.DatabaseConfiguration;
import io.dropwizard.setup.Bootstrap;
import net.sourceforge.argparse4j.inf.Namespace;
import org.flywaydb.core.Flyway;
import org.flywaydb.core.api.FlywayException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
abstract class AbstractFlywayCommand extends ConfiguredCommand {
private static final Logger LOG = LoggerFactory.getLogger(AbstractFlywayCommand.class);
private final DatabaseConfiguration databaseConfiguration;
private final FlywayConfiguration flywayConfiguration;
private final Class configurationClass;
AbstractFlywayCommand(final String name,
final String description,
final DatabaseConfiguration databaseConfiguration,
final FlywayConfiguration flywayConfiguration,
final Class configurationClass) {
super(name, description);
this.databaseConfiguration = databaseConfiguration;
this.flywayConfiguration = flywayConfiguration;
this.configurationClass = configurationClass;
}
@Override
protected Class getConfigurationClass() {
return configurationClass;
}
@Override
protected void run(final Bootstrap bootstrap, final Namespace namespace, final T configuration) throws Exception {
final PooledDataSourceFactory datasourceFactory = databaseConfiguration.getDataSourceFactory(configuration);
final FlywayFactory flywayFactory = flywayConfiguration.getFlywayFactory(configuration);
final Flyway flyway = flywayFactory.build(datasourceFactory.build(bootstrap.getMetricRegistry(), "Flyway"));
try {
run(namespace, flyway);
} catch (FlywayException e) {
LOG.error("Error while running database command", e);
throw e;
}
}
protected abstract void run(final Namespace namespace, final Flyway flyway) throws Exception;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy