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");
 | 
			
		||||
 * 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 catalog;
 | 
			
		||||
 | 
			
		||||
	private String schema;
 | 
			
		||||
 | 
			
		||||
	private Properties connectionProperties;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -88,6 +92,40 @@ public abstract class AbstractDriverBasedDataSource extends AbstractDataSource {
 | 
			
		|||
		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,
 | 
			
		||||
	 * to be passed to the Driver.
 | 
			
		||||
| 
						 | 
				
			
			@ -152,7 +190,15 @@ public abstract class AbstractDriverBasedDataSource extends AbstractDataSource {
 | 
			
		|||
		if (password != null) {
 | 
			
		||||
			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 catalog;
 | 
			
		||||
 | 
			
		||||
	private String schema;
 | 
			
		||||
 | 
			
		||||
	private final ThreadLocal<JdbcUserCredentials> threadBoundCredentials =
 | 
			
		||||
			new NamedThreadLocal<>("Current JDBC user credentials");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -93,6 +97,24 @@ public class UserCredentialsDataSourceAdapter extends DelegatingDataSource {
 | 
			
		|||
		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.
 | 
			
		||||
| 
						 | 
				
			
			@ -128,12 +150,17 @@ public class UserCredentialsDataSourceAdapter extends DelegatingDataSource {
 | 
			
		|||
	@Override
 | 
			
		||||
	public Connection getConnection() throws SQLException {
 | 
			
		||||
		JdbcUserCredentials threadCredentials = this.threadBoundCredentials.get();
 | 
			
		||||
		if (threadCredentials != null) {
 | 
			
		||||
			return doGetConnection(threadCredentials.username, threadCredentials.password);
 | 
			
		||||
		Connection con = (threadCredentials != null ?
 | 
			
		||||
				doGetConnection(threadCredentials.username, threadCredentials.password) :
 | 
			
		||||
				doGetConnection(this.username, this.password));
 | 
			
		||||
 | 
			
		||||
		if (this.catalog != null) {
 | 
			
		||||
			con.setCatalog(this.catalog);
 | 
			
		||||
		}
 | 
			
		||||
		else {
 | 
			
		||||
			return doGetConnection(this.username, this.password);
 | 
			
		||||
		if (this.schema != null) {
 | 
			
		||||
			con.setSchema(this.schema);
 | 
			
		||||
		}
 | 
			
		||||
		return con;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue