docs: protected static void setupDataSourceProviders(){
  		List<String> providerProperties = new LinkedList<String>();
  		for (Object key: configuration.keySet()){
  			String keyName = (String)key;
  			if (keyName.startsWith(PROVIDER_PROPERTY_NAME)){
  				providerProperties.add(keyName);
  			}
  		}
  		
  		dataSourceProviders = new HashMap<String, DataSourceProvider>();
  		for (String keyName: providerProperties){
  			String providerName = keyName.substring(PROVIDER_PROPERTY_NAME.length(), keyName.length());
  			String providerClassName = configuration.getProperty(keyName);
  			configuration.remove(keyName);
  			DataSourceProvider dsp = null;
  			try {
  				dsp = (DataSourceProvider)Class.forName(providerClassName).newInstance();
  				dataSourceProviders.put(providerName, dsp);
  			} catch (Throwable t) {
  				if (t instanceof NoClassDefFoundError){
  					log.debug("DataSourceProvider not initialized for '" + providerName + "' because the provider class was not found: " + t.getMessage());
  				}else{
  					log.error("Cannot instantiate DataSourceProvider for '" + providerName + "': " + providerClassName, t);
  				}
  			}
  		}
  	}