docs: public void sanitize(){
  		if (this.configFile != null){
  			loadProperties(this.configFile);
  		}
  
  		if (this.poolStrategy == null || !(this.poolStrategy.equalsIgnoreCase("DEFAULT") || this.poolStrategy.equalsIgnoreCase("CACHED"))){
  			logger.warn("Unrecognised pool strategy. Allowed values are DEFAULT and CACHED. Setting to DEFAULT.");
  			this.poolStrategy = "DEFAULT";
  		} 
  
  		this.poolStrategy = this.poolStrategy.toUpperCase();
  
  		if ((this.poolAvailabilityThreshold < 0) || (this.poolAvailabilityThreshold > 100)){
  			this.poolAvailabilityThreshold = 20;
  		}
  
  		if (this.defaultTransactionIsolation != null){
  			this.defaultTransactionIsolation = this.defaultTransactionIsolation.trim().toUpperCase();
  
  			if (this.defaultTransactionIsolation.equals("NONE")){
  				this.defaultTransactionIsolationValue = Connection.TRANSACTION_NONE;
  			} else if (this.defaultTransactionIsolation.equals("READ_COMMITTED") || this.defaultTransactionIsolation.equals("READ COMMITTED")){
  				this.defaultTransactionIsolationValue = Connection.TRANSACTION_READ_COMMITTED;
  			} else if (this.defaultTransactionIsolation.equals("REPEATABLE_READ") || this.defaultTransactionIsolation.equals("REPEATABLE READ")){
  				this.defaultTransactionIsolationValue = Connection.TRANSACTION_REPEATABLE_READ;
  			} else if (this.defaultTransactionIsolation.equals("READ_UNCOMMITTED") || this.defaultTransactionIsolation.equals("READ UNCOMMITTED")){
  				this.defaultTransactionIsolationValue = Connection.TRANSACTION_READ_UNCOMMITTED;
  			} else if (this.defaultTransactionIsolation.equals("SERIALIZABLE")){
  				this.defaultTransactionIsolationValue = Connection.TRANSACTION_SERIALIZABLE;
  			} else {
  				logger.warn("Unrecognized defaultTransactionIsolation value. Using driver default.");
  				this.defaultTransactionIsolationValue = -1;
  			}
  		}
  		if (this.maxConnectionsPerPartition < 1) {
  			logger.warn("Max Connections < 1. Setting to 20");
  			this.maxConnectionsPerPartition = 20;
  		}
  		if (this.minConnectionsPerPartition < 0) {
  			logger.warn("Min Connections < 0. Setting to 1");
  			this.minConnectionsPerPartition = 1;
  		}
  
  		if (this.minConnectionsPerPartition > this.maxConnectionsPerPartition) {
  			logger.warn("Min Connections > max connections");
  			this.minConnectionsPerPartition = this.maxConnectionsPerPartition;
  		}
  		if (this.acquireIncrement <= 0) {
  			logger.warn("acquireIncrement <= 0. Setting to 1.");
  			this.acquireIncrement = 1;
  		}
  		if (this.partitionCount < 1) {
  			logger.warn("partitions < 1! Setting to 1");
  			this.partitionCount = 1;
  		}
  
  		if (this.releaseHelperThreads < 0){
  			logger.warn("releaseHelperThreads < 0! Setting to 0");
  			this.releaseHelperThreads = 0;
  		}
  
  		if (this.statementReleaseHelperThreads < 0){
  			logger.warn("statementReleaseHelperThreads < 0! Setting to 0");
  			this.statementReleaseHelperThreads = 0;
  		}
  
  		if (this.statementsCacheSize < 0) {
  			logger.warn("preparedStatementsCacheSize < 0! Setting to 0");
  			this.statementsCacheSize = 0;
  		}
  
  		if (this.acquireRetryDelayInMs <= 0) {
  			this.acquireRetryDelayInMs = 1000;
  		}
  
  		if (!this.externalAuth && 
  				(this.datasourceBean == null) && 
  				this.driverProperties == null 
  				&& (this.jdbcUrl == null || this.jdbcUrl.trim().equals(""))){
  			logger.warn("JDBC url was not set in config!");
  		}
  
  		if (!this.externalAuth && this.datasourceBean == null && this.driverProperties == null && 
  				(this.username == null || this.username.trim().equals(""))){
  			logger.warn("JDBC username was not set in config!");
  		}
  
  		if (!this.externalAuth && (this.datasourceBean == null) && (this.driverProperties == null) && (this.password == null)){ 
  			logger.warn("JDBC password was not set in config!");
  		}
  
  
  		// if not external auth and no datasource and we have driver properties set...
  		if (!this.externalAuth && this.datasourceBean == null && this.driverProperties != null){
  			if ((this.driverProperties.get(USER) == null) && this.username == null){
  				logger.warn("JDBC username not set in driver properties and not set in pool config either");
  			} else if ((this.driverProperties.get(USER) == null) && this.username != null){
  				logger.warn("JDBC username not set in driver properties, copying it from pool config");
  				this.driverProperties.setProperty(USER, this.username);
  			} else if (this.username != null && !this.driverProperties.get(USER).equals(this.username)){
  				logger.warn("JDBC username set in driver properties does not match the one set in the pool config.  Overriding it with pool config.");
  				this.driverProperties.setProperty(USER, this.username);
  			}  
  		}
  
  		// if no datasource and we have driver properties set...
  		if (!this.externalAuth && this.datasourceBean == null && this.driverProperties != null){
  			if ((this.driverProperties.get(PASSWORD) == null) && this.password == null){
  				logger.warn("JDBC password not set in driver properties and not set in pool config either");
  			} else if ((this.driverProperties.get(PASSWORD) == null) && this.password != null){
  				logger.warn("JDBC password not set in driver properties, copying it from pool config");
  				this.driverProperties.setProperty(PASSWORD, this.password);
  			} else if (this.password != null && !this.driverProperties.get(PASSWORD).equals(this.password)){
  				logger.warn("JDBC password set in driver properties does not match the one set in the pool config. Overriding it with pool config.");
  				this.driverProperties.setProperty(PASSWORD, this.password);
  			}
  
  
  
  			// maintain sanity between the two states 
  			this.username = this.driverProperties.getProperty(USER);
  			this.password = this.driverProperties.getProperty(PASSWORD);
  		}
  
  		if (this.username != null){
  			this.username = this.username.trim();
  		}
  		if (this.jdbcUrl != null){
  			this.jdbcUrl = this.jdbcUrl.trim();
  		}
  		if (this.password != null){
  			this.password = this.password.trim();
  		}
  
  		if (this.connectionTestStatement != null) { 
  			this.connectionTestStatement = this.connectionTestStatement.trim();
  		}
  
  		this.serviceOrder = this.serviceOrder.toUpperCase();
  
  		if (!(this.serviceOrder.equals("FIFO") || this.serviceOrder.equals("LIFO"))){
  			logger.warn("Queue service order is not set to FIFO or LIFO. Defaulting to FIFO.");
  			this.serviceOrder = "FIFO";
  		}
  		
  		if (this.logStatementsEnabled && !logger.isDebugEnabled()){
  			logger.warn("LogStatementsEnabled is set to true, but log4j level is not set at DEBUG. Disabling statement logging.");
  			logStatementsEnabled = false;
  			
  		}
  
  	}