[jboss-cvs] JBossAS SVN: r108180 - in projects/jboss-jca/trunk: core/src/main/java/org/jboss/jca/core/connectionmanager/tx and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Sep 16 13:53:21 EDT 2010


Author: jesper.pedersen
Date: 2010-09-16 13:53:20 -0400 (Thu, 16 Sep 2010)
New Revision: 108180

Modified:
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManagerFactory.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/TxConnectionManager.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManagerImpl.java
   projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManagerTestCase.java
   projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/XATxConnectionManagerTestCase.java
   projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/AbstractResourceAdapterDeployer.java
   projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/DsXmlDeployer.java
   projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RAActivator.java
   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/RaXmlDeployer.java
   projects/jboss-jca/trunk/doc/developerguide/en/modules/metadata.xml
Log:
[JBJCA-384] [JBJCA-405] [JBJCA-415] [JBJCA-416] Support XA settings

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManagerFactory.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManagerFactory.java	2010-09-16 17:17:12 UTC (rev 108179)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManagerFactory.java	2010-09-16 17:53:20 UTC (rev 108180)
@@ -51,8 +51,10 @@
     * @param allocationRetryWaitMillis The allocation retry millis value
     * @return The connection manager instance
     */
-   public NoTxConnectionManager createNonTransactional(final TransactionSupportLevel tsl, final Pool pool,
-      final Integer allocationRetry, final Long allocationRetryWaitMillis)
+   public NoTxConnectionManager createNonTransactional(final TransactionSupportLevel tsl,
+                                                       final Pool pool,
+                                                       final Integer allocationRetry, 
+                                                       final Long allocationRetryWaitMillis)
    {
       if (tsl == null)
          throw new IllegalArgumentException("TransactionSupportLevel is null");
@@ -64,21 +66,22 @@
 
       switch (tsl)
       {
-         case NoTransaction :
+         case NoTransaction:
             cm = new NoTxConnectionManagerImpl();
             break;
 
-         case LocalTransaction :
+         case LocalTransaction:
             throw new IllegalArgumentException("Transactional connection manager not supported");
 
-         case XATransaction :
+         case XATransaction:
             throw new IllegalArgumentException("Transactional connection manager not supported");
 
-         default :
+         default:
             throw new IllegalArgumentException("Unknown transaction support level " + tsl);
       }
 
       setProperties(cm, pool, allocationRetry, allocationRetryWaitMillis, null);
+      setNoTxProperties(cm);
 
       return cm;
    }
@@ -90,10 +93,23 @@
     * @param allocationRetry The allocation retry value
     * @param allocationRetryWaitMillis The allocation retry millis value
     * @param tm The transaction manager
+    * @param interleaving Enable interleaving
+    * @param xaResourceTimeout The transaction timeout for XAResource
+    * @param isSameRMOverride Should isSameRM be overridden
+    * @param wrapXAResource Should XAResource be wrapped
+    * @param padXid Should Xids be padded
     * @return The connection manager instance
     */
-   public TxConnectionManager createTransactional(final TransactionSupportLevel tsl, final Pool pool,
-      final Integer allocationRetry, final Long allocationRetryWaitMillis, final TransactionManager tm)
+   public TxConnectionManager createTransactional(final TransactionSupportLevel tsl,
+                                                  final Pool pool,
+                                                  final Integer allocationRetry,
+                                                  final Long allocationRetryWaitMillis,
+                                                  final TransactionManager tm,
+                                                  final Boolean interleaving,
+                                                  final Integer xaResourceTimeout,
+                                                  final Boolean isSameRMOverride,
+                                                  final Boolean wrapXAResource,
+                                                  final Boolean padXid)
    {
       if (tsl == null)
          throw new IllegalArgumentException("TransactionSupportLevel is null");
@@ -108,22 +124,23 @@
 
       switch (tsl)
       {
-         case NoTransaction :
+         case NoTransaction:
             throw new IllegalArgumentException("Non transactional connection manager not supported");
 
-         case LocalTransaction :
+         case LocalTransaction:
             cm = new TxConnectionManagerImpl(tm, true);
             break;
 
-         case XATransaction :
+         case XATransaction:
             cm = new TxConnectionManagerImpl(tm, false);
             break;
 
-         default :
+         default:
             throw new IllegalArgumentException("Unknown transaction support level " + tsl);
       }
 
       setProperties(cm, pool, allocationRetry, allocationRetryWaitMillis, tm);
+      setTxProperties(cm, interleaving, xaResourceTimeout, isSameRMOverride, wrapXAResource, padXid);
 
       return cm;
    }
@@ -135,10 +152,12 @@
     * @param allocationRetry The allocation retry value
     * @param allocationRetryWaitMillis The allocation retry millis value
     * @param tm The transaction manager
-    * @return The updated connection manager
     */
-   private AbstractConnectionManager setProperties(AbstractConnectionManager cm, Pool pool,
-      Integer allocationRetry, Long allocationRetryWaitMillis, TransactionManager tm)
+   private void setProperties(AbstractConnectionManager cm,
+                              Pool pool,
+                              Integer allocationRetry,
+                              Long allocationRetryWaitMillis,
+                              TransactionManager tm)
    {
       pool.setConnectionListenerFactory(cm);
       cm.setPool(pool);
@@ -151,7 +170,45 @@
 
       CachedConnectionManager ccm = new CachedConnectionManager(tm);
       cm.setCachedConnectionManager(ccm);
+   }
 
-      return cm;
+   /**
+    * NoTxConnectionManager properties
+    * @param cm The connection manager
+    */
+   private void setNoTxProperties(NoTxConnectionManagerImpl cm)
+   {
    }
+
+   /**
+    * TxConnectionManager properties
+    * @param cm The connection manager
+    * @param interleaving Enable interleaving
+    * @param xaResourceTimeout The transaction timeout for XAResource
+    * @param isSameRMOverride Should isSameRM be overridden
+    * @param wrapXAResource Should XAResource be wrapped
+    * @param padXid Should Xids be padded
+    */
+   private void setTxProperties(TxConnectionManagerImpl cm,
+                                Boolean interleaving,
+                                Integer xaResourceTimeout,
+                                Boolean isSameRMOverride,
+                                Boolean wrapXAResource,
+                                Boolean padXid)
+   {
+      if (interleaving != null)
+         cm.setInterleaving(interleaving.booleanValue());
+
+      if (xaResourceTimeout != null)
+         cm.setXAResourceTimeout(xaResourceTimeout.intValue());
+
+      if (isSameRMOverride != null)
+         cm.setIsSameRMOverride(isSameRMOverride.booleanValue());
+
+      if (wrapXAResource != null)
+         cm.setWrapXAResource(wrapXAResource.booleanValue());
+
+      if (padXid != null)
+         cm.setPadXid(padXid.booleanValue());
+   }
 }

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/TxConnectionManager.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/TxConnectionManager.java	2010-09-16 17:17:12 UTC (rev 108179)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/TxConnectionManager.java	2010-09-16 17:53:20 UTC (rev 108180)
@@ -39,4 +39,39 @@
                                              TransactionTimeoutConfiguration, 
                                              JTATransactionChecker
 {
+   /**
+    * Get the interleaving status
+    * @return True if interleaving; otherwise false
+    */
+   public boolean isInterleaving();
+
+   /**
+    * Get the local transaction status
+    * @return True if local transactions; false if XA
+    */
+   public boolean isLocalTransactions();
+
+   /**
+    * Get the XA resource transaction time out in seconds
+    * @return The value
+    */
+   public int getXAResourceTimeout();
+
+   /**
+    * Get the IsSameRMOverride status
+    * @return True if isSameRM is overridden; otherwise false
+    */
+   public boolean getIsSameRMOverride();
+
+   /**
+    * Get the wrap XAResource status
+    * @return True if XAResource instances are wrapped; otherwise false
+    */
+   public boolean getWrapXAResource();
+
+   /**
+    * Get the PadXid status
+    * @return True if Xids are padded; otherwise false
+    */
+   public boolean getPadXid();
 }

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManagerImpl.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManagerImpl.java	2010-09-16 17:17:12 UTC (rev 108179)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManagerImpl.java	2010-09-16 17:53:20 UTC (rev 108180)
@@ -60,7 +60,7 @@
 
 /**
  * The TxConnectionManager is a JBoss ConnectionManager
- * implementation for jca adapters implementing LocalTransaction and XAResource support.
+ * implementation for JCA adapters implementing LocalTransaction and XAResource support.
  * 
  * It implements a ConnectionEventListener that implements XAResource to
  * manage transactions through the Transaction Manager. To assure that all
@@ -154,7 +154,7 @@
    private boolean wrapXAResource = true;
 
    /**Same RM override*/
-   private Boolean isSameRMOverrideValue;
+   private boolean isSameRMOverride;
    
    /**Log trace*/
    private boolean trace = getLog().isTraceEnabled();
@@ -166,7 +166,7 @@
     */
    public TxConnectionManagerImpl(final TransactionManager tm, final boolean localTransactions)
    {
-      this.transactionManager = tm;
+      transactionManager = tm;
 
       setLocalTransactions(localTransactions);
    }
@@ -193,9 +193,9 @@
     * Sets interleaving flag.
     * @param value interleaving
     */
-   private void setInterleaving(boolean value)
+   public void setInterleaving(boolean value)
    {
-      this.interleaving = value;
+      interleaving = value;
    }
    
    /**
@@ -213,7 +213,7 @@
     */
    void setLocalTransactions(boolean v)
    {
-      this.localTransactions = v;
+      localTransactions = v;
 
       if (v)
          setInterleaving(false);
@@ -223,7 +223,7 @@
     * Gets XA resource transaction time out.
     * @return xa resource transaction timeout
     */
-   public int getXAResourceTransactionTimeout()
+   public int getXAResourceTimeout()
    {
       return xaResourceTimeout;
    }
@@ -232,22 +232,30 @@
     * Sets XA resource transaction timeout.
     * @param timeout xa resource transaction timeout
     */
-   public void setXAResourceTransactionTimeout(int timeout)
+   public void setXAResourceTimeout(int timeout)
    {
-      this.xaResourceTimeout = timeout;
+      xaResourceTimeout = timeout;
    }
    
    /**
-    * Get the IsSameRMOverrideValue value.
-    * 
-    * @return the IsSameRMOverrideValue value.
+    * Get the IsSameRMOverride value
+    * @return The value
     */
-   public Boolean getIsSameRMOverrideValue()
+   public boolean getIsSameRMOverride()
    {
-      return isSameRMOverrideValue;
+      return isSameRMOverride;
    }
    
    /**
+    * Set the IsSameRMOverride value.
+    * @param v The value
+    */
+   public void setIsSameRMOverride(boolean v)
+   {
+      isSameRMOverride = v;
+   }
+
+   /**
     * Returns true if wrap xa resource.
     * @return true if wrap xa resource
     */
@@ -257,42 +265,31 @@
    }
    
    /**
-    * Sets use xa wrapper.
-    * @param useXAWrapper use xa wrapper
+    * Set if the XAResource should be wrapped
+    * @param v The value
     */
-   public void setWrapXAResource(boolean useXAWrapper)
+   public void setWrapXAResource(boolean v)
    {
-      this.wrapXAResource = useXAWrapper;
-      
+      wrapXAResource = v;
    }
    
    /**
-    * Gets pad.
-    * @return pad 
+    * Get PadXis status
+    * @return The value
     */
    public boolean getPadXid()
    {
-      return this.padXid;
-      
+      return padXid;
    }
    
    /**
-    * Sets pad.
-    * @param padXid pad
+    * Set if the Xid should be padded
+    * @param v The value
     */
-   public void setPadXid(boolean padXid)
+   public void setPadXid(boolean v)
    {
-      this.padXid = padXid;
+      padXid = v;
    }
