anchor.diff:  				if ( structCount( msSql ) gt 0){
   					return {
   						class: 'com.microsoft.sqlserver.jdbc.SQLServerDriver'
  -						, bundleName: 'mssqljdbc4'
  -					, bundleVersion: '4.0.2206.100'
  +						, bundleName: 'org.lucee.mssql'
  +						, bundleVersion: getDefaultBundleVersion('org.lucee.mssql', '4.0.2206.100')
   						, connectionString: 'jdbc:sqlserver://#msSQL.SERVER#:#msSQL.PORT#;DATABASENAME=#msSQL.DATABASE#;sendStringParametersAsUnicode=true;SelectMethod=direct'
   						, username: msSQL.username
   						, password: msSQL.password
  
positive.code: 					return {
  						class: 'com.mysql.cj.jdbc.Driver'
  						, bundleName: 'com.mysql.cj'
  						, bundleVersion: '8.0.19'
  						, connectionString: 'jdbc:mysql://#mySQL.server#:#mySQL.port#/#mySQL.database#?useUnicode=true&characterEncoding=UTF-8&useLegacyDatetimeCode=true&useSSL=false'
  						, username: mySQL.username
  						, password: mySQL.password
  
negative.code: 		SystemOutput( "Warning test service: [ #arguments.service# ] is not configured", true );
  		return {};
  	}
  
  	function getDefaultBundleVersion (bundleName, fallbackVersion) cachedWithin="request" {
  		var bundles = getBundleVersions ();
  		if (structKeyExists(bundles, arguments.bundleName)){
  			//systemOutput(arguments.bundleName & " " & bundles[arguments.bundleName], true)
  			return bundles[arguments.bundleName];
  		} else {
  			systemOutput("getDefaultBundleVersion: " & arguments.bundleName & " FALLLING BACK TO DEFAULT " & arguments.fallbackVersion, true)
  			return arguments.fallbackVersion ;
  		}
  	}		
  
  	function getBundleVersions () cachedWithin="#createTimeSpan(1,0,0,0)#"{
  		admin 
  			type="server"
  			password="#server.SERVERADMINPASSWORD#" 
  			action="getBundles" 
  			returnvariable="q_bundles"
  		var bundles = {};
  		loop query=q_bundles {
  			var _bundle = {};
  			_bundle.append(q_bundles.headers);
  			bundles[_bundle['Bundle-SymbolicName']] = _bundle['Bundle-Version'];
  		}
  		return bundles;
  	}
  }
  
  
  