in tx-control-providers/jdbc/tx-control-provider-jdbc-xa/src/main/java/org/apache/aries/tx/control/jdbc/xa/impl/JDBCConnectionProviderFactoryImpl.java [100:125]
public AbstractJDBCConnectionProvider getProviderFor(DataSource ds, Map<String, Object> resourceProviderProperties) {
boolean xaEnabled = toBoolean(resourceProviderProperties, XA_ENLISTMENT_ENABLED, true);
boolean localEnabled = toBoolean(resourceProviderProperties, LOCAL_ENLISTMENT_ENABLED, true);
XADataSource xaDS;
if(ds instanceof XADataSource) {
xaDS = (XADataSource) ds;
} else {
try {
if(ds.isWrapperFor(XADataSource.class)) {
xaDS = ds.unwrap(XADataSource.class);
} else {
xaDS = null;
}
} catch (SQLException sqle) {
xaDS = null;
}
}
checkEnlistment(xaEnabled, localEnabled, xaDS != null);
DataSource toUse = poolIfNecessary(resourceProviderProperties, xaEnabled ?
new XADataSourceMapper(xaDS) : ds);
return new JDBCConnectionProviderImpl(toUse, xaEnabled, localEnabled,
getRecoveryId(resourceProviderProperties, xaEnabled), context,
resourceProviderProperties);
}