-   /**
-    * Set the IsSameRMOverrideValue value.
-    * 
-    * @param isSameRMOverrideValue The new IsSameRMOverrideValue value.
-    */
-   public void setIsSameRMOverrideValue(Boolean isSameRMOverrideValue)
-   {
-      this.isSameRMOverrideValue = isSameRMOverrideValue;
-   }
    
    /**
     * Gets time left.
@@ -302,14 +299,14 @@
     */
    public long getTimeLeftBeforeTransactionTimeout(boolean errorRollback) throws RollbackException
    {
-      if (this.transactionManager == null)
+      if (transactionManager == null)
       {
          throw new IllegalStateException("No transaction manager: " + getCachedConnectionManager());  
       }
 
-      if (this.transactionManager instanceof TransactionTimeoutConfiguration)
+      if (transactionManager instanceof TransactionTimeoutConfiguration)
       {
-         return ((TransactionTimeoutConfiguration) this.transactionManager).
+         return ((TransactionTimeoutConfiguration)transactionManager).
             getTimeLeftBeforeTransactionTimeout(errorRollback);  
       }
       
@@ -322,18 +319,19 @@
    @Override
    public void checkTransactionActive() throws RollbackException, SystemException
    {
-      if (this.transactionManager == null)
+      if (transactionManager == null)
       {
          throw new IllegalStateException("No transaction manager: " + getCachedConnectionManager());  
       }
       
-      Transaction tx = this.transactionManager.getTransaction();
+      Transaction tx = transactionManager.getTransaction();
       if (tx != null)
       {
          int status = tx.getStatus();
+
          // Only allow states that will actually succeed
          if (status != Status.STATUS_ACTIVE && status != Status.STATUS_PREPARING && 
-               status != Status.STATUS_PREPARED && status != Status.STATUS_COMMITTING)
+             status != Status.STATUS_PREPARED && status != Status.STATUS_COMMITTING)
          {
             throw new RollbackException("Transaction " + tx + " cannot proceed " + TxUtils.getStatusAsString(status));  
          }
@@ -349,7 +347,7 @@
       Transaction trackByTransaction = null;
       try
       {
-         Transaction tx = this.transactionManager.getTransaction();
+         Transaction tx = transactionManager.getTransaction();
          if (tx != null && !TxUtils.isActive(tx))
          {
             throw new ResourceException("Transaction is not active: tx=" + tx);  
@@ -365,7 +363,7 @@
          JBossResourceException.rethrowAsResourceException("Error checking for a transaction.", t);
       }
 
-      if (this.trace)
+      if (trace)
       {
          getLog().trace("getManagedConnection interleaving=" + interleaving + " tx=" + trackByTransaction);  
       }
@@ -455,6 +453,7 @@
       {
          if (trace)
             getLog().trace("Disconnected isManagedConnectionFree=true" + " cl=" + cl);
+
          returnManagedConnection(cl, false);
       }
       else if (trace)
@@ -478,7 +477,7 @@
    {
       XAResource xaResource = null;
       
-      if (this.localTransactions)
+      if (localTransactions)
       {
          xaResource = new LocalXAResource(this);
     
@@ -486,12 +485,10 @@
          {
             getLog().debug("XAResource transaction timeout cannot be set for local transactions: " + getJndiName());  
          }
-      }
-      
+      }      
       else
-      {
-         
-         if (this.wrapXAResource)
+      {         
+         if (wrapXAResource)
          {
             String eisProductName = null;
             String eisProductVersion = null;
@@ -509,14 +506,23 @@
                // Ignore
             }
 
-            getLog().trace("Generating XAResourceWrapper for TxConnectionManager" + this);
+            if (eisProductName == null)
+               eisProductName = getJndiName();
+
+            if (eisProductVersion == null)
+               eisProductVersion = getJndiName();
+
+            if (trace)
+               getLog().trace("Generating XAResourceWrapper for TxConnectionManager" + this);
+
             xaResource = new XAResourceWrapperImpl(mc.getXAResource(), padXid, 
-                  isSameRMOverrideValue, eisProductName, eisProductVersion);
+                                                   isSameRMOverride, eisProductName, eisProductVersion);
          }
-         
          else
          {
-            getLog().trace("Not wrapping XAResource.");
+            if (trace)
+               getLog().trace("Not wrapping XAResource.");
+
             xaResource = mc.getXAResource();
          }
                                 
@@ -544,7 +550,7 @@
     */
    public boolean isTransactional()
    {
-      return !TxUtils.isCompleted(this.transactionManager);
+      return !TxUtils.isCompleted(transactionManager);
    }
    
    /**
@@ -567,12 +573,16 @@
    {
       if (t instanceof SystemException)
          throw (SystemException) t;
+
       if (t instanceof RuntimeException)
          throw (RuntimeException) t;
+
       if (t instanceof Error)
          throw (Error) t;
+
       if (t instanceof RollbackException)
          throw new IllegalStateException(context + " tx=" + tx + " marked for rollback.");
+
       throw new NestedRuntimeException(context + " tx=" + tx + " got unexpected error ", t);
    }
 
@@ -580,14 +590,11 @@
    private void writeObject(ObjectOutputStream out)
       throws IOException
    {
-
-
    }
 
 
    private void readObject(ObjectInputStream in)
       throws IOException, ClassNotFoundException
    {
-
    }
 }

Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManagerTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManagerTestCase.java	2010-09-16 17:17:12 UTC (rev 108179)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManagerTestCase.java	2010-09-16 17:53:20 UTC (rev 108180)
@@ -75,7 +75,8 @@
       
       ConnectionManagerFactory cmf = new ConnectionManagerFactory();
       ConnectionManager connectionManager = cmf.createTransactional(TransactionSupportLevel.LocalTransaction, 
-                                                                    pool, null, null, tm);
+                                                                    pool, null, null, tm, 
+                                                                    null, null, null, null, null);
       assertNotNull(connectionManager);
       
       assertTrue(connectionManager instanceof TxConnectionManager);
@@ -117,7 +118,8 @@
       
       ConnectionManagerFactory cmf = new ConnectionManagerFactory();
       ConnectionManager connectionManager = cmf.createTransactional(TransactionSupportLevel.LocalTransaction, 
-                                                                    pool, null, null, tm);
+                                                                    pool, null, null, tm, 
+                                                                    null, null, null, null, null);
       assertNotNull(connectionManager);
       
       assertTrue(connectionManager instanceof TxConnectionManager);

Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/XATxConnectionManagerTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/XATxConnectionManagerTestCase.java	2010-09-16 17:17:12 UTC (rev 108179)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/XATxConnectionManagerTestCase.java	2010-09-16 17:53:20 UTC (rev 108180)
@@ -77,7 +77,8 @@
       ConnectionManager connectionManager = cmf.createTransactional(TransactionSupportLevel.XATransaction,
                                                                     pool,
                                                                     null, null,
-                                                                    tm);
+                                                                    tm, 
+                                                                    Boolean.FALSE, null, null, null, null);
       assertNotNull(connectionManager);
       
       assertTrue(connectionManager instanceof TxConnectionManager);
@@ -117,7 +118,8 @@
       
       ConnectionManagerFactory cmf = new ConnectionManagerFactory();
       ConnectionManager connectionManager = cmf.createTransactional(TransactionSupportLevel.XATransaction, 
-                                                                    pool, null, null, tm);
+                                                                    pool, null, null, tm, 
+                                                                    Boolean.FALSE, null, null, null, null);
       assertNotNull(connectionManager);
       
       assertTrue(connectionManager instanceof TxConnectionManager);

Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/AbstractResourceAdapterDeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/AbstractResourceAdapterDeployer.java	2010-09-16 17:17:12 UTC (rev 108179)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/AbstractResourceAdapterDeployer.java	2010-09-16 17:53:20 UTC (rev 108180)
@@ -407,6 +407,46 @@
    }
 
    /**
+    * Find the connection factory for a managed connection factory
+    * @param clz The fully quilified class name for the managed connection factory
+    * @param defs The connection definitions
+    * @return The connection definiton; <code>null</code> if none could be found
+    */
+   protected org.jboss.jca.common.api.metadata.common.CommonConnDef 
+   findConnectionDefinition(String clz,
+                            List<org.jboss.jca.common.api.metadata.common.CommonConnDef> defs)
+   {
+      if (defs != null)
+      {
+         // If there is only one we will return that
+         if (defs.size() == 1)
+         {
+            org.jboss.jca.common.api.metadata.common.CommonConnDef cd = defs.get(0);
+
+            if (cd.getClassName() != null && !clz.equals(cd.getClassName()))
+            {
+               log.warn("Only one connection definitopn found with a mis-match in class-name: " + cd);
+               return null;
+            }
+
+            return cd;
+         }
+
+         // If there are multiple definitions the MCF class name is mandatory
+         if (clz == null)
+            throw new IllegalArgumentException("ManagedConnectionFactory must be defined in class-name");
+
+         for (org.jboss.jca.common.api.metadata.common.CommonConnDef cd : defs)
+         {
+            if (clz.equals(cd.getClassName()))
+               return cd;
+         }
+      }
+
+      return null;
+   }
+
+   /**
     * Start
     */
    public void start()

Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/DsXmlDeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/DsXmlDeployer.java	2010-09-16 17:17:12 UTC (rev 108179)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/DsXmlDeployer.java	2010-09-16 17:53:20 UTC (rev 108180)
@@ -396,10 +396,10 @@
                                                      useFastFail);
 
       PoolFactory pf = new PoolFactory();
-      Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, true);
+      Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, false);
 
       // Connection manager properties
-      Integer allocationRetry = null; // TODO
+      Integer allocationRetry = null;
       Long allocationRetryWaitMillis = null;
 
       if (ds.getTimeOut() != null)
@@ -415,7 +415,12 @@
                                                      pool,
                                                      allocationRetry,
                                                      allocationRetryWaitMillis,
-                                                     getTransactionManager());
+                                                     getTransactionManager(),
+                                                     null,
+                                                     null,
+                                                     null,
+                                                     null,
+                                                     null);
 
       cm.setJndiName(jndiName);
 
@@ -470,19 +475,38 @@
                                                      strictMin,
                                                      useFastFail);
 
+      Boolean noTxSeparatePool = Boolean.FALSE;
+
+      if (ds.getXaPool() != null && ds.getXaPool().isNoTxSeparatePool() != null)
+         noTxSeparatePool = ds.getXaPool().isNoTxSeparatePool();
+
       PoolFactory pf = new PoolFactory();
-      Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, true);
+      Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, noTxSeparatePool.booleanValue());
 
       // Connection manager properties
-      Integer allocationRetry = null; // TODO
+      Integer allocationRetry = null;
       Long allocationRetryWaitMillis = null;
+      Boolean interleaving = null;
+      Integer xaResourceTimeout = null;
+      Boolean isSameRMOverride = null;
+      Boolean wrapXAResource = null;
+      Boolean padXid = null;
 
       if (ds.getTimeOut() != null)
       {
          allocationRetry = ds.getTimeOut().getAllocationRetry();
          allocationRetryWaitMillis = ds.getTimeOut().getAllocationRetryWaitMillis();
+         xaResourceTimeout = ds.getTimeOut().getXaResourceTimeout();
       }
 
+      if (ds.getXaPool() != null)
+      {
+         interleaving = ds.getXaPool().isInterleaving();
+         isSameRMOverride = ds.getXaPool().isSameRmOverride();
+         wrapXAResource = ds.getXaPool().isWrapXaDataSource();
+         padXid = ds.getXaPool().isPadXid();
+      }
+
       // Select the correct connection manager
       TransactionSupportLevel tsl = TransactionSupportLevel.XATransaction;
       ConnectionManagerFactory cmf = new ConnectionManagerFactory();
@@ -490,7 +514,12 @@
                                                      pool,
                                                      allocationRetry,
                                                      allocationRetryWaitMillis,
-                                                     getTransactionManager());
+                                                     getTransactionManager(),
+                                                     interleaving,
+                                                     xaResourceTimeout,
+                                                     isSameRMOverride,
+                                                     wrapXAResource,
+                                                     padXid);
 
       cm.setJndiName(jndiName);
 

Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RAActivator.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RAActivator.java	2010-09-16 17:17:12 UTC (rev 108179)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RAActivator.java	2010-09-16 17:53:20 UTC (rev 108180)
@@ -345,7 +345,6 @@
             // ManagedConnectionFactory
             if (cmd.getVersion() == Version.V_10)
             {
-
                ManagedConnectionFactory mcf =
                      (ManagedConnectionFactory) initAndInject(((ResourceAdapter10) cmd.getResourceadapter())
                            .getManagedConnectionFactoryClass()
@@ -359,6 +358,13 @@
                          mcf.getClass().getClassLoader());
                }
 
+               org.jboss.jca.common.api.metadata.common.CommonConnDef ijCD = null;
+
+               if (ijmd != null)
+               {
+                  ijCD = findConnectionDefinition(mcf.getClass().getName(), ijmd.getConnectionDefinitions());
+               }
+
                mcf.setLogWriter(new PrintWriter(getConfiguration().getPrintStream()));
 
                archiveValidationObjects.add(new ValidateObject(Key.MANAGED_CONNECTION_FACTORY,
@@ -372,8 +378,19 @@
                PoolConfiguration pc = new PoolConfiguration();
                PoolFactory pf = new PoolFactory();
 
-               Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, true);
+               Boolean noTxSeparatePool = Boolean.FALSE;
 
+               if (ijCD != null && ijCD.getPool() != null && ijCD.isXa())
+               {
+                  org.jboss.jca.common.api.metadata.common.CommonXaPool ijXaPool =
+                     (org.jboss.jca.common.api.metadata.common.CommonXaPool)ijCD.getPool();
+
+                  if (ijXaPool != null)
+                     noTxSeparatePool = ijXaPool.isNoTxSeparatePool();
+               }
+
+               Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, noTxSeparatePool.booleanValue());
+
                // Add a connection manager
                ConnectionManagerFactory cmf = new ConnectionManagerFactory();
                ConnectionManager cm = null;
@@ -400,16 +417,13 @@
                   tsl = ((TransactionSupport) mcf).getTransactionSupport();
 
                // Connection manager properties
-               Integer allocationRetry = null; // TODO
+               Integer allocationRetry = null;
                Long allocationRetryWaitMillis = null;
 
-               if (ijmd != null)
+               if (ijCD != null && ijCD.getTimeOut() != null)
                {
-                  /*
-                    TODO
-                  allocationRetry = ijmd.getTimeOut().getAllocationRetry();
-                  allocationRetryWaitMillis = ijmd.getTimeOut().getAllocationRetryWaitMillis();
-                  */
+                  allocationRetry = ijCD.getTimeOut().getAllocationRetry();
+                  allocationRetryWaitMillis = ijCD.getTimeOut().getAllocationRetryWaitMillis();
                }
 
                // Select the correct connection manager
@@ -422,11 +436,36 @@
                }
                else
                {
+                  Boolean interleaving = null;
+                  Integer xaResourceTimeout = null;
+                  Boolean isSameRMOverride = null;
+                  Boolean wrapXAResource = null;
+                  Boolean padXid = null;
+
+                  if (ijCD != null && ijCD.getPool() != null && ijCD.isXa())
+                  {
+                     org.jboss.jca.common.api.metadata.common.CommonXaPool ijXaPool =
+                        (org.jboss.jca.common.api.metadata.common.CommonXaPool)ijCD.getPool();
+
+                     if (ijXaPool != null)
+                     {
+                        interleaving = ijXaPool.isInterleaving();
+                        isSameRMOverride = ijXaPool.isSameRmOverride();
+                        wrapXAResource = ijXaPool.isWrapXaDataSource();
+                        padXid = ijXaPool.isPadXid();
+                     }
+                  }
+
                   cm = cmf.createTransactional(tsl,
                                                pool,
                                                allocationRetry,
                                                allocationRetryWaitMillis,
-                                               getConfiguration().getTransactionManager());
+                                               getConfiguration().getTransactionManager(),
+                                               interleaving,
+                                               xaResourceTimeout,
+                                               isSameRMOverride,
+                                               wrapXAResource,
+                                               padXid);
                }
 
                // ConnectionFactory
@@ -483,6 +522,14 @@
                                      mcf.getClass().getClassLoader());
                         }
 
+                        org.jboss.jca.common.api.metadata.common.CommonConnDef ijCD = null;
+
+                        if (ijmd != null)
+                        {
+                           ijCD = findConnectionDefinition(mcf.getClass().getName(), ijmd.getConnectionDefinitions());
+                        }
+
+
                         mcf.setLogWriter(new PrintWriter(getConfiguration().getPrintStream()));
 
                         archiveValidationObjects.add(new ValidateObject(Key.MANAGED_CONNECTION_FACTORY,
@@ -495,8 +542,19 @@
                         PoolConfiguration pc = new PoolConfiguration();
                         PoolFactory pf = new PoolFactory();
 
-                        Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, true);
+                        Boolean noTxSeparatePool = Boolean.FALSE;
+                        
+                        if (ijCD != null && ijCD.getPool() != null && ijCD.isXa())
+                        {
+                           org.jboss.jca.common.api.metadata.common.CommonXaPool ijXaPool =
+                              (org.jboss.jca.common.api.metadata.common.CommonXaPool)ijCD.getPool();
+                           
+                           if (ijXaPool != null)
+                              noTxSeparatePool = ijXaPool.isNoTxSeparatePool();
+                        }
 
+                        Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, noTxSeparatePool.booleanValue());
+
                         // Add a connection manager
                         ConnectionManagerFactory cmf = new ConnectionManagerFactory();
                         ConnectionManager cm = null;
@@ -523,16 +581,13 @@
                            tsl = ((TransactionSupport) mcf).getTransactionSupport();
 
                         // Connection manager properties
-                        Integer allocationRetry = null; // TODO
+                        Integer allocationRetry = null;
                         Long allocationRetryWaitMillis = null;
-
-                        if (ijmd != null)
+                        
+                        if (ijCD != null && ijCD.getTimeOut() != null)
                         {
-                           /*
-                             TODO
-                             allocationRetry = ijmd.getTimeOut().getAllocationRetry();
-                             allocationRetryWaitMillis = ijmd.getTimeOut().getAllocationRetryWaitMillis();
-                           */
+                           allocationRetry = ijCD.getTimeOut().getAllocationRetry();
+                           allocationRetryWaitMillis = ijCD.getTimeOut().getAllocationRetryWaitMillis();
                         }
 
                         // Select the correct connection manager
@@ -545,11 +600,33 @@
                         }
                         else
                         {
+                           Boolean interleaving = null;
+                           Integer xaResourceTimeout = null;
+                           Boolean isSameRMOverride = null;
+                           Boolean wrapXAResource = null;
+                           Boolean padXid = null;
+
+                           if (ijCD != null && ijCD.isXa())
+                           {
+                              org.jboss.jca.common.api.metadata.common.CommonXaPool ijXaPool =
+                                 (org.jboss.jca.common.api.metadata.common.CommonXaPool)ijCD.getPool();
+                              
+                              interleaving = ijXaPool.isInterleaving();
+                              isSameRMOverride = ijXaPool.isSameRmOverride();
+                              wrapXAResource = ijXaPool.isWrapXaDataSource();
+                              padXid = ijXaPool.isPadXid();
+                           }
+                           
                            cm = cmf.createTransactional(tsl,
                                                         pool,
                                                         allocationRetry,
                                                         allocationRetryWaitMillis,
-                                                        getConfiguration().getTransactionManager());
+                                                        getConfiguration().getTransactionManager(),
+                                                        interleaving,
+                                                        xaResourceTimeout,
+                                                        isSameRMOverride,
+                                                        wrapXAResource,
+                                                        padXid);
                         }
 
                         // ConnectionFactory

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-09-16 17:17:12 UTC (rev 108179)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java	2010-09-16 17:53:20 UTC (rev 108180)
@@ -259,6 +259,13 @@
                                mcf.getClass().getClassLoader());
                   }
 
