diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/EmbeddedDatabaseConnection.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/EmbeddedDatabaseConnection.java index 1505c5af450..8a47e449286 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/EmbeddedDatabaseConnection.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/EmbeddedDatabaseConnection.java @@ -139,7 +139,7 @@ public enum EmbeddedDatabaseConnection { * database type. * @param driverClass the driver class * @return true if the driver class is one of the embedded types - * @deprecated since 2.4.0 in favor of {@link #isEmbedded(String, String)} + * @deprecated since 2.3.5 in favor of {@link #isEmbedded(String, String)} */ @Deprecated public static boolean isEmbedded(String driverClass) { @@ -154,7 +154,14 @@ public enum EmbeddedDatabaseConnection { * @return true if the driver class and url refer to an embedded database */ public static boolean isEmbedded(String driverClass, String url) { - return driverClass != null && getEmbeddedDatabaseConnection(driverClass).isEmbeddedUrl(url); + if (driverClass == null) { + return false; + } + EmbeddedDatabaseConnection connection = getEmbeddedDatabaseConnection(driverClass); + if (connection == NONE) { + return false; + } + return (url == null || connection.isEmbeddedUrl(url)); } private static EmbeddedDatabaseConnection getEmbeddedDatabaseConnection(String driverClass) { diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/EmbeddedDatabaseConnectionTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/EmbeddedDatabaseConnectionTests.java index e78591ab411..b86f56b6fef 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/EmbeddedDatabaseConnectionTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/EmbeddedDatabaseConnectionTests.java @@ -92,18 +92,27 @@ class EmbeddedDatabaseConnectionTests { .withMessageContaining("DatabaseName must not be empty"); } - @ParameterizedTest(name = "{1}") + @ParameterizedTest(name = "{0} - {1}") @MethodSource("embeddedDriverAndUrlParameters") - void isEmbeddedWithDriverAndUrl(EmbeddedDatabaseConnection connection, String url, boolean embedded) { - assertThat(EmbeddedDatabaseConnection.isEmbedded(connection.getDriverClassName(), url)).isEqualTo(embedded); + void isEmbeddedWithDriverAndUrl(String driverClassName, String url, boolean embedded) { + assertThat(EmbeddedDatabaseConnection.isEmbedded(driverClassName, url)).isEqualTo(embedded); } static Object[] embeddedDriverAndUrlParameters() { - return new Object[] { new Object[] { EmbeddedDatabaseConnection.H2, "jdbc:h2:~/test", false }, - new Object[] { EmbeddedDatabaseConnection.H2, "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1", true }, - new Object[] { EmbeddedDatabaseConnection.HSQLDB, "jdbc:hsqldb:hsql://localhost", false }, - new Object[] { EmbeddedDatabaseConnection.HSQLDB, "jdbc:hsqldb:mem:test", true }, - new Object[] { EmbeddedDatabaseConnection.DERBY, "jdbc:derby:memory:test", true } }; + return new Object[] { + new Object[] { EmbeddedDatabaseConnection.H2.getDriverClassName(), "jdbc:h2:~/test", false }, + new Object[] { EmbeddedDatabaseConnection.H2.getDriverClassName(), "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1", + true }, + new Object[] { EmbeddedDatabaseConnection.H2.getDriverClassName(), null, true }, + new Object[] { EmbeddedDatabaseConnection.HSQLDB.getDriverClassName(), "jdbc:hsqldb:hsql://localhost", + false }, + new Object[] { EmbeddedDatabaseConnection.HSQLDB.getDriverClassName(), "jdbc:hsqldb:mem:test", true }, + new Object[] { EmbeddedDatabaseConnection.HSQLDB.getDriverClassName(), null, true }, + new Object[] { EmbeddedDatabaseConnection.DERBY.getDriverClassName(), "jdbc:derby:memory:test", true }, + new Object[] { EmbeddedDatabaseConnection.DERBY.getDriverClassName(), null, true }, + new Object[] { "com.mysql.cj.jdbc.Driver", "jdbc:mysql:mem:test", false }, + new Object[] { "com.mysql.cj.jdbc.Driver", null, false }, + new Object[] { null, "jdbc:none:mem:test", false }, new Object[] { null, null, false } }; } @Test