Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
2b090505
Commit
2b090505
authored
Dec 15, 2016
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '1.4.x' into 1.5.x
parents
0fbe56ea
477c874e
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
84 additions
and
9 deletions
+84
-9
DatabaseDriver.java
...in/java/org/springframework/boot/jdbc/DatabaseDriver.java
+30
-4
DatabaseDriverTests.java
...va/org/springframework/boot/jdbc/DatabaseDriverTests.java
+54
-5
No files found.
spring-boot/src/main/java/org/springframework/boot/jdbc/DatabaseDriver.java
View file @
2b090505
...
@@ -16,6 +16,10 @@
...
@@ -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 {
...
@@ -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 {
...
@@ -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 {
...
@@ -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 {
...
@@ -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,9 +250,11 @@ public enum DatabaseDriver {
...
@@ -226,9 +250,11 @@ 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
())
{
if
(
driver
!=
UNKNOWN
&&
urlWithoutPrefix
.
startsWith
(
prefix
))
{
String
prefix
=
":"
+
urlPrefix
+
":"
;
return
driver
;
if
(
driver
!=
UNKNOWN
&&
urlWithoutPrefix
.
startsWith
(
prefix
))
{
return
driver
;
}
}
}
}
}
}
}
...
...
spring-boot/src/test/java/org/springframework/boot/jdbc/DatabaseDriverTests.java
View file @
2b090505
...
@@ -27,6 +27,7 @@ import static org.assertj.core.api.Assertions.assertThat;
...
@@ -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 {
...
@@ -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
(
"Apache Derby"
))
.
isEqualTo
(
DatabaseDriver
.
DERBY
);
assertThat
(
DatabaseDriver
.
fromProductName
(
"H2"
))
.
isEqualTo
(
DatabaseDriver
.
H2
);
assertThat
(
DatabaseDriver
.
fromProductName
(
"HSQL Database Engine"
))
assertThat
(
DatabaseDriver
.
fromProductName
(
"HSQL Database Engine"
))
.
isEqualTo
(
DatabaseDriver
.
HSQLDB
);
.
isEqualTo
(
DatabaseDriver
.
HSQLDB
);
assertThat
(
DatabaseDriver
.
fromProductName
(
"SQLite"
))
.
isEqualTo
(
DatabaseDriver
.
SQLITE
);
assertThat
(
DatabaseDriver
.
fromProductName
(
"MySQL"
))
.
isEqualTo
(
DatabaseDriver
.
MYSQL
);
assertThat
(
DatabaseDriver
.
fromProductName
(
"Oracle"
))
assertThat
(
DatabaseDriver
.
fromProductName
(
"Oracle"
))
.
isEqualTo
(
DatabaseDriver
.
ORACLE
);
.
isEqualTo
(
DatabaseDriver
.
ORACLE
);
assertThat
(
DatabaseDriver
.
fromProductName
(
"Apache Derby"
))
assertThat
(
DatabaseDriver
.
fromProductName
(
"PostgreSQL"
))
.
isEqualTo
(
DatabaseDriver
.
DERBY
);
.
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
);
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment