public AbstractJDBCConnectionProvider getProviderFor()

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);
	}