Author: gnodet
Date: Fri Oct 10 07:05:57 2014
New Revision: 1630667

URL: http://svn.apache.org/r1630667
Log:
[ARIES-1250] Make sure the TransactionManager is really optional

Modified:
    
aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/RecoverableDataSource.java
    
aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/ConnectionManagerFactory.java

Modified: 
aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/RecoverableDataSource.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/RecoverableDataSource.java?rev=1630667&r1=1630666&r2=1630667&view=diff
==============================================================================
--- 
aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/RecoverableDataSource.java
 (original)
+++ 
aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/RecoverableDataSource.java
 Fri Oct 10 07:05:57 2014
@@ -192,7 +192,13 @@ public class RecoverableDataSource imple
      */
     public void start() throws Exception {
         AbstractMCFFactory mcf;
-        if (dataSource instanceof XADataSource) {
+        if (("xa".equals(transaction) || "local".equals(transaction)) && 
transactionManager == null) {
+            throw new IllegalArgumentException("xa or local transactions 
specified, but no TransactionManager set");
+        }
+        if ("xa".equals(transaction) && !(dataSource instanceof XADataSource)) 
{
+            throw new IllegalArgumentException("xa transactions specified, but 
DataSource does not implement javax.sql.XADataSource");
+        }
+        if ("xa".equals(transaction) || (transactionManager != null && 
dataSource instanceof XADataSource)) {
             mcf = new XADataSourceMCFFactory();
             if (transaction == null) {
                 transaction = "xa";
@@ -200,7 +206,7 @@ public class RecoverableDataSource imple
         } else if (dataSource instanceof DataSource) {
             mcf = new DataSourceMCFFactory();
             if (transaction == null) {
-                transaction = "local";
+                transaction = "none";
             }
         } else {
             throw new IllegalArgumentException("dataSource must be of type 
javax.sql.DataSource/XADataSource");

Modified: 
aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/ConnectionManagerFactory.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/ConnectionManagerFactory.java?rev=1630667&r1=1630666&r2=1630667&view=diff
==============================================================================
--- 
aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/ConnectionManagerFactory.java
 (original)
+++ 
aries/trunk/transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/ConnectionManagerFactory.java
 Fri Oct 10 07:05:57 2014
@@ -71,7 +71,7 @@ public class ConnectionManagerFactory {
     }
 
     public void init() throws Exception {
-        if (transactionManager == null) {
+        if (transactionManager == null && ("xa".equals(transaction) || 
"local".equals(transaction))) {
             throw new IllegalArgumentException("transactionManager must be 
set");
         }
         if (managedConnectionFactory == null) {
@@ -138,7 +138,7 @@ public class ConnectionManagerFactory {
         if (connectionTracker == null) {
             connectionTracker = new ConnectionTrackingCoordinator();
         }
-        if (transactionManagerMonitor == null) {
+        if (transactionManagerMonitor == null && transactionManager != null) {
             transactionManagerMonitor = new 
GeronimoTransactionListener(connectionTracker);
             
transactionManager.addTransactionAssociationListener(transactionManagerMonitor);
         }


Reply via email to