DataSource adapters expose setCatalog/setSchema next to setUsername/setPassword
Issue: SPR-14501
This commit is contained in:
parent
e756a5b54b
commit
610bdf1cc3
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2013 the original author or authors.
|
* Copyright 2002-2016 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -39,6 +39,10 @@ public abstract class AbstractDriverBasedDataSource extends AbstractDataSource {
|
||||||
|
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
|
private String catalog;
|
||||||
|
|
||||||
|
private String schema;
|
||||||
|
|
||||||
private Properties connectionProperties;
|
private Properties connectionProperties;
|
||||||
|
|
||||||
|
|
||||||
|
@ -88,6 +92,40 @@ public abstract class AbstractDriverBasedDataSource extends AbstractDataSource {
|
||||||
return this.password;
|
return this.password;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify a database catalog to be applied to each Connection.
|
||||||
|
* @since 4.3.2
|
||||||
|
* @see Connection#setCatalog
|
||||||
|
*/
|
||||||
|
public void setCatalog(String catalog) {
|
||||||
|
this.catalog = catalog;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the database catalog to be applied to each Connection, if any.
|
||||||
|
* @since 4.3.2
|
||||||
|
*/
|
||||||
|
public String getCatalog() {
|
||||||
|
return this.catalog;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify a database schema to be applied to each Connection.
|
||||||
|
* @since 4.3.2
|
||||||
|
* @see Connection#setSchema
|
||||||
|
*/
|
||||||
|
public void setSchema(String schema) {
|
||||||
|
this.schema = schema;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the database schema to be applied to each Connection, if any.
|
||||||
|
* @since 4.3.2
|
||||||
|
*/
|
||||||
|
public String getSchema() {
|
||||||
|
return this.schema;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specify arbitrary connection properties as key/value pairs,
|
* Specify arbitrary connection properties as key/value pairs,
|
||||||
* to be passed to the Driver.
|
* to be passed to the Driver.
|
||||||
|
@ -152,7 +190,15 @@ public abstract class AbstractDriverBasedDataSource extends AbstractDataSource {
|
||||||
if (password != null) {
|
if (password != null) {
|
||||||
mergedProps.setProperty("password", password);
|
mergedProps.setProperty("password", password);
|
||||||
}
|
}
|
||||||
return getConnectionFromDriver(mergedProps);
|
|
||||||
|
Connection con = getConnectionFromDriver(mergedProps);
|
||||||
|
if (this.catalog != null) {
|
||||||
|
con.setCatalog(this.catalog);
|
||||||
|
}
|
||||||
|
if (this.schema != null) {
|
||||||
|
con.setSchema(this.schema);
|
||||||
|
}
|
||||||
|
return con;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -65,6 +65,10 @@ public class UserCredentialsDataSourceAdapter extends DelegatingDataSource {
|
||||||
|
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
|
private String catalog;
|
||||||
|
|
||||||
|
private String schema;
|
||||||
|
|
||||||
private final ThreadLocal<JdbcUserCredentials> threadBoundCredentials =
|
private final ThreadLocal<JdbcUserCredentials> threadBoundCredentials =
|
||||||
new NamedThreadLocal<>("Current JDBC user credentials");
|
new NamedThreadLocal<>("Current JDBC user credentials");
|
||||||
|
|
||||||
|
@ -93,6 +97,24 @@ public class UserCredentialsDataSourceAdapter extends DelegatingDataSource {
|
||||||
this.password = password;
|
this.password = password;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify a database catalog to be applied to each retrieved Connection.
|
||||||
|
* @since 4.3.2
|
||||||
|
* @see Connection#setCatalog
|
||||||
|
*/
|
||||||
|
public void setCatalog(String catalog) {
|
||||||
|
this.catalog = catalog;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify a database schema to be applied to each retrieved Connection.
|
||||||
|
* @since 4.3.2
|
||||||
|
* @see Connection#setSchema
|
||||||
|
*/
|
||||||
|
public void setSchema(String schema) {
|
||||||
|
this.schema = schema;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set user credententials for this proxy and the current thread.
|
* Set user credententials for this proxy and the current thread.
|
||||||
|
@ -128,12 +150,17 @@ public class UserCredentialsDataSourceAdapter extends DelegatingDataSource {
|
||||||
@Override
|
@Override
|
||||||
public Connection getConnection() throws SQLException {
|
public Connection getConnection() throws SQLException {
|
||||||
JdbcUserCredentials threadCredentials = this.threadBoundCredentials.get();
|
JdbcUserCredentials threadCredentials = this.threadBoundCredentials.get();
|
||||||
if (threadCredentials != null) {
|
Connection con = (threadCredentials != null ?
|
||||||
return doGetConnection(threadCredentials.username, threadCredentials.password);
|
doGetConnection(threadCredentials.username, threadCredentials.password) :
|
||||||
|
doGetConnection(this.username, this.password));
|
||||||
|
|
||||||
|
if (this.catalog != null) {
|
||||||
|
con.setCatalog(this.catalog);
|
||||||
}
|
}
|
||||||
else {
|
if (this.schema != null) {
|
||||||
return doGetConnection(this.username, this.password);
|
con.setSchema(this.schema);
|
||||||
}
|
}
|
||||||
|
return con;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue