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;
|
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.Assert;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
@ -107,6 +111,11 @@ public enum DatabaseDriver {
|
||||||
"org.firebirdsql.pool.FBConnectionPoolDataSource",
|
"org.firebirdsql.pool.FBConnectionPoolDataSource",
|
||||||
"SELECT 1 FROM RDB$DATABASE") {
|
"SELECT 1 FROM RDB$DATABASE") {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Collection<String> getUrlPrefixes() {
|
||||||
|
return Collections.singleton("firebirdsql");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean matchProductName(String productName) {
|
protected boolean matchProductName(String productName) {
|
||||||
return super.matchProductName(productName)
|
return super.matchProductName(productName)
|
||||||
|
@ -134,6 +143,11 @@ public enum DatabaseDriver {
|
||||||
"com.ibm.as400.access.AS400JDBCXADataSource",
|
"com.ibm.as400.access.AS400JDBCXADataSource",
|
||||||
"SELECT 1 FROM SYSIBM.SYSDUMMY1") {
|
"SELECT 1 FROM SYSIBM.SYSDUMMY1") {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Collection<String> getUrlPrefixes() {
|
||||||
|
return Collections.singleton("as400");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean matchProductName(String productName) {
|
protected boolean matchProductName(String productName) {
|
||||||
return super.matchProductName(productName)
|
return super.matchProductName(productName)
|
||||||
|
@ -150,7 +164,13 @@ public enum DatabaseDriver {
|
||||||
* Informix.
|
* Informix.
|
||||||
*/
|
*/
|
||||||
INFORMIX("informix", "Informix Dynamic Server", "com.informix.jdbc.IfxDriver", null,
|
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;
|
private final String id;
|
||||||
|
|
||||||
|
@ -192,6 +212,10 @@ public enum DatabaseDriver {
|
||||||
return this.productName != null && this.productName.equalsIgnoreCase(productName);
|
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 driver class name.
|
||||||
* @return the class name or {@code null}
|
* @return the class name or {@code null}
|
||||||
|
@ -226,12 +250,14 @@ public enum DatabaseDriver {
|
||||||
Assert.isTrue(url.startsWith("jdbc"), "URL must start with 'jdbc'");
|
Assert.isTrue(url.startsWith("jdbc"), "URL must start with 'jdbc'");
|
||||||
String urlWithoutPrefix = url.substring("jdbc".length()).toLowerCase();
|
String urlWithoutPrefix = url.substring("jdbc".length()).toLowerCase();
|
||||||
for (DatabaseDriver driver : values()) {
|
for (DatabaseDriver driver : values()) {
|
||||||
String prefix = ":" + driver.name().toLowerCase() + ":";
|
for (String urlPrefix : driver.getUrlPrefixes()) {
|
||||||
|
String prefix = ":" + urlPrefix + ":";
|
||||||
if (driver != UNKNOWN && urlWithoutPrefix.startsWith(prefix)) {
|
if (driver != UNKNOWN && urlWithoutPrefix.startsWith(prefix)) {
|
||||||
return driver;
|
return driver;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return UNKNOWN;
|
return UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||||
*
|
*
|
||||||
* @author Phillip Webb
|
* @author Phillip Webb
|
||||||
* @author Maciej Walkowiak
|
* @author Maciej Walkowiak
|
||||||
|
* @author Stephane Nicoll
|
||||||
*/
|
*/
|
||||||
public class DatabaseDriverTests {
|
public class DatabaseDriverTests {
|
||||||
|
|
||||||
|
@ -70,25 +71,73 @@ public class DatabaseDriverTests {
|
||||||
public void databaseProductNameLookups() throws Exception {
|
public void databaseProductNameLookups() throws Exception {
|
||||||
assertThat(DatabaseDriver.fromProductName("newone"))
|
assertThat(DatabaseDriver.fromProductName("newone"))
|
||||||
.isEqualTo(DatabaseDriver.UNKNOWN);
|
.isEqualTo(DatabaseDriver.UNKNOWN);
|
||||||
assertThat(DatabaseDriver.fromProductName("HSQL Database Engine"))
|
|
||||||
.isEqualTo(DatabaseDriver.HSQLDB);
|
|
||||||
assertThat(DatabaseDriver.fromProductName("Oracle"))
|
|
||||||
.isEqualTo(DatabaseDriver.ORACLE);
|
|
||||||
assertThat(DatabaseDriver.fromProductName("Apache Derby"))
|
assertThat(DatabaseDriver.fromProductName("Apache Derby"))
|
||||||
.isEqualTo(DatabaseDriver.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("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"))
|
assertThat(DatabaseDriver.fromProductName("DB2/LINUXX8664"))
|
||||||
.isEqualTo(DatabaseDriver.DB2);
|
.isEqualTo(DatabaseDriver.DB2);
|
||||||
assertThat(DatabaseDriver.fromProductName("DB2 UDB for AS/400"))
|
assertThat(DatabaseDriver.fromProductName("DB2 UDB for AS/400"))
|
||||||
.isEqualTo(DatabaseDriver.DB2_AS400);
|
.isEqualTo(DatabaseDriver.DB2_AS400);
|
||||||
assertThat(DatabaseDriver.fromProductName("DB3 XDB for AS/400"))
|
assertThat(DatabaseDriver.fromProductName("DB3 XDB for AS/400"))
|
||||||
.isEqualTo(DatabaseDriver.DB2_AS400);
|
.isEqualTo(DatabaseDriver.DB2_AS400);
|
||||||
|
assertThat(DatabaseDriver.fromProductName("Teradata"))
|
||||||
|
.isEqualTo(DatabaseDriver.TERADATA);
|
||||||
assertThat(DatabaseDriver.fromProductName("Informix Dynamic Server"))
|
assertThat(DatabaseDriver.fromProductName("Informix Dynamic Server"))
|
||||||
.isEqualTo(DatabaseDriver.INFORMIX);
|
.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);
|
.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