use of org.flywaydb.core.internal.util.scanner.Scanner in project flyway by flyway.
the class CompositeMigrationResolverSmallTest method skipDefaultResolvers.
@Test
public void skipDefaultResolvers() {
FlywayConfigurationForTests config = FlywayConfigurationForTests.create();
config.setSkipDefaultResolvers(true);
MigrationResolver migrationResolver = new CompositeMigrationResolver(null, new Scanner(Thread.currentThread().getContextClassLoader()), config, new Locations("migration/outoforder", "org/flywaydb/core/internal/resolver/jdbc/dummy"), PlaceholderReplacer.NO_PLACEHOLDERS);
Collection<ResolvedMigration> migrations = migrationResolver.resolveMigrations();
assertTrue(migrations.isEmpty());
}
use of org.flywaydb.core.internal.util.scanner.Scanner in project flyway by flyway.
the class Flyway method execute.
/**
* Executes this command with proper resource handling and cleanup.
*
* @param command The command to execute.
* @param <T> The type of the result.
* @return The result of the command.
*/
/*private -> testing*/
<T> T execute(Command<T> command) {
T result;
VersionPrinter.printVersion();
Connection connectionMetaDataTable = null;
try {
if (dataSource == null) {
throw new FlywayException("Unable to connect to the database. Configure the url, user and password!");
}
connectionMetaDataTable = JdbcUtils.openConnection(dataSource);
DbSupport dbSupport = DbSupportFactory.createDbSupport(connectionMetaDataTable, !dbConnectionInfoPrinted);
dbConnectionInfoPrinted = true;
LOG.debug("DDL Transactions Supported: " + dbSupport.supportsDdlTransactions());
if (schemaNames.length == 0) {
Schema currentSchema = dbSupport.getOriginalSchema();
if (currentSchema == null) {
throw new FlywayException("Unable to determine schema for the metadata table." + " Set a default schema for the connection or specify one using the schemas property!");
}
setSchemas(currentSchema.getName());
}
if (schemaNames.length == 1) {
LOG.debug("Schema: " + schemaNames[0]);
} else {
LOG.debug("Schemas: " + StringUtils.arrayToCommaDelimitedString(schemaNames));
}
Schema[] schemas = new Schema[schemaNames.length];
for (int i = 0; i < schemaNames.length; i++) {
schemas[i] = dbSupport.getSchema(schemaNames[i]);
}
Scanner scanner = new Scanner(classLoader);
MigrationResolver migrationResolver = createMigrationResolver(dbSupport, scanner);
if (!skipDefaultCallbacks) {
Set<FlywayCallback> flywayCallbacks = new LinkedHashSet<FlywayCallback>(Arrays.asList(callbacks));
flywayCallbacks.add(new SqlScriptFlywayCallback(dbSupport, scanner, locations, createPlaceholderReplacer(), this));
callbacks = flywayCallbacks.toArray(new FlywayCallback[flywayCallbacks.size()]);
}
for (FlywayCallback callback : callbacks) {
ConfigurationInjectionUtils.injectFlywayConfiguration(callback, this);
}
MetaDataTable metaDataTable = new MetaDataTableImpl(dbSupport, schemas[0].getTable(table), installedBy);
if (metaDataTable.upgradeIfNecessary()) {
new DbRepair(dbSupport, connectionMetaDataTable, schemas[0], migrationResolver, metaDataTable, callbacks).repairChecksumsAndDescriptions();
LOG.info("Metadata table " + table + " successfully upgraded to the Flyway 4.0 format.");
}
result = command.execute(connectionMetaDataTable, migrationResolver, metaDataTable, dbSupport, schemas, callbacks);
} finally {
JdbcUtils.closeConnection(connectionMetaDataTable);
}
return result;
}
use of org.flywaydb.core.internal.util.scanner.Scanner in project flyway by flyway.
the class MigrationTestCase method assertChecksum.
/**
* Compares the DB checksum to the classpath checksum of this migration.
*
* @param migrationInfo
* The migration to check.
*/
protected void assertChecksum(MigrationInfo migrationInfo) {
SqlMigrationResolver sqlMigrationResolver = new SqlMigrationResolver(dbSupport, new Scanner(Thread.currentThread().getContextClassLoader()), new Location(getBasedir()), PlaceholderReplacer.NO_PLACEHOLDERS, FlywayConfigurationForTests.create());
List<ResolvedMigration> migrations = sqlMigrationResolver.resolveMigrations();
for (ResolvedMigration migration : migrations) {
if (migration.getVersion().toString().equals(migrationInfo.getVersion().toString())) {
assertEquals("Wrong checksum for " + migrationInfo.getScript(), migration.getChecksum(), migrationInfo.getChecksum());
}
}
}
use of org.flywaydb.core.internal.util.scanner.Scanner in project flyway by flyway.
the class SqlMigrationResolverMediumTest method resolveMigrations.
@Test
public void resolveMigrations() throws Exception {
@SuppressWarnings("ConstantConditions") String path = URLDecoder.decode(getClass().getClassLoader().getResource("migration/subdir").getPath(), "UTF-8");
SqlMigrationResolver sqlMigrationResolver = new SqlMigrationResolver(null, new Scanner(Thread.currentThread().getContextClassLoader()), new Location("filesystem:" + new File(path).getPath()), PlaceholderReplacer.NO_PLACEHOLDERS, FlywayConfigurationForTests.create());
Collection<ResolvedMigration> migrations = sqlMigrationResolver.resolveMigrations();
assertEquals(3, migrations.size());
List<ResolvedMigration> migrationList = new ArrayList<ResolvedMigration>(migrations);
assertEquals("1", migrationList.get(0).getVersion().toString());
assertEquals("1.1", migrationList.get(1).getVersion().toString());
assertEquals("2.0", migrationList.get(2).getVersion().toString());
assertEquals("dir1/V1__First.sql", migrationList.get(0).getScript());
assertEquals("V1_1__Populate_table.sql", migrationList.get(1).getScript());
assertEquals("dir2/V2_0__Add_foreign_key.sql", migrationList.get(2).getScript());
}
use of org.flywaydb.core.internal.util.scanner.Scanner in project flyway by flyway.
the class CompositeMigrationResolverSmallTest method resolveMigrationsMultipleLocations.
@Test
public void resolveMigrationsMultipleLocations() {
FlywayConfigurationForTests config = FlywayConfigurationForTests.create();
PlaceholderReplacer placeholderReplacer = new PlaceholderReplacer(new HashMap<String, String>(), "${", "}");
MigrationResolver migrationResolver = new CompositeMigrationResolver(null, new Scanner(Thread.currentThread().getContextClassLoader()), config, new Locations("migration/subdir/dir2", "migration.outoforder", "migration/subdir/dir1"), placeholderReplacer, new MyCustomMigrationResolver());
Collection<ResolvedMigration> migrations = migrationResolver.resolveMigrations();
List<ResolvedMigration> migrationList = new ArrayList<ResolvedMigration>(migrations);
assertEquals(4, migrations.size());
assertEquals("First", migrationList.get(0).getDescription());
assertEquals("Late arrivals", migrationList.get(1).getDescription());
assertEquals("Virtual Migration", migrationList.get(2).getDescription());
assertEquals("Add foreign key", migrationList.get(3).getDescription());
}
Aggregations