From 1a03e84f0ea6779cee1919312b48dd752432b9a8 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Tue, 26 Jun 2018 22:40:08 +1200 Subject: [PATCH] #1439 - IllegalArgumentException: No rule for io.ebeaninternal.dbmigration.migration.Sql@315df4bb --- .../dbmigration/model/ModelContainer.java | 3 +++ .../model/ModelContainerApplyTest.java | 2 +- .../dbmigration/model/ModelContainerTest.java | 16 +++++++++++----- .../dbmigration/model/3.0__rawSql.model.xml | 9 +++++++++ 4 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 src/test/resources/io/ebeaninternal/dbmigration/model/3.0__rawSql.model.xml diff --git a/src/main/java/io/ebeaninternal/dbmigration/model/ModelContainer.java b/src/main/java/io/ebeaninternal/dbmigration/model/ModelContainer.java index 6f4abfe51..15009f5b1 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/model/ModelContainer.java +++ b/src/main/java/io/ebeaninternal/dbmigration/model/ModelContainer.java @@ -17,6 +17,7 @@ import io.ebeaninternal.dbmigration.migration.DropHistoryTable; import io.ebeaninternal.dbmigration.migration.DropIndex; import io.ebeaninternal.dbmigration.migration.DropTable; import io.ebeaninternal.dbmigration.migration.Migration; +import io.ebeaninternal.dbmigration.migration.Sql; import java.util.LinkedHashMap; import java.util.List; @@ -143,6 +144,8 @@ public class ModelContainer { applyChange((AlterForeignKey) change); } else if (change instanceof AddTableComment) { applyChange((AddTableComment) change); + } else if (change instanceof Sql) { + // do nothing } else { throw new IllegalArgumentException("No rule for " + change); } diff --git a/src/test/java/io/ebeaninternal/dbmigration/model/ModelContainerApplyTest.java b/src/test/java/io/ebeaninternal/dbmigration/model/ModelContainerApplyTest.java index bbaedc147..7f797c376 100644 --- a/src/test/java/io/ebeaninternal/dbmigration/model/ModelContainerApplyTest.java +++ b/src/test/java/io/ebeaninternal/dbmigration/model/ModelContainerApplyTest.java @@ -15,7 +15,7 @@ import static org.assertj.core.api.Assertions.assertThat; public class ModelContainerApplyTest { @Test - public void testApply() throws Exception { + public void testApply() { Migration migration = MigrationXmlReader.read("/container/test-create-table.xml"); diff --git a/src/test/java/io/ebeaninternal/dbmigration/model/ModelContainerTest.java b/src/test/java/io/ebeaninternal/dbmigration/model/ModelContainerTest.java index aa988b187..fc37f02da 100644 --- a/src/test/java/io/ebeaninternal/dbmigration/model/ModelContainerTest.java +++ b/src/test/java/io/ebeaninternal/dbmigration/model/ModelContainerTest.java @@ -12,17 +12,16 @@ import static org.assertj.core.api.Assertions.assertThat; public class ModelContainerTest { @Test - public void apply_when_noPendingDrops_then_emptyPending() throws Exception { + public void apply_when_noPendingDrops_then_emptyPending() { ModelContainer container = new ModelContainer(); container.apply(mig("1.0.model.xml"), ver("1.1")); - assertThat(container.getPendingDrops()).isEmpty(); } @Test - public void apply_when_pendingDrops_then_registeredHistoryTable() throws Exception { + public void apply_when_pendingDrops_then_registeredHistoryTable() { ModelContainer base = container_1_1(); @@ -36,7 +35,7 @@ public class ModelContainerTest { @Test - public void apply_when_pendingDropsApplied_then_droppedTableNotInHistory() throws Exception { + public void apply_when_pendingDropsApplied_then_droppedTableNotInHistory() { ModelContainer container = container_1_1(); container.apply(mig("1.1_2__drops.model.xml"), ver("1.1_2")); @@ -50,7 +49,7 @@ public class ModelContainerTest { } @Test - public void apply_when_apply_partial_pendingDrops_then_some_remainder() throws Exception { + public void apply_when_apply_partial_pendingDrops_then_some_remainder() { ModelContainer container = container_2_1(); container.apply(mig("2.2__drops.model.xml"), ver("2.2")); @@ -66,6 +65,13 @@ public class ModelContainerTest { assertThat(normalColumns).doesNotContain("zing", "zong", "boom", "baz", "bar"); } + @Test + public void apply_sql() { + ModelContainer container = new ModelContainer(); + container.apply(mig("3.0__rawSql.model.xml"), ver("3.0")); + assertThat(container.getPendingDrops()).isEmpty(); + } + private ModelContainer container_2_1() { ModelContainer container = new ModelContainer(); container.apply(mig("2.0.model.xml"), ver("2.0")); diff --git a/src/test/resources/io/ebeaninternal/dbmigration/model/3.0__rawSql.model.xml b/src/test/resources/io/ebeaninternal/dbmigration/model/3.0__rawSql.model.xml new file mode 100644 index 000000000..c9472f9b0 --- /dev/null +++ b/src/test/resources/io/ebeaninternal/dbmigration/model/3.0__rawSql.model.xml @@ -0,0 +1,9 @@ + + + + + something + other thing + + +