}
public static DataSourceDeploymentMetaData createDeployment(final DataSourceMetaData dsmd)
{
NonXADataSourceDeploymentMetaData deploymentMetaData = null;
if(dsmd.isTransactional())
{
deploymentMetaData= new LocalDataSourceDeploymentMetaData();
}
else
{
deploymentMetaData = new NoTxDataSourceDeploymentMetaData();
}
List<DataSourceConnectionPropertyMetaData> connectionProps = deploymentMetaData.getDataSourceConnectionProperties();
boolean useUrl = true;
String serverName = dsmd.getServerName();
String dataBaseName = dsmd.getDatabaseName();
int portNumber = dsmd.getPortNumber();
String url = dsmd.getUrl();
DataSourceConnectionPropertyMetaData connectionProp = null;
if(serverName != null && !serverName.isEmpty())
{
useUrl = false;
connectionProp = new DataSourceConnectionPropertyMetaData();
connectionProp.setName("serverName");
connectionProp.setValue(serverName);
connectionProps.add(connectionProp);
}
if(dataBaseName != null && !dataBaseName.isEmpty())
{
useUrl = false;
connectionProp = new DataSourceConnectionPropertyMetaData();
connectionProp.setName("databaseName");
connectionProp.setValue(dataBaseName);
connectionProps.add(connectionProp);
}
if(portNumber > -1)
{
useUrl = false;
connectionProp = new DataSourceConnectionPropertyMetaData();
connectionProp.setName("portNumber");
connectionProp.setValue(String.valueOf(portNumber));
connectionProps.add(connectionProp);
}
connectionProp = new DataSourceConnectionPropertyMetaData();
connectionProp.setName("loginTimeout");
connectionProp.setValue(String.valueOf(dsmd.getLoginTimeout()));
connectionProps.add(connectionProp);
if(useUrl)
{
deploymentMetaData.setConnectionUrl(url);
}
else
{
//Hack for EE5.17 we are going to use the new DataSource rar to manage data sources that do not specify a Url, or specify properties
//within the deployment ie serverName, dataBaseName etc. This is largely to reduce the number of changes required to support
//this particular section in the spec.
deploymentMetaData.setUseDataSource(true);
logger.debug("Creating data source using standard JDBC4 based properties.");
}
deploymentMetaData.setDriverClass(dsmd.getClassName());
deploymentMetaData.setUserName(dsmd.getUser());
deploymentMetaData.setPassWord(dsmd.getPassword());
if(dsmd.getIsolationLevel() != null)
{
deploymentMetaData.setTransactionIsolation(dsmd.getIsolationLevel().toString());
}
if(dsmd.getMaxStatements() > -1)
{
deploymentMetaData.setPreparedStatementCacheSize(dsmd.getMaxStatements());
}
ConnectionPoolMetaData cpmd = (ConnectionPoolMetaData)deploymentMetaData;
if(dsmd.getMinPoolSize() != -1)