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


Reply via email to