Author: cschneider
Date: Tue May 30 13:18:24 2017
New Revision: 1796860
URL: http://svn.apache.org/viewvc?rev=1796860&view=rev
Log:
[ARIES-1550] getConnection with null user. Closes #47
Call underlying datasource“s getConnection() if no
aries.xa.username is set. Relates to ARIES-1171.
Modified:
aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/DataSourceMCFFactory.java
Modified:
aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/DataSourceMCFFactory.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/DataSourceMCFFactory.java?rev=1796860&r1=1796859&r2=1796860&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/DataSourceMCFFactory.java
(original)
+++
aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/DataSourceMCFFactory.java
Tue May 30 13:18:24 2017
@@ -18,10 +18,16 @@
*/
package org.apache.aries.transaction.jdbc.internal;
+import org.tranql.connector.CredentialExtractor;
+import org.tranql.connector.jdbc.AbstractLocalDataSourceMCF;
+
+import javax.resource.ResourceException;
+import javax.resource.spi.ResourceAdapterInternalException;
import javax.resource.spi.TransactionSupport;
+import javax.security.auth.Subject;
import javax.sql.DataSource;
-
-import org.tranql.connector.jdbc.AbstractLocalDataSourceMCF;
+import java.sql.Connection;
+import java.sql.SQLException;
public class DataSourceMCFFactory extends AbstractMCFFactory {
@@ -50,6 +56,21 @@ public class DataSourceMCFFactory extend
}
@Override
+ protected Connection getPhysicalConnection(Subject subject,
CredentialExtractor credentialExtractor) throws ResourceException {
+ try {
+ String userName = credentialExtractor.getUserName();
+ String password = credentialExtractor.getPassword();
+ if (userName != null) {
+ return dataSource.getConnection(userName, password);
+ } else {
+ return dataSource.getConnection();
+ }
+ } catch (SQLException e) {
+ throw new ResourceAdapterInternalException("Unable to obtain
physical connection to " + dataSource, e);
+ }
+ }
+
+ @Override
public TransactionSupportLevel getTransactionSupport() {
return TransactionSupportLevel.LocalTransaction;
}