+                  org.jboss.jca.common.api.metadata.common.CommonConnDef ijCD = null;
+                  
+                  if (ijmd != null)
+                  {
+                     ijCD = findConnectionDefinition(mcf.getClass().getName(), ijmd.getConnectionDefinitions());
+                  }
+
                   mcf.setLogWriter(new PrintWriter(getConfiguration().getPrintStream()));
 
                   archiveValidationObjects.add(new ValidateObject(Key.MANAGED_CONNECTION_FACTORY,
@@ -270,8 +277,19 @@
                   PoolConfiguration pc = new PoolConfiguration();
                   PoolFactory pf = new PoolFactory();
 
-                  Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, true);
+                  Boolean noTxSeparatePool = Boolean.FALSE;
+                  
+                  if (ijCD != null && ijCD.getPool() != null && ijCD.isXa())
+                  {
+                     org.jboss.jca.common.api.metadata.common.CommonXaPool ijXaPool =
+                        (org.jboss.jca.common.api.metadata.common.CommonXaPool)ijCD.getPool();
+                     
+                     if (ijXaPool != null)
+                        noTxSeparatePool = ijXaPool.isNoTxSeparatePool();
+                  }
 
+                  Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, noTxSeparatePool.booleanValue());
+
                   // Add a connection manager
                   ConnectionManagerFactory cmf = new ConnectionManagerFactory();
                   ConnectionManager cm = null;
@@ -295,16 +313,13 @@
                   }
 
                   // Connection manager properties
-                  Integer allocationRetry = null; // TODO
+                  Integer allocationRetry = null;
                   Long allocationRetryWaitMillis = null;
 
-                  if (ijmd != null)
+                  if (ijCD != null && ijCD.getTimeOut() != null)
                   {
-                     /*
-                       TODO
-                       allocationRetry = ijmd.getTimeOut().getAllocationRetry();
-                       allocationRetryWaitMillis = ijmd.getTimeOut().getAllocationRetryWaitMillis();
-                     */
+                     allocationRetry = ijCD.getTimeOut().getAllocationRetry();
+                     allocationRetryWaitMillis = ijCD.getTimeOut().getAllocationRetryWaitMillis();
                   }
 
                   // Select the correct connection manager
@@ -317,11 +332,36 @@
                   }
                   else
                   {
+                     Boolean interleaving = null;
+                     Integer xaResourceTimeout = null;
+                     Boolean isSameRMOverride = null;
+                     Boolean wrapXAResource = null;
+                     Boolean padXid = null;
+
+                     if (ijCD != null && ijCD.getPool() != null && ijCD.isXa())
+                     {
+                        org.jboss.jca.common.api.metadata.common.CommonXaPool ijXaPool =
+                           (org.jboss.jca.common.api.metadata.common.CommonXaPool)ijCD.getPool();
+
+                        if (ijXaPool != null)
+                        {
+                           interleaving = ijXaPool.isInterleaving();
+                           isSameRMOverride = ijXaPool.isSameRmOverride();
+                           wrapXAResource = ijXaPool.isWrapXaDataSource();
+                           padXid = ijXaPool.isPadXid();
+                        }
+                     }
+
                      cm = cmf.createTransactional(tsl,
                                                   pool,
                                                   allocationRetry,
                                                   allocationRetryWaitMillis,
-                                                  getConfiguration().getTransactionManager());
+                                                  getConfiguration().getTransactionManager(),
+                                                  interleaving,
+                                                  xaResourceTimeout,
+                                                  isSameRMOverride,
+                                                  wrapXAResource,
+                                                  padXid);
                   }
 
                   // ConnectionFactory
@@ -390,6 +430,14 @@
                                  log.trace("ManagedConnectionFactory defined in classloader: " +
                                            mcf.getClass().getClassLoader());
                               }
+                              
+                              org.jboss.jca.common.api.metadata.common.CommonConnDef ijCD = null;
+                              
+                              if (ijmd != null)
+                              {
+                                 ijCD = findConnectionDefinition(mcf.getClass().getName(), 
+                                                                 ijmd.getConnectionDefinitions());
+                              }
 
                               mcf.setLogWriter(new PrintWriter(getConfiguration().getPrintStream()));
 
@@ -403,7 +451,18 @@
                               PoolConfiguration pc = new PoolConfiguration();
                               PoolFactory pf = new PoolFactory();
 
-                              Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, true);
+                              Boolean noTxSeparatePool = Boolean.FALSE;
+                              
+                              if (ijCD != null && ijCD.getPool() != null && ijCD.isXa())
+                              {
+                                 org.jboss.jca.common.api.metadata.common.CommonXaPool ijXaPool =
+                                    (org.jboss.jca.common.api.metadata.common.CommonXaPool)ijCD.getPool();
+                              
+                                 if (ijXaPool != null)
+                                    noTxSeparatePool = ijXaPool.isNoTxSeparatePool();
+                              }
+                              
+                              Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, noTxSeparatePool.booleanValue());
 
                               // Add a connection manager
                               ConnectionManagerFactory cmf = new ConnectionManagerFactory();
@@ -431,16 +490,13 @@
                                  tsl = ((TransactionSupport) mcf).getTransactionSupport();
 
                               // Connection manager properties
-                              Integer allocationRetry = null; // TODO
+                              Integer allocationRetry = null;
                               Long allocationRetryWaitMillis = null;
-
-                              if (ijmd != null)
+                              
+                              if (ijCD != null && ijCD.getTimeOut() != null)
                               {
-                                 /*
-                                   TODO
-                                   allocationRetry = ijmd.getTimeOut().getAllocationRetry();
-                                   allocationRetryWaitMillis = ijmd.getTimeOut().getAllocationRetryWaitMillis();
-                                 */
+                                 allocationRetry = ijCD.getTimeOut().getAllocationRetry();
+                                 allocationRetryWaitMillis = ijCD.getTimeOut().getAllocationRetryWaitMillis();
                               }
 
                               // Select the correct connection manager
@@ -453,11 +509,33 @@
                               }
                               else
                               {
+                                 Boolean interleaving = null;
+                                 Integer xaResourceTimeout = null;
+                                 Boolean isSameRMOverride = null;
+                                 Boolean wrapXAResource = null;
+                                 Boolean padXid = null;
+                              
+                                 if (ijCD != null && ijCD.isXa())
+                                 {
+                                    org.jboss.jca.common.api.metadata.common.CommonXaPool ijXaPool =
+                                       (org.jboss.jca.common.api.metadata.common.CommonXaPool)ijCD.getPool();
+                                    
+                                    interleaving = ijXaPool.isInterleaving();
+                                    isSameRMOverride = ijXaPool.isSameRmOverride();
+                                    wrapXAResource = ijXaPool.isWrapXaDataSource();
+                                    padXid = ijXaPool.isPadXid();
+                                 }
+
                                  cm = cmf.createTransactional(tsl,
                                                               pool,
                                                               allocationRetry,
                                                               allocationRetryWaitMillis,
-                                                              getConfiguration().getTransactionManager());
+                                                              getConfiguration().getTransactionManager(),
+                                                              interleaving,
+                                                              xaResourceTimeout,
+                                                              isSameRMOverride,
+                                                              wrapXAResource,
+                                                              padXid);
                               }
 
                               // ConnectionFactory

Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RaXmlDeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RaXmlDeployer.java	2010-09-16 17:17:12 UTC (rev 108179)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RaXmlDeployer.java	2010-09-16 17:53:20 UTC (rev 108180)
@@ -363,6 +363,13 @@
                          mcf.getClass().getClassLoader());
                }
 
