Merge branch '1.4.x' into 1.5.x
This commit is contained in:
commit
2b09050568
|
@ -16,6 +16,10 @@
|
|||
|
||||
package org.springframework.boot.jdbc;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
|
@ -107,6 +111,11 @@ public enum DatabaseDriver {
|
|||
"org.firebirdsql.pool.FBConnectionPoolDataSource",
|
||||
"SELECT 1 FROM RDB$DATABASE") {
|
||||
|
||||
@Override
|
||||
protected Collection<String> getUrlPrefixes() {
|
||||
return Collections.singleton("firebirdsql");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean matchProductName(String productName) {
|
||||
return super.matchProductName(productName)
|
||||
|
@ -134,6 +143,11 @@ public enum DatabaseDriver {
|
|||
"com.ibm.as400.access.AS400JDBCXADataSource",
|
||||
"SELECT 1 FROM SYSIBM.SYSDUMMY1") {
|
||||
|
||||
@Override
|
||||
protected Collection<String> getUrlPrefixes() {
|
||||
return Collections.singleton("as400");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean matchProductName(String productName) {
|
||||
return super.matchProductName(productName)
|
||||
|
@ -150,7 +164,13 @@ public enum DatabaseDriver {
|
|||
* Informix.
|
||||
*/
|
||||
INFORMIX("informix", "Informix Dynamic Server", "com.informix.jdbc.IfxDriver", null,
|
||||
"select count(*) from systables");
|
||||
"select count(*) from systables") {
|
||||
|
||||
@Override
|
||||
protected Collection<String> getUrlPrefixes() {
|
||||
return Arrays.asList("informix-sqli", "informix-direct");
|
||||
}
|
||||
};
|
||||
|
||||
private final String id;
|
||||
|
||||
|
@ -192,6 +212,10 @@ public enum DatabaseDriver {
|
|||
return this.productName != null && this.productName.equalsIgnoreCase(productName);
|
||||
}
|
||||
|
||||
protected Collection<String> getUrlPrefixes() {
|
||||
return Collections.singleton(this.name().toLowerCase());
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the driver class name.
|
||||
* @return the class name or {@code null}
|
||||
|
@ -226,9 +250,11 @@ public enum DatabaseDriver {
|
|||
Assert.isTrue(url.startsWith("jdbc"), "URL must start with 'jdbc'");
|
||||
String urlWithoutPrefix = url.substring("jdbc".length()).toLowerCase();
|
||||
for (DatabaseDriver driver : values()) {
|
||||
String prefix = ":" + driver.name().toLowerCase() + ":";
|
||||
if (driver != UNKNOWN && urlWithoutPrefix.startsWith(prefix)) {
|
||||
return driver;
|
||||
for (String urlPrefix : driver.getUrlPrefixes()) {
|
||||
String prefix = ":" + urlPrefix + ":";
|
||||
if (driver != UNKNOWN && urlWithoutPrefix.startsWith(prefix)) {
|
||||
return driver;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
*
|
||||
* @author Phillip Webb
|
||||
* @author Maciej Walkowiak
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
public class DatabaseDriverTests {
|
||||
|
||||
|
@ -70,25 +71,73 @@ public class DatabaseDriverTests {
|
|||
public void databaseProductNameLookups() throws Exception {
|
||||
assertThat(DatabaseDriver.fromProductName("newone"))
|
||||
.isEqualTo(DatabaseDriver.UNKNOWN);
|
||||
assertThat(DatabaseDriver.fromProductName("HSQL Database Engine"))
|
||||
.isEqualTo(DatabaseDriver.HSQLDB);
|
||||
assertThat(DatabaseDriver.fromProductName("Oracle"))
|
||||
.isEqualTo(DatabaseDriver.ORACLE);
|
||||
assertThat(DatabaseDriver.fromProductName("Apache Derby"))
|
||||
.isEqualTo(DatabaseDriver.DERBY);
|
||||
assertThat(DatabaseDriver.fromProductName("H2"))
|
||||
.isEqualTo(DatabaseDriver.H2);
|
||||
assertThat(DatabaseDriver.fromProductName("HSQL Database Engine"))
|
||||
.isEqualTo(DatabaseDriver.HSQLDB);
|
||||
assertThat(DatabaseDriver.fromProductName("SQLite"))
|
||||
.isEqualTo(DatabaseDriver.SQLITE);
|
||||
assertThat(DatabaseDriver.fromProductName("MySQL"))
|
||||
.isEqualTo(DatabaseDriver.MYSQL);
|
||||
assertThat(DatabaseDriver.fromProductName("Oracle"))
|
||||
.isEqualTo(DatabaseDriver.ORACLE);
|
||||
assertThat(DatabaseDriver.fromProductName("PostgreSQL"))
|
||||
.isEqualTo(DatabaseDriver.POSTGRESQL);
|
||||
assertThat(DatabaseDriver.fromProductName("SQL SERVER"))
|
||||
.isEqualTo(DatabaseDriver.SQLSERVER);
|
||||
assertThat(DatabaseDriver.fromProductName("DB2")).isEqualTo(DatabaseDriver.DB2);
|
||||
assertThat(DatabaseDriver.fromProductName("Firebird 2.5.WI"))
|
||||
.isEqualTo(DatabaseDriver.FIREBIRD);
|
||||
assertThat(DatabaseDriver.fromProductName("Firebird 2.1.LI"))
|
||||
.isEqualTo(DatabaseDriver.FIREBIRD);
|
||||
assertThat(DatabaseDriver.fromProductName("DB2/LINUXX8664"))
|
||||
.isEqualTo(DatabaseDriver.DB2);
|
||||
assertThat(DatabaseDriver.fromProductName("DB2 UDB for AS/400"))
|
||||
.isEqualTo(DatabaseDriver.DB2_AS400);
|
||||
assertThat(DatabaseDriver.fromProductName("DB3 XDB for AS/400"))
|
||||
.isEqualTo(DatabaseDriver.DB2_AS400);
|
||||
assertThat(DatabaseDriver.fromProductName("Teradata"))
|
||||
.isEqualTo(DatabaseDriver.TERADATA);
|
||||
assertThat(DatabaseDriver.fromProductName("Informix Dynamic Server"))
|
||||
.isEqualTo(DatabaseDriver.INFORMIX);
|
||||
assertThat(DatabaseDriver.fromProductName("Firebird 2.5.WI"))
|
||||
.isEqualTo(DatabaseDriver.FIREBIRD);
|
||||
assertThat(DatabaseDriver.fromProductName("Firebird 2.1.LI"))
|
||||
}
|
||||
|
||||
@Test
|
||||
public void databaseJdbcUrlLookups() {
|
||||
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:newone://localhost"))
|
||||
.isEqualTo(DatabaseDriver.UNKNOWN);
|
||||
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:derby:sample"))
|
||||
.isEqualTo(DatabaseDriver.DERBY);
|
||||
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:h2:~/sample"))
|
||||
.isEqualTo(DatabaseDriver.H2);
|
||||
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:hsqldb:hsql://localhost"))
|
||||
.isEqualTo(DatabaseDriver.HSQLDB);
|
||||
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:sqlite:sample.db"))
|
||||
.isEqualTo(DatabaseDriver.SQLITE);
|
||||
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:mysql://localhost:3306/sample"))
|
||||
.isEqualTo(DatabaseDriver.MYSQL);
|
||||
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:oracle:thin:@localhost:1521:orcl"))
|
||||
.isEqualTo(DatabaseDriver.ORACLE);
|
||||
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:postgresql://127.0.0.1:5432/sample"))
|
||||
.isEqualTo(DatabaseDriver.POSTGRESQL);
|
||||
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:jtds:sqlserver://127.0.0.1:1433/sample"))
|
||||
.isEqualTo(DatabaseDriver.JTDS);
|
||||
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:sqlserver://127.0.0.1:1433"))
|
||||
.isEqualTo(DatabaseDriver.SQLSERVER);
|
||||
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:firebirdsql://localhost/sample"))
|
||||
.isEqualTo(DatabaseDriver.FIREBIRD);
|
||||
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:db2://localhost:50000/sample "))
|
||||
.isEqualTo(DatabaseDriver.DB2);
|
||||
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:as400://localhost"))
|
||||
.isEqualTo(DatabaseDriver.DB2_AS400);
|
||||
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:teradata://localhost/SAMPLE"))
|
||||
.isEqualTo(DatabaseDriver.TERADATA);
|
||||
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:informix-sqli://localhost:1533/sample"))
|
||||
.isEqualTo(DatabaseDriver.INFORMIX);
|
||||
assertThat(DatabaseDriver.fromJdbcUrl("jdbc:informix-direct://sample"))
|
||||
.isEqualTo(DatabaseDriver.INFORMIX);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue