[jboss-cvs] JBossAS SVN: r106072 - in projects/jboss-jca/trunk: embedded/src/main/resources and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jun 15 15:57:56 EDT 2010


Author: jesper.pedersen
Date: 2010-06-15 15:57:55 -0400 (Tue, 15 Jun 2010)
New Revision: 106072

Modified:
   projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java
   projects/jboss-jca/trunk/embedded/src/main/resources/jca.xml
   projects/jboss-jca/trunk/sjc/src/main/resources/bootstrap/jca.xml
Log:
[JBJCA-360] Enable all connection manager types

Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java	2010-06-15 19:51:32 UTC (rev 106071)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java	2010-06-15 19:57:55 UTC (rev 106072)
@@ -29,9 +29,11 @@
 import org.jboss.jca.common.util.ContainerConnectionFactoryJndiNameBuilder;
 import org.jboss.jca.common.util.LocalConnectionFactoryBuilder;
 import org.jboss.jca.core.api.CloneableBootstrapContext;
+import org.jboss.jca.core.connectionmanager.AbstractConnectionManager;
 import org.jboss.jca.core.connectionmanager.notx.NoTxConnectionManager;
 import org.jboss.jca.core.connectionmanager.pool.PoolParams;
 import org.jboss.jca.core.connectionmanager.pool.strategy.OnePool;
+import org.jboss.jca.core.connectionmanager.tx.TxConnectionManager;
 import org.jboss.jca.validator.Failure;
 import org.jboss.jca.validator.FailureHelper;
 import org.jboss.jca.validator.Key;
@@ -72,6 +74,7 @@
 import javax.resource.spi.ResourceAdapterAssociation;
 import javax.resource.spi.TransactionSupport;
 import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
+import javax.transaction.TransactionManager;
 
 import org.jboss.logging.Logger;
 import org.jboss.metadata.rar.jboss.BvGroupMetaData;
@@ -81,7 +84,9 @@
 import org.jboss.metadata.rar.spec.ConfigPropertyMetaData;
 import org.jboss.metadata.rar.spec.ConnectionDefinitionMetaData;
 import org.jboss.metadata.rar.spec.ConnectorMetaData;
+import org.jboss.metadata.rar.spec.JCA10DTDMetaData;
 import org.jboss.metadata.rar.spec.MessageListenerMetaData;
+import org.jboss.metadata.rar.spec.TransactionSupportMetaData;
 import org.jboss.util.naming.Util;
 
 import com.github.fungal.api.classloading.ClassLoaderFactory;
@@ -106,6 +111,9 @@
 
    private static boolean trace = log.isTraceEnabled();
 
+   /** The transaction manager */
+   private static TransactionManager transactionManager = null;
+
    /** Preform bean validation */
    private static AtomicBoolean beanValidation = new AtomicBoolean(true);
 
@@ -138,6 +146,24 @@
    }
 
    /**
+    * Set the transaction manager
+    * @param value The value
+    */
+   public synchronized void setTransactionManager(TransactionManager value)
+   {
+      transactionManager = value;
+   }
+
+   /**
+    * Get the transaction manager
+    * @return The value
+    */
+   public synchronized TransactionManager getTransactionManager()
+   {
+      return transactionManager;
+   }
+
+   /**
     * Set if bean validation should be performed
     * @param value The value
     */
@@ -437,22 +463,71 @@
                                                                         cdMeta.getConfigProps()));
                         beanValidationObjects.add(mcf);
                         associateResourceAdapter(resourceAdapter, mcf);
-
-                        // Section 7.13 -- read from metadata -> overwrite with specified value if present
+                        
+                        // Add a connection manager
+                        AbstractConnectionManager cm = null;
                         TransactionSupportLevel tsl = TransactionSupportLevel.NoTransaction;
+                        TransactionSupportMetaData tsmd = TransactionSupportMetaData.NoTransaction;
+                        
+                        if (cmd instanceof JCA10DTDMetaData)
+                        {
+                           tsmd = ((JCA10DTDMetaData)cmd).getRa10().getTransSupport();
+                        }
+                        else
+                        {
+                           tsmd = cmd.getRa().getOutboundRa().getTransSupport();
+                        }
 
+                        if (tsmd == TransactionSupportMetaData.NoTransaction)
+                        {
+                           tsl = TransactionSupportLevel.NoTransaction;
+                        }
+                        else if (tsmd == TransactionSupportMetaData.LocalTransaction)
+                        {
+                           tsl = TransactionSupportLevel.LocalTransaction;
+                        }
+                        else if (tsmd == TransactionSupportMetaData.XATransaction)
+                        {
+                           tsl = TransactionSupportLevel.XATransaction;
+                        }
+
+                        // Section 7.13 -- Read from metadata -> overwrite with specified value if present
                         if (mcf instanceof TransactionSupport)
                            tsl = ((TransactionSupport)mcf).getTransactionSupport();
 
-                        // TODO: add proper configuration and use it (support TxConnectionManager as well)
-                        NoTxConnectionManager noTxCm = new NoTxConnectionManager();
+                        // Select the correct connection manager
+                        if (tsl == TransactionSupportLevel.NoTransaction)
+                        {
+                           NoTxConnectionManager noTxCm = new NoTxConnectionManager();
+                           cm = noTxCm;
+                        }
+                        else if (tsl == TransactionSupportLevel.LocalTransaction)
+                        {
+                           if (transactionManager == null)
+                              throw new IllegalStateException("TransactionManager is null");
+
+                           TxConnectionManager txCm = new TxConnectionManager();
+                           txCm.setTransactionManager(transactionManager);
+                           txCm.setLocalTransactions(true);
+                           cm = txCm;
+                        }
+                        else if (tsl == TransactionSupportLevel.XATransaction)
+                        {
+                           if (transactionManager == null)
+                              throw new IllegalStateException("TransactionManager is null");
+
+                           TxConnectionManager txCm = new TxConnectionManager();
+                           txCm.setTransactionManager(transactionManager);
+                           cm = txCm;
+                        }
+
                         PoolParams poolParams = new PoolParams();
                         OnePool onePool = new OnePool(mcf, poolParams, true);
-                        onePool.setConnectionListenerFactory(noTxCm);
-                        noTxCm.setPoolingStrategy(onePool);
+                        onePool.setConnectionListenerFactory(cm);
+                        cm.setPoolingStrategy(onePool);
 
                         // ConnectionFactory
-                        Object cf = mcf.createConnectionFactory(noTxCm);
+                        Object cf = mcf.createConnectionFactory(cm);
 
                         if (cf == null)
                         {

Modified: projects/jboss-jca/trunk/embedded/src/main/resources/jca.xml
===================================================================
--- projects/jboss-jca/trunk/embedded/src/main/resources/jca.xml	2010-06-15 19:51:32 UTC (rev 106071)
+++ projects/jboss-jca/trunk/embedded/src/main/resources/jca.xml	2010-06-15 19:57:55 UTC (rev 106072)
@@ -88,6 +88,7 @@
     <property name="BeanValidation">true</property>
     <property name="PrintStream"><inject bean="JBossStdioContext" property="Out"/></property>
     <property name="DefaultBootstrapContext"><inject bean="DefaultBootstrapContext"/></property>
+    <property name="TransactionManager"><inject bean="RealTransactionManager"/></property>
     <depends>BeanValidation</depends>
     <depends>JBossStdioContextSelector</depends>
   </bean>

Modified: projects/jboss-jca/trunk/sjc/src/main/resources/bootstrap/jca.xml
===================================================================
--- projects/jboss-jca/trunk/sjc/src/main/resources/bootstrap/jca.xml	2010-06-15 19:51:32 UTC (rev 106071)
+++ projects/jboss-jca/trunk/sjc/src/main/resources/bootstrap/jca.xml	2010-06-15 19:57:55 UTC (rev 106072)
@@ -91,6 +91,7 @@
     <property name="BeanValidation">true</property>
     <property name="PrintStream"><inject bean="JBossStdioContext" property="Out"/></property>
     <property name="DefaultBootstrapContext"><inject bean="DefaultBootstrapContext"/></property>
+    <property name="TransactionManager"><inject bean="RealTransactionManager"/></property>
     <depends>BeanValidation</depends>
     <depends>JBossStdioContextSelector</depends>
   </bean>



More information about the jboss-cvs-commits mailing list