+               org.jboss.jca.common.api.metadata.common.CommonConnDef ijCD = null;
+
+               if (ijmd != null)
+               {
+                  ijCD = findConnectionDefinition(mcf.getClass().getName(), ijmd.getConnectionDefinitions());
+               }
+
                mcf.setLogWriter(new PrintWriter(getConfiguration().getPrintStream()));
 
                archiveValidationObjects.add(new ValidateObject(Key.MANAGED_CONNECTION_FACTORY,
@@ -376,8 +383,19 @@
                PoolConfiguration pc = new PoolConfiguration();
                PoolFactory pf = new PoolFactory();
 
-               Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, true);
+               Boolean noTxSeparatePool = Boolean.FALSE;
+               
+               if (ijCD != null && ijCD.getPool() != null && ijCD.isXa())
+               {
+                  org.jboss.jca.common.api.metadata.common.CommonXaPool ijXaPool =
+                     (org.jboss.jca.common.api.metadata.common.CommonXaPool)ijCD.getPool();
 
+                  if (ijXaPool != null)
+                     noTxSeparatePool = ijXaPool.isNoTxSeparatePool();
+               }
+
+               Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, noTxSeparatePool.booleanValue());
+
                // Add a connection manager
                ConnectionManagerFactory cmf = new ConnectionManagerFactory();
                ConnectionManager cm = null;
@@ -404,16 +422,13 @@
                   tsl = ((TransactionSupport) mcf).getTransactionSupport();
 
                // Connection manager properties
-               Integer allocationRetry = null; // TODO
+               Integer allocationRetry = null;
                Long allocationRetryWaitMillis = null;
 
-               if (ijmd != null)
+               if (ijCD != null && ijCD.getTimeOut() != null)
                {
-                  /*
-                    TODO
-                  allocationRetry = ijmd.getTimeOut().getAllocationRetry();
-                  allocationRetryWaitMillis = ijmd.getTimeOut().getAllocationRetryWaitMillis();
-                  */
+                  allocationRetry = ijCD.getTimeOut().getAllocationRetry();
+                  allocationRetryWaitMillis = ijCD.getTimeOut().getAllocationRetryWaitMillis();
                }
 
                // Select the correct connection manager
@@ -426,11 +441,36 @@
                }
                else
                {
+                  Boolean interleaving = null;
+                  Integer xaResourceTimeout = null;
+                  Boolean isSameRMOverride = null;
+                  Boolean wrapXAResource = null;
+                  Boolean padXid = null;
+
+                  if (ijCD != null && ijCD.getPool() != null && ijCD.isXa())
+                  {
+                     org.jboss.jca.common.api.metadata.common.CommonXaPool ijXaPool =
+                        (org.jboss.jca.common.api.metadata.common.CommonXaPool)ijCD.getPool();
+
+                     if (ijXaPool != null)
+                     {
+                        interleaving = ijXaPool.isInterleaving();
+                        isSameRMOverride = ijXaPool.isSameRmOverride();
+                        wrapXAResource = ijXaPool.isWrapXaDataSource();
+                        padXid = ijXaPool.isPadXid();
+                     }
+                  }
+
                   cm = cmf.createTransactional(tsl,
                                                pool,
                                                allocationRetry,
                                                allocationRetryWaitMillis,
-                                               getConfiguration().getTransactionManager());
+                                               getConfiguration().getTransactionManager(),
+                                               interleaving,
+                                               xaResourceTimeout,
+                                               isSameRMOverride,
+                                               wrapXAResource,
+                                               padXid);
                }
 
                // ConnectionFactory
@@ -502,7 +542,15 @@
                               log.trace("ManagedConnectionFactory defined in classloader: " +
                                         mcf.getClass().getClassLoader());
                            }
+                           
+                           org.jboss.jca.common.api.metadata.common.CommonConnDef ijCD = null;
 
+                           if (ijmd != null)
+                           {
+                              ijCD = findConnectionDefinition(mcf.getClass().getName(), 
+                                                              ijmd.getConnectionDefinitions());
+                           }
+
                            mcf.setLogWriter(new PrintWriter(getConfiguration().getPrintStream()));
 
                            archiveValidationObjects.add(new ValidateObject(Key.MANAGED_CONNECTION_FACTORY,
@@ -515,7 +563,18 @@
                            PoolConfiguration pc = new PoolConfiguration();
                            PoolFactory pf = new PoolFactory();
 
-                           Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, true);
+                           Boolean noTxSeparatePool = Boolean.FALSE;
+               
+                           if (ijCD != null && ijCD.getPool() != null && ijCD.isXa())
+                           {
+                              org.jboss.jca.common.api.metadata.common.CommonXaPool ijXaPool =
+                                 (org.jboss.jca.common.api.metadata.common.CommonXaPool)ijCD.getPool();
+                              
+                              if (ijXaPool != null)
+                                 noTxSeparatePool = ijXaPool.isNoTxSeparatePool();
+                           }
+                           
+                           Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, noTxSeparatePool.booleanValue());
 
                            // Add a connection manager
                            ConnectionManagerFactory cmf = new ConnectionManagerFactory();
@@ -543,16 +602,13 @@
                               tsl = ((TransactionSupport) mcf).getTransactionSupport();
 
                            // Connection manager properties
-                           Integer allocationRetry = null; // TODO
+                           Integer allocationRetry = null;
                            Long allocationRetryWaitMillis = null;
 
-                           if (ijmd != null)
+                           if (ijCD != null && ijCD.getTimeOut() != null)
                            {
-                              /*
-                                TODO
-                              allocationRetry = ijmd.getTimeOut().getAllocationRetry();
-                              allocationRetryWaitMillis = ijmd.getTimeOut().getAllocationRetryWaitMillis();
-                              */
+                              allocationRetry = ijCD.getTimeOut().getAllocationRetry();
+                              allocationRetryWaitMillis = ijCD.getTimeOut().getAllocationRetryWaitMillis();
                            }
 
                            // Select the correct connection manager
@@ -565,11 +621,33 @@
                            }
                            else
                            {
+                              Boolean interleaving = null;
+                              Integer xaResourceTimeout = null;
+                              Boolean isSameRMOverride = null;
+                              Boolean wrapXAResource = null;
+                              Boolean padXid = null;
+                              
+                              if (ijCD != null && ijCD.isXa())
+                              {
+                                 org.jboss.jca.common.api.metadata.common.CommonXaPool ijXaPool =
+                                    (org.jboss.jca.common.api.metadata.common.CommonXaPool)ijCD.getPool();
+                                 
+                                 interleaving = ijXaPool.isInterleaving();
+                                 isSameRMOverride = ijXaPool.isSameRmOverride();
+                                 wrapXAResource = ijXaPool.isWrapXaDataSource();
+                                 padXid = ijXaPool.isPadXid();
+                              }
+
                               cm = cmf.createTransactional(tsl,
                                                            pool,
                                                            allocationRetry,
                                                            allocationRetryWaitMillis,
-                                                           getConfiguration().getTransactionManager());
+                                                           getConfiguration().getTransactionManager(),
+                                                           interleaving,
+                                                           xaResourceTimeout,
+                                                           isSameRMOverride,
+                                                           wrapXAResource,
+                                                           padXid);
                            }
 
                            // ConnectionFactory
@@ -781,35 +859,6 @@
    }
 
    /**
-    * Find the JNDI name for a connection factory
-    * @param clz The fully quilified class name for the managed connection factory
-    * @param defs The connection definitions
-    * @return The JNDI name
-    */
-   private org.jboss.jca.common.api.metadata.common.CommonConnDef findConnectionDefinition(String clz,
-      List<org.jboss.jca.common.api.metadata.common.CommonConnDef> defs)
-   {
-      if (defs != null)
-      {
-         // If there is only one we will return that
-         if (defs.size() == 1)
-            return defs.get(0);
-
-         // If there are multiple definitions the MCF class name is mandatory
-         if (clz == null)
-            throw new IllegalArgumentException("ManagedConnectionFactory must be defined in class-name");
-
-         for (org.jboss.jca.common.api.metadata.common.CommonConnDef cd : defs)
-         {
-            if (clz.equals(cd.getClassName()))
-               return cd;
-         }
-      }
-
-      return null;
-   }
-
-   /**
     * Start
     */
    @Override

Modified: projects/jboss-jca/trunk/doc/developerguide/en/modules/metadata.xml
===================================================================
--- projects/jboss-jca/trunk/doc/developerguide/en/modules/metadata.xml	2010-09-16 17:17:12 UTC (rev 108179)
+++ projects/jboss-jca/trunk/doc/developerguide/en/modules/metadata.xml	2010-09-16 17:53:20 UTC (rev 108180)
@@ -168,17 +168,17 @@
               <row>
                 <entry><code>min-pool-size</code></entry>
                 <entry></entry>
-                <entry>X</entry>
+                <entry><code>Pool</code></entry>
               </row>
               <row>
                 <entry><code>max-pool-size</code></entry>
                 <entry></entry>
-                <entry>X</entry>
+                <entry><code>Pool</code></entry>
               </row>
               <row>
                 <entry><code>prefill</code></entry>
                 <entry></entry>
-                <entry>X</entry>
+                <entry><code>Pool</code></entry>
               </row>
               <row>
                 <entry><code>user-name</code></entry>
@@ -238,12 +238,12 @@
               <row>
                 <entry><code>is-same-rm-override</code></entry>
                 <entry></entry>
-                <entry>X</entry>
+                <entry><code>TxConnectionManager</code></entry>
               </row>
               <row>
                 <entry><code>interleaving</code></entry>
                 <entry></entry>
-                <entry>X</entry>
+                <entry><code>TxConnectionManager</code></entry>
               </row>
               <row>
                 <entry><code>prepared-statement-cache-size</code></entry>
@@ -258,22 +258,22 @@
               <row>
                 <entry><code>pad-xid</code></entry>
                 <entry></entry>
-                <entry>X</entry>
+                <entry><code>TxConnectionManager</code></entry>
               </row>
               <row>
                 <entry><code>wrap-xa-resource</code></entry>
                 <entry></entry>
-                <entry>X</entry>
+                <entry><code>TxConnectionManager</code></entry>
               </row>
               <row>
                 <entry><code>no-tx-separate-pools</code></entry>
                 <entry></entry>
-                <entry>X</entry>
+                <entry><code>Pool</code></entry>
               </row>
               <row>
                 <entry><code>jndi-name</code></entry>
                 <entry></entry>
-                <entry>X</entry>
+                <entry><code>ConnectionManager</code></entry>
               </row>
               <row>
                 <entry><code>pool-name</code></entry>
@@ -308,17 +308,17 @@
               <row>
                 <entry><code>background-validation</code></entry>
                 <entry></entry>
-                <entry>X</entry>
+                <entry><code>Pool</code></entry>
               </row>
               <row>
                 <entry><code>background-validation-minutes</code></entry>
                 <entry></entry>
-                <entry>X</entry>
+                <entry><code>Pool</code></entry>
               </row>
               <row>
                 <entry><code>use-fast-fail</code></entry>
                 <entry></entry>
-                <entry>X</entry>
+                <entry><code>Pool</code></entry>
               </row>
               <row>
                 <entry><code>stale-connection-checker-class-name</code></entry>
@@ -333,17 +333,17 @@
               <row>
                 <entry><code>blocking-timeout-millis</code></entry>
                 <entry></entry>
-                <entry>X</entry>
+                <entry><code>Pool</code></entry>
               </row>
               <row>
                 <entry><code>idle-timeout-minutes</code></entry>
                 <entry></entry>
-                <entry>X</entry>
+                <entry><code>Pool</code></entry>
               </row>
               <row>
                 <entry><code>set-tx-query-timeout</code></entry>
-                <entry>X</entry>
                 <entry></entry>
+                <entry></entry>
               </row>
               <row>
                 <entry><code>query-timeout</code></entry>
@@ -358,17 +358,17 @@
               <row>
                 <entry><code>allocation-retry</code></entry>
                 <entry></entry>
-                <entry>X</entry>
+                <entry><code>ConnectionManager</code></entry>
               </row>
               <row>
                 <entry><code>allocation-retry-wait-millis</code></entry>
                 <entry></entry>
-                <entry>X</entry>
+                <entry><code>ConnectionManager</code></entry>
               </row>
               <row>
                 <entry><code>xa-resource-timeout</code></entry>
                 <entry></entry>
-                <entry>X</entry>
+                <entry><code>TxConnectionManager</code></entry>
               </row>
               <row>
                 <entry><code>track-statements</code></entry>



More information about the jboss-cvs-commits mailing list