Merge pull request #3245 from chrisoberle/master
Add flyway-callback demo code per BAEL-1316
This commit is contained in:
commit
9c0c1e78a3
|
@ -0,0 +1,24 @@
|
||||||
|
target/
|
||||||
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
|
|
||||||
|
### STS ###
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
|
||||||
|
### IntelliJ IDEA ###
|
||||||
|
.idea
|
||||||
|
*.iws
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
|
||||||
|
### NetBeans ###
|
||||||
|
nbproject/private/
|
||||||
|
build/
|
||||||
|
nbbuild/
|
||||||
|
dist/
|
||||||
|
nbdist/
|
||||||
|
.nb-gradle/
|
|
@ -0,0 +1,59 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<artifactId>flyway-callbacks</artifactId>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>flyway-callbacks</name>
|
||||||
|
<description>Flyway Callbacks Demo</description>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<artifactId>flyway</artifactId>
|
||||||
|
<groupId>com.baeldung</groupId>
|
||||||
|
<version>1.0</version>
|
||||||
|
<relativePath>../../flyway</relativePath>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
|
<java.version>1.8</java.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.flywaydb</groupId>
|
||||||
|
<artifactId>flyway-core</artifactId>
|
||||||
|
<version>5.0.2</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-jdbc</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.h2database</groupId>
|
||||||
|
<artifactId>h2</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
|
||||||
|
</project>
|
|
@ -0,0 +1,33 @@
|
||||||
|
package com.baeldung.flywaycallbacks;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.flywaydb.core.api.MigrationInfo;
|
||||||
|
import org.flywaydb.core.api.callback.BaseFlywayCallback;
|
||||||
|
|
||||||
|
public class ExampleFlywayCallback extends BaseFlywayCallback {
|
||||||
|
|
||||||
|
private Log log = LogFactory.getLog(getClass());
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterEachMigrate(Connection connection, MigrationInfo info) {
|
||||||
|
log.info("> afterEachMigrate");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterMigrate(Connection connection) {
|
||||||
|
log.info("> afterMigrate");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeEachMigrate(Connection connection, MigrationInfo info) {
|
||||||
|
log.info("> beforeEachMigrate");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeMigrate(Connection connection) {
|
||||||
|
log.info("> beforeMigrate");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
package com.baeldung.flywaycallbacks;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
@SpringBootApplication
|
||||||
|
public class FlywayApplication {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication.run(FlywayApplication.class, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
SELECT 1
|
|
@ -0,0 +1 @@
|
||||||
|
SELECT 1
|
|
@ -0,0 +1,5 @@
|
||||||
|
create table table_one (
|
||||||
|
id numeric,
|
||||||
|
name varchar(50),
|
||||||
|
constraint pk_table_one primary key (id)
|
||||||
|
);
|
|
@ -0,0 +1,5 @@
|
||||||
|
create table table_two (
|
||||||
|
id numeric,
|
||||||
|
name varchar(50),
|
||||||
|
constraint pk_table_two primary key (id)
|
||||||
|
);
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configuration>
|
||||||
|
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>%date [%thread] %-5level %logger{36} - %message%n
|
||||||
|
</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<logger name="org.springframework" level="WARN" />
|
||||||
|
<logger name="org.springframework.transaction" level="WARN" />
|
||||||
|
|
||||||
|
<!-- in order to debug some marshalling issues, this needs to be TRACE -->
|
||||||
|
<logger name="org.springframework.web.servlet.mvc" level="WARN" />
|
||||||
|
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="STDOUT" />
|
||||||
|
</root>
|
||||||
|
</configuration>
|
|
@ -0,0 +1,72 @@
|
||||||
|
package com.baeldung.flywaycallbacks;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import javax.sql.DataSource;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.flywaydb.core.Flyway;
|
||||||
|
import org.flywaydb.core.api.MigrationInfoService;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.test.annotation.DirtiesContext;
|
||||||
|
import org.springframework.test.annotation.DirtiesContext.ClassMode;
|
||||||
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
import com.baeldung.flywaycallbacks.FlywayCallbackTestConfig;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
|
||||||
|
@ContextConfiguration(classes = FlywayCallbackTestConfig.class)
|
||||||
|
public class FlywayApplicationTest {
|
||||||
|
|
||||||
|
private Log log = LogFactory.getLog(getClass());
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DataSource dataSource;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void migrateWithNoCallbacks() {
|
||||||
|
logTestBoundary("migrateWithNoCallbacks");
|
||||||
|
Flyway flyway = new Flyway();
|
||||||
|
flyway.setDataSource(dataSource);
|
||||||
|
flyway.setLocations("db/migration");
|
||||||
|
flyway.migrate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void migrateWithJavaCallbacks() {
|
||||||
|
logTestBoundary("migrateWithJavaCallbacks");
|
||||||
|
Flyway flyway = new Flyway();
|
||||||
|
flyway.setDataSource(dataSource);
|
||||||
|
flyway.setLocations("db/migration");
|
||||||
|
flyway.setCallbacks(new ExampleFlywayCallback());
|
||||||
|
flyway.migrate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void migrateWithSqlCallbacks() {
|
||||||
|
logTestBoundary("migrateWithSqlCallbacks");
|
||||||
|
Flyway flyway = new Flyway();
|
||||||
|
flyway.setDataSource(dataSource);
|
||||||
|
flyway.setLocations("db/migration", "db/callbacks");
|
||||||
|
flyway.migrate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void migrateWithSqlAndJavaCallbacks() {
|
||||||
|
logTestBoundary("migrateWithSqlAndJavaCallbacks");
|
||||||
|
Flyway flyway = new Flyway();
|
||||||
|
flyway.setDataSource(dataSource);
|
||||||
|
flyway.setLocations("db/migration", "db/callbacks");
|
||||||
|
flyway.setCallbacks(new ExampleFlywayCallback());
|
||||||
|
flyway.migrate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void logTestBoundary(String testName) {
|
||||||
|
System.out.println("\n");
|
||||||
|
log.info("> " + testName);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package com.baeldung.flywaycallbacks;
|
||||||
|
|
||||||
|
import javax.sql.DataSource;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
|
||||||
|
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class FlywayCallbackTestConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public DataSource createDatasource() {
|
||||||
|
EmbeddedDatabaseBuilder dbBuilder = new EmbeddedDatabaseBuilder();
|
||||||
|
return dbBuilder.setType(EmbeddedDatabaseType.H2)
|
||||||
|
.setName("DATABASE")
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue