[jboss-cvs] JBossAS SVN: r106949 - in projects/jboss-jca/trunk: core/src/main/java/org/jboss/jca/core/connectionmanager/listener and 10 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jul 20 15:01:16 EDT 2010


Author: jesper.pedersen
Date: 2010-07-20 15:01:15 -0400 (Tue, 20 Jul 2010)
New Revision: 106949

Added:
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/Pool.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolConfiguration.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolFactory.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolStrategy.java
   projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolConfigurationTestCase.java
Removed:
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/PoolParams.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/ManagedConnectionPool.java
   projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolParamsTestCase.java
Modified:
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/AbstractConnectionManager.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManager.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/AbstractConnectionListener.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/ConnectionListener.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/NoTxConnectionListener.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/TxConnectionListener.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/notx/NoTxConnectionManager.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPrefillPool.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/InternalManagedConnectionPool.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/SubPoolContext.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/OnePool.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolByCri.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolBySubject.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolBySubjectAndCri.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManager.java
   projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/AbstractConnectionManagerTestCase.java
   projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/nontx/NonTxConnectionManagerTestCase.java
   projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/tx/TxConnectionManagerTestCase.java
   projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/tx/XATxConnectionManagerTestCase.java
   projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java
Log:
[JBJCA-384] Refactor connection manager (Part 3)

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/AbstractConnectionManager.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/AbstractConnectionManager.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/AbstractConnectionManager.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -26,7 +26,7 @@
 import org.jboss.jca.core.connectionmanager.ccm.CachedConnectionManager;
 import org.jboss.jca.core.connectionmanager.listener.ConnectionListener;
 import org.jboss.jca.core.connectionmanager.listener.ConnectionState;
-import org.jboss.jca.core.connectionmanager.pool.api.ManagedConnectionPool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
 
 import java.util.Collection;
 import java.util.HashMap;
@@ -58,40 +58,40 @@
  */
 public abstract class AbstractConnectionManager implements ConnectionManager 
 {
-   /**Log instance*/
+   /** Log instance */
    private Logger log = Logger.getLogger(getClass());
    
+   /** Log trace */
+   private boolean trace;
+   
    /**
     * Note that this copy has a trailing / unlike the original in
     * JaasSecurityManagerService.
     */
    private static final String SECURITY_MGR_PATH = "java:/jaas/";
    
-   /**Connection manager pooling strategy*/
-   private ManagedConnectionPool poolingStrategy;
+   /** The pool */
+   private Pool pool;
    
-   /**Security domain jndi name*/
+   /** Security domain jndi name */
    private String securityDomainJndiName;
    
-   /**SubjectFactory*/
+   /** SubjectFactory */
    private SubjectFactory subjectFactory;
    
-   /**Log trace*/
-   private boolean trace;
-   
-   /**Number of retry to allocate connection*/
+   /** Number of retry to allocate connection */
    private int allocationRetry;
 
-   /**Interval between retries*/
+   /** Interval between retries */
    private long allocationRetryWaitMillis;
 
-   /**Startup/ShutDown flag*/
+   /** Startup/ShutDown flag */
    private AtomicBoolean shutdown = new AtomicBoolean(false);
    
-   /**Cached connection manager*/
+   /** Cached connection manager */
    private CachedConnectionManager cachedConnectionManager;
    
-   /**Jndi name*/
+   /** Jndi name */
    private String jndiName;
    
    /**
@@ -112,21 +112,21 @@
    }
    
    /**
-    * Sets pooling strategy.
-    * @param poolingStrategy pooling strategy
+    * Set the pool.
+    * @param pool the pool
     */
-   public void setPoolingStrategy(ManagedConnectionPool poolingStrategy)
+   public void setPool(Pool pool)
    {
-      this.poolingStrategy = poolingStrategy;
+      this.pool = pool;
    }
    
    /**
-    * Gets pooling strategy.
-    * @return pooling strategy
+    * Get the pool.
+    * @return the pool
     */
-   public ManagedConnectionPool getPoolingStrategy()
+   public Pool getPool()
    {
-      return poolingStrategy;
+      return pool;
    }   
    
    /**
@@ -224,7 +224,7 @@
     */
    public javax.resource.spi.ManagedConnectionFactory getManagedConnectionFactory()
    {
-      if (poolingStrategy == null)
+      if (pool == null)
       {
          if (trace)
          {
@@ -234,7 +234,7 @@
       }
       else
       {
-         return poolingStrategy.getManagedConnectionFactory();   
+         return pool.getManagedConnectionFactory();   
       }
       
       return null;
@@ -314,7 +314,7 @@
       // First attempt
       try
       {
-         return poolingStrategy.getConnection(transaction, subject, cri);
+         return pool.getConnection(transaction, subject, cri);
       }
       catch (ResourceException e)
       {
@@ -342,7 +342,7 @@
                      Thread.sleep(allocationRetryWaitMillis);  
                   }
 
-                  return poolingStrategy.getConnection(transaction, subject, cri);
+                  return pool.getConnection(transaction, subject, cri);
                }
                catch (ResourceException re)
                {
@@ -368,8 +368,8 @@
     */
    public void returnManagedConnection(ConnectionListener cl, boolean kill)
    {
-      ManagedConnectionPool localStrategy = cl.getManagedConnectionPool();
-      if (localStrategy != poolingStrategy)
+      Pool localStrategy = cl.getPool();
+      if (localStrategy != pool)
       {
          kill = true;  
       }
@@ -414,14 +414,14 @@
    public Object allocateConnection(ManagedConnectionFactory mcf, ConnectionRequestInfo cri) throws ResourceException
    {
       //Check for pooling!
-      if (poolingStrategy == null)
+      if (pool == null)
       {
          throw new ResourceException("You are trying to use a connection factory that has been shut down: " +
                "ManagedConnectionFactory is null.");         
       }
 
       //it is an explicit spec requirement that equals be used for matching rather than ==.
-      if (!poolingStrategy.getManagedConnectionFactory().equals(mcf))
+      if (!pool.getManagedConnectionFactory().equals(mcf))
       {
          throw new ResourceException("Wrong ManagedConnectionFactory sent to allocateConnection!");  
       }

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManager.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManager.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManager.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -23,6 +23,7 @@
 
 import org.jboss.jca.core.connectionmanager.listener.ConnectionCacheListener;
 import org.jboss.jca.core.connectionmanager.listener.ConnectionListenerFactory;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
 import org.jboss.jca.core.connectionmanager.transaction.JTATransactionChecker;
 
 import org.jboss.tm.TransactionTimeoutConfiguration;
@@ -49,4 +50,15 @@
    TransactionTimeoutConfiguration, 
    JTATransactionChecker
 {
+   /**
+    * Set the pool.
+    * @param pool the pool
+    */
+   public void setPool(Pool pool);
+   
+   /**
+    * Get the pool.
+    * @return the pool
+    */
+   public Pool getPool();
 }

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/AbstractConnectionListener.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/AbstractConnectionListener.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/AbstractConnectionListener.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -23,7 +23,7 @@
 
 import org.jboss.jca.core.connectionmanager.AbstractConnectionManager;
 import org.jboss.jca.core.connectionmanager.ccm.CachedConnectionManager;
-import org.jboss.jca.core.connectionmanager.pool.api.ManagedConnectionPool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
 
 import java.util.Iterator;
 import java.util.concurrent.CopyOnWriteArrayList;
@@ -48,19 +48,19 @@
 {
    private Logger log = Logger.getLogger(getClass());
    
-   /**Wraps managed connection instance*/
+   /** Wraps managed connection instance*/
    private final ManagedConnection managedConnection;
    
-   /**Managed connection pool for this connection*/
-   private final ManagedConnectionPool managedConnectionPool;
+   /** Pool for this connection*/
+   private final Pool pool;
    
-   /**Pool internal context*/
+   /** Pool internal context*/
    private final Object internalManagedPoolContext;
    
-   /**Connection State*/
+   /** Connection State*/
    private ConnectionState state = ConnectionState.NORMAL;
    
-   /**Connection handles*/
+   /** Connection handles*/
    private final CopyOnWriteArrayList<Object> connectionHandles = new CopyOnWriteArrayList<Object>();
       
    /**Track by transaction or not*/
@@ -85,16 +85,16 @@
     * Creates a new instance of the listener that is responsible for
     * tracking the owned connection instance.
     * @param managedConnection managed connection
-    * @param managedConnectionPool managed connection pool
+    * @param pool pool
     * @param context pool internal context
     * @param cm connection manager
     */
    protected AbstractConnectionListener(AbstractConnectionManager cm, ManagedConnection managedConnection, 
-         ManagedConnectionPool managedConnectionPool, Object context)
+                                        Pool pool, Object context)
    {
       this.cm = cm;
       this.managedConnection = managedConnection;
-      this.managedConnectionPool = managedConnectionPool;
+      this.pool = pool;
       this.internalManagedPoolContext = context;
       trace = this.log.isTraceEnabled();
       lastUse = System.currentTimeMillis();
@@ -168,9 +168,9 @@
    /**
     * {@inheritDoc}
     */   
-   public ManagedConnectionPool getManagedConnectionPool()
+   public Pool getPool()
    {      
-      return this.managedConnectionPool;
+      return this.pool;
    }
 
    /**
@@ -410,7 +410,7 @@
       buffer.append(" lastUse=").append(lastUse);
       buffer.append(" permit=").append(permit);
       buffer.append(" trackByTx=").append(trackByTx.get());
-      buffer.append(" managed connection pool=").append(this.managedConnectionPool);
+      buffer.append(" pool=").append(this.pool);
       buffer.append(" pool internal context=").append(this.internalManagedPoolContext);
       toString(buffer);
       buffer.append(']');

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/ConnectionListener.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/ConnectionListener.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/ConnectionListener.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -21,7 +21,7 @@
  */
 package org.jboss.jca.core.connectionmanager.listener;
 
-import org.jboss.jca.core.connectionmanager.pool.api.ManagedConnectionPool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
 
 import javax.resource.ResourceException;
 import javax.resource.spi.ConnectionEventListener;
@@ -46,11 +46,11 @@
    ManagedConnection getManagedConnection();
 
    /**
-    * Retrieve the managed connection pool for this listener.
+    * Retrieve the pool for this listener.
     * 
-    * @return the managed connection pool
+    * @return the pool
     */
-   ManagedConnectionPool getManagedConnectionPool();
+   Pool getPool();
 
    /**
     * Tidyup

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/NoTxConnectionListener.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/NoTxConnectionListener.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/NoTxConnectionListener.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -22,7 +22,7 @@
 package org.jboss.jca.core.connectionmanager.listener;
 
 import org.jboss.jca.core.connectionmanager.AbstractConnectionManager;
-import org.jboss.jca.core.connectionmanager.pool.api.ManagedConnectionPool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
 
 import javax.resource.spi.ConnectionEvent;
 import javax.resource.spi.ManagedConnection;
@@ -41,13 +41,13 @@
     * Creates a new no-tx listener.
     * @param cm connection manager
     * @param mc managed connection
-    * @param mcp managed connection pool
+    * @param pool pool
     * @param context context
     */
    public NoTxConnectionListener(final AbstractConnectionManager cm, final ManagedConnection mc, 
-         final ManagedConnectionPool mcp, final Object context)
+                                 final Pool pool, final Object context)
    {
-      super(cm, mc, mcp, context);
+      super(cm, mc, pool, context);
    }
    
    /**

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/TxConnectionListener.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/TxConnectionListener.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/TxConnectionListener.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -23,7 +23,7 @@
 
 import org.jboss.jca.common.JBossResourceException;
 import org.jboss.jca.core.connectionmanager.AbstractConnectionManager;
-import org.jboss.jca.core.connectionmanager.pool.api.ManagedConnectionPool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
 import org.jboss.jca.core.connectionmanager.transaction.TransactionSynchronizer;
 import org.jboss.jca.core.connectionmanager.tx.TxConnectionManager;
 import org.jboss.jca.core.connectionmanager.xa.LocalXAResource;
@@ -66,16 +66,16 @@
     * Creates a new tx listener.
     * @param cm connection manager
     * @param mc managed connection
-    * @param mcp managed connection pool
+    * @param pool pool
     * @param context context
     * @param xaResource xaresource instance
     * @throws ResourceException if aexception while creating
     */
    public TxConnectionListener(final AbstractConnectionManager cm, final ManagedConnection mc, 
-         final ManagedConnectionPool mcp, final Object context, final XAResource xaResource)
+                               final Pool pool, final Object context, final XAResource xaResource)
       throws ResourceException
    {
-      super(cm, mc, mcp, context);
+      super(cm, mc, pool, context);
 
       this.xaResource = xaResource;
       

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/notx/NoTxConnectionManager.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/notx/NoTxConnectionManager.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/notx/NoTxConnectionManager.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -34,8 +34,7 @@
  * Non transactional connection manager implementation.
  * 
  * @author <a href="mailto:gurkanerdogdu at yahoo.com">Gurkan Erdogdu</a>
- * @version $Rev$
- *
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
  */
 public class NoTxConnectionManager extends AbstractConnectionManager
 {
@@ -55,11 +54,9 @@
    public ConnectionListener createConnectionListener(ManagedConnection managedConnection, Object context) 
       throws ResourceException
    {
-      ConnectionListener cli = new NoTxConnectionListener(this, managedConnection, getPoolingStrategy(), context);
+      ConnectionListener cli = new NoTxConnectionListener(this, managedConnection, getPool(), context);
       managedConnection.addConnectionEventListener(cli);
       
       return cli;
-
    }
-
 }

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -25,7 +25,8 @@
 import org.jboss.jca.common.JBossResourceException;
 import org.jboss.jca.core.connectionmanager.listener.ConnectionListener;
 import org.jboss.jca.core.connectionmanager.listener.ConnectionListenerFactory;
-import org.jboss.jca.core.connectionmanager.pool.api.ManagedConnectionPool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
 
 import java.util.Iterator;
 import java.util.concurrent.ConcurrentHashMap;
@@ -54,7 +55,7 @@
  * @version $Rev$
  *
  */
-public abstract class AbstractPool implements ManagedConnectionPool
+public abstract class AbstractPool implements Pool
 {
    /** The logger */
    protected final Logger log = Logger.getLogger(getClass());
@@ -72,7 +73,7 @@
    private ConnectionListenerFactory clf;
 
    /** The pool parameters */
-   private final PoolParams poolParams;
+   private final PoolConfiguration poolConfiguration;
 
    /** Whether to use separate pools for transactional and non-transaction use */
    private boolean noTxSeparatePools;
@@ -84,20 +85,20 @@
     * Create a new base pool.
     * 
     * @param mcf the managed connection factory
-    * @param poolParams the pooling parameters
+    * @param pc the pool configuration
     * @param noTxSeparatePools noTxSeparatePool
     */
-   protected AbstractPool(final ManagedConnectionFactory mcf, final PoolParams poolParams,
-                   final boolean noTxSeparatePools)
+   protected AbstractPool(final ManagedConnectionFactory mcf, final PoolConfiguration pc,
+                          final boolean noTxSeparatePools)
    {
       if (mcf == null)
          throw new IllegalArgumentException("MCF is null");
 
-      if (poolParams == null)
-         throw new IllegalArgumentException("PoolParams is null");
+      if (pc == null)
+         throw new IllegalArgumentException("PoolConfiguration is null");
 
       this.mcf = mcf;
-      this.poolParams = poolParams;
+      this.poolConfiguration = pc;
       this.noTxSeparatePools = noTxSeparatePools;
       this.trace = log.isTraceEnabled();
    }
@@ -148,7 +149,7 @@
       if (subPoolContext == null)
       {
          SubPoolContext newSubPoolContext = new SubPoolContext(getTransactionManager(), mcf, clf, subject, 
-                                                         cri, poolParams);
+                                                               cri, poolConfiguration);
          subPoolContext = subPools.putIfAbsent(key, newSubPoolContext);
          if (subPoolContext == null)
          {
@@ -510,7 +511,7 @@
            .append(" [InUse/Available/Max]: [");
            toLog.append(getInUseConnectionCount()).append("/");
            toLog.append(getAvailableConnectionCount()).append("/");
-           toLog.append(poolParams.getMaxSize());
+           toLog.append(poolConfiguration.getMaxSize());
            toLog.append("]");
          */
          log.trace(toLog);

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPrefillPool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPrefillPool.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPrefillPool.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -22,6 +22,8 @@
 
 package org.jboss.jca.core.connectionmanager.pool;
 
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
+
 import javax.resource.spi.ConnectionRequestInfo;
 import javax.resource.spi.ManagedConnectionFactory;
 import javax.security.auth.Subject;
@@ -40,14 +42,14 @@
     * Create a new prefill pool.
     * 
     * @param mcf the managed connection factory
-    * @param poolParams the pooling parameters
+    * @param pc the pool configuration
     * @param noTxSeparatePools noTxSeparatePool
     */
-   protected AbstractPrefillPool(final ManagedConnectionFactory mcf, final PoolParams poolParams,
+   protected AbstractPrefillPool(final ManagedConnectionFactory mcf, final PoolConfiguration pc,
                                  final boolean noTxSeparatePools)
    {
-      super(mcf, poolParams, noTxSeparatePools);
-      this.shouldPrefill = poolParams.isPrefill();
+      super(mcf, pc, noTxSeparatePools);
+      this.shouldPrefill = pc.isPrefill();
    }
 
    /**

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/InternalManagedConnectionPool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/InternalManagedConnectionPool.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/InternalManagedConnectionPool.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -26,6 +26,7 @@
 import org.jboss.jca.core.connectionmanager.listener.ConnectionListener;
 import org.jboss.jca.core.connectionmanager.listener.ConnectionListenerFactory;
 import org.jboss.jca.core.connectionmanager.listener.ConnectionState;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
 import org.jboss.jca.core.connectionmanager.pool.idle.IdleConnectionRemovalSupport;
 import org.jboss.jca.core.connectionmanager.pool.idle.IdleRemover;
 import org.jboss.jca.core.connectionmanager.pool.validator.ConnectionValidator;
@@ -81,6 +82,9 @@
    /** The log */
    private static Logger log = Logger.getLogger(InternalManagedConnectionPool.class);   
    
+   /** Whether trace is enabled */
+   private final boolean trace = log.isTraceEnabled();
+
    /** The managed connection factory */
    private final ManagedConnectionFactory mcf;
 
@@ -93,8 +97,8 @@
    /** The default connection request information */
    private final ConnectionRequestInfo defaultCri;
 
-   /** The pooling parameters */
-   private final PoolParams poolParams;
+   /** The pool configuration */
+   private final PoolConfiguration poolConfiguration;
 
    /** Copy of the maximum size from the pooling parameters.
     * Dynamic changes to this value are not compatible with
@@ -108,9 +112,6 @@
    /** The permits used to control who can checkout a connection */
    private final Semaphore permits;
 
-   /** Whether trace is enabled */
-   private final boolean trace = log.isTraceEnabled();
-
    /** The checked out connections */
    private final CopyOnWriteArraySet<ConnectionListener> checkedOut = new CopyOnWriteArraySet<ConnectionListener>();
 
@@ -130,20 +131,29 @@
     * @param clf the connection listener factory
     * @param subject the subject
     * @param cri the connection request info
-    * @param poolParams the pool parameters
+    * @param pc the pool configuration
     */
    public InternalManagedConnectionPool(ManagedConnectionFactory mcf, ConnectionListenerFactory clf, Subject subject,
-         ConnectionRequestInfo cri, PoolParams poolParams)
+                                        ConnectionRequestInfo cri, PoolConfiguration pc)
    {
+      if (mcf == null)
+         throw new IllegalArgumentException("MCF is null");
+
+      if (clf == null)
+         throw new IllegalArgumentException("CLF is null");
+
+      if (pc == null)
+         throw new IllegalArgumentException("PoolConfiguration is null");
+
       this.mcf = mcf;
       this.clf = clf;
       this.defaultSubject = subject;
       this.defaultCri = cri;
-      this.poolParams = poolParams;
-      this.maxSize = poolParams.getMaxSize();
+      this.poolConfiguration = pc;
+      this.maxSize = pc.getMaxSize();
       this.permits = new Semaphore(this.maxSize, true);
   
-      if (poolParams.isPrefill())
+      if (pc.isPrefill())
       {
          PoolFiller.fillPool(this);
       }
@@ -176,7 +186,7 @@
       try
       {
          //Check connection is available, and if not waits for the blocking timeout
-         if (this.permits.tryAcquire(this.poolParams.getBlockingTimeout(), TimeUnit.MILLISECONDS))
+         if (this.permits.tryAcquire(this.poolConfiguration.getBlockingTimeout(), TimeUnit.MILLISECONDS))
          {
             do
             {
@@ -232,7 +242,7 @@
                      
                      //We made it here, something went wrong and we should validate if 
                      //we should continue attempting to acquire a connection
-                     if (this.poolParams.isUseFastFail())
+                     if (this.poolConfiguration.isUseFastFail())
                      {
                         log.trace("Fast failing for connection attempt. No more attempts will " +
                               "be made to acquire connection from pool and a new connection " +
@@ -257,7 +267,7 @@
          {
             // we timed out
             throw new ResourceException("No ManagedConnections available within configured blocking timeout ( "
-                  + this.poolParams.getBlockingTimeout() + " [ms] )");            
+                  + this.poolConfiguration.getBlockingTimeout() + " [ms] )");            
          }
          
       } 
@@ -337,7 +347,7 @@
          if (!started.get())
          {
             started.set(true);
-            if (poolParams.getMinSize() > 0)
+            if (poolConfiguration.getMinSize() > 0)
             {
                PoolFiller.fillPool(this);  
             }
@@ -420,7 +430,7 @@
    public void removeIdleConnections()
    {
       ArrayList<ConnectionListener> destroy = null;
-      long timeout = System.currentTimeMillis() - poolParams.getIdleTimeout();
+      long timeout = System.currentTimeMillis() - poolConfiguration.getIdleTimeout();
       
       while (true)
       {
@@ -463,7 +473,7 @@
          }
 
          // We destroyed something, check the minimum.
-         if (!shutdown.get() && poolParams.getMinSize() > 0)
+         if (!shutdown.get() && poolConfiguration.getMinSize() > 0)
          {
             PoolFiller.fillPool(this);  
          }
@@ -485,9 +495,9 @@
    {      
       boolean remove = true;
       
-      if (this.poolParams.isStrictMin())
+      if (this.poolConfiguration.isStrictMin())
       {
-         remove = cls.size() > poolParams.getMinSize();
+         remove = cls.size() > poolConfiguration.getMinSize();
          
          log.trace("StrictMin is active. Current connection will be removed is " + remove);
          
@@ -503,19 +513,19 @@
     */
    public void initialize()
    {
-      if (this.poolParams.getIdleTimeout() != 0L)
+      if (this.poolConfiguration.getIdleTimeout() != 0L)
       {
          //Register removal support
-         IdleRemover.registerPool(this, this.poolParams.getIdleTimeout());
+         IdleRemover.registerPool(this, this.poolConfiguration.getIdleTimeout());
       }
       
-      if (this.poolParams.getBackgroundValidationInterval() > 0)
+      if (this.poolConfiguration.getBackgroundValidationInterval() > 0)
       {
          log.debug("Registering for background validation at interval " + 
-               this.poolParams.getBackgroundValidationInterval());         
+               this.poolConfiguration.getBackgroundValidationInterval());         
          
          //Register validation
-         ConnectionValidator.registerPool(this, this.poolParams.getBackgroundValidationInterval());
+         ConnectionValidator.registerPool(this, this.poolConfiguration.getBackgroundValidationInterval());
       }
 
       shutdown.set(false);      
@@ -585,7 +595,7 @@
       }
 
       // This is really an error
-      if (!kill && cls.size() >= poolParams.getMaxSize())
+      if (!kill && cls.size() >= poolConfiguration.getMaxSize())
       {
          log.warn("Destroying returned connection, maximum pool size exceeded " + cl);
          kill = true;
@@ -689,7 +699,7 @@
       }
       
       // We destroyed something, check the minimum.
-      if (!shutdown.get() && poolParams.getMinSize() > 0)
+      if (!shutdown.get() && poolConfiguration.getMinSize() > 0)
       {
          PoolFiller.fillPool(this);  
       }      
@@ -746,7 +756,7 @@
          // Also avoids unnessary fill checking when all connections are checked out
          try
          {
-            if (permits.tryAcquire(poolParams.getBlockingTimeout(), TimeUnit.MILLISECONDS))
+            if (permits.tryAcquire(poolConfiguration.getBlockingTimeout(), TimeUnit.MILLISECONDS))
             {
                try
                {
@@ -801,12 +811,12 @@
     */
    private int getMinSize()
    {
-      if (this.poolParams.getMinSize() > this.maxSize)
+      if (this.poolConfiguration.getMinSize() > this.maxSize)
       {
          return maxSize;  
       }
       
-      return this.poolParams.getMinSize();
+      return this.poolConfiguration.getMinSize();
    }
    
    /**
@@ -821,7 +831,7 @@
          log.trace("Attempting to  validate connections for pool " + this);  
       }
 
-      if (this.permits.tryAcquire(this.poolParams.getBlockingTimeout(), TimeUnit.MILLISECONDS))
+      if (this.permits.tryAcquire(this.poolConfiguration.getBlockingTimeout(), TimeUnit.MILLISECONDS))
       {
          boolean destroyed = false;
          try
@@ -878,7 +888,7 @@
             permits.release();
             
             //Check min size pool after validation
-            if (destroyed && !shutdown.get() && poolParams.getMinSize() > 0)
+            if (destroyed && !shutdown.get() && poolConfiguration.getMinSize() > 0)
             {
                PoolFiller.fillPool(this);
             }
@@ -899,7 +909,7 @@
          cl = iter.next();
          long lastCheck = cl.getLastValidatedTime();
 
-         if ((System.currentTimeMillis() - lastCheck) >= poolParams.getBackgroundValidationInterval())
+         if ((System.currentTimeMillis() - lastCheck) >= poolConfiguration.getBackgroundValidationInterval())
          {
             cls.remove(cl);
             break;

Deleted: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/PoolParams.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/PoolParams.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/PoolParams.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -1,202 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008-2009, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.jca.core.connectionmanager.pool;
-
-/**
- * Pooling parameters. 
- * @author <a href="mailto:gurkanerdogdu at yahoo.com">Gurkan Erdogdu</a>
- * @version $Rev: $
- */
-public class PoolParams
-{
-   /** Minumum size of the pool */
-   private int minSize;
-
-   /** Maximum size of the pool */
-   private int maxSize;
-
-   /**Blocking timeout. In milliseconds*/
-   private int blockingTimeout;
-   
-   /**Idle timeout period. Default 30 mins. In milliseconds*/
-   private long idleTimeout;
-   
-   /**Background validation interval*/
-   private long backgroundValidationInterval;
-   
-   /**Prefill pool*/
-   private boolean prefill;
-   
-   /**Strict minumum, default false*/
-   private boolean strictMin;
-
-   /**Do we want to immeadiately break when a connection cannot be matched and
-   *  not evaluate the rest of the pool? 
-   */
-   private boolean useFastFail;
-
-   /**
-    * Constructor
-    */
-   public PoolParams()
-   {
-      minSize = 0;
-      maxSize = 10;
-      blockingTimeout = 30000;
-      idleTimeout = 1000 * 60 * 30;
-      backgroundValidationInterval = 0;
-      prefill = false;
-      strictMin = false;
-      useFastFail = false;
-   }
-
-   /**
-    * @return the minSize
-    */
-   public int getMinSize()
-   {
-      return minSize;
-   }
-
-   /**
-    * @param minSize the minSize to set
-    */
-   public void setMinSize(int minSize)
-   {
-      this.minSize = minSize;
-   }
-
-   /**
-    * @return the maxSize
-    */
-   public int getMaxSize()
-   {
-      return maxSize;
-   }
-
-   /**
-    * @param maxSize the maxSize to set
-    */
-   public void setMaxSize(int maxSize)
-   {
-      this.maxSize = maxSize;
-   }
-
-   /**
-    * @return the blockingTimeout
-    */
-   public int getBlockingTimeout()
-   {
-      return blockingTimeout;
-   }
-
-   /**
-    * @param blockingTimeout the blockingTimeout to set
-    */
-   public void setBlockingTimeout(int blockingTimeout)
-   {
-      this.blockingTimeout = blockingTimeout;
-   }
-
-   /**
-    * @return the idleTimeout
-    */
-   public long getIdleTimeout()
-   {
-      return idleTimeout;
-   }
-
-   /**
-    * @param idleTimeout the idleTimeout to set
-    */
-   public void setIdleTimeout(long idleTimeout)
-   {
-      this.idleTimeout = idleTimeout;
-   }
-
-   /**
-    * @return the backgroundInterval
-    */
-   public long getBackgroundValidationInterval()
-   {
-      return backgroundValidationInterval;
-   }
-
-   /**
-    * @param backgroundValidationInterval the backgroundInterval to set
-    */
-   public void setBackgroundValidationInterval(long backgroundValidationInterval)
-   {
-      this.backgroundValidationInterval = backgroundValidationInterval;
-   }
-
-   /**
-    * @return the prefill
-    */
-   public boolean isPrefill()
-   {
-      return prefill;
-   }
-
-   /**
-    * @param prefill the prefill to set
-    */
-   public void setPrefill(boolean prefill)
-   {
-      this.prefill = prefill;
-   }
-
-   /**
-    * @return the strictMin
-    */
-   public boolean isStrictMin()
-   {
-      return strictMin;
-   }
-
-   /**
-    * @param strictMin the strictMin to set
-    */
-   public void setStrictMin(boolean strictMin)
-   {
-      this.strictMin = strictMin;
-   }
-
-   /**
-    * @return the useFastFail
-    */
-   public boolean isUseFastFail()
-   {
-      return useFastFail;
-   }
-
-   /**
-    * @param useFastFail the useFastFail to set
-    */
-   public void setUseFastFail(boolean useFastFail)
-   {
-      this.useFastFail = useFastFail;
-   }
-
-   
-}

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/SubPoolContext.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/SubPoolContext.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/SubPoolContext.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -23,6 +23,7 @@
 package org.jboss.jca.core.connectionmanager.pool;
 
 import org.jboss.jca.core.connectionmanager.listener.ConnectionListenerFactory;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
 
 import javax.resource.spi.ConnectionRequestInfo;
 import javax.resource.spi.ManagedConnectionFactory;
@@ -53,12 +54,12 @@
     * @param clf the connection listener factory
     * @param subject the subject
     * @param cri the connection request info
-    * @param poolParams the pool parameters
+    * @param pc the pool configuration
     */
    public SubPoolContext(TransactionManager tm, ManagedConnectionFactory mcf, ConnectionListenerFactory clf, 
-         Subject subject, ConnectionRequestInfo cri, PoolParams poolParams)
+                         Subject subject, ConnectionRequestInfo cri, PoolConfiguration pc)
    {
-      subPool = new InternalManagedConnectionPool(mcf, clf, subject, cri, poolParams);
+      subPool = new InternalManagedConnectionPool(mcf, clf, subject, cri, pc);
       if (tm != null)
       {
          trackByTx = new TransactionLocal(tm);  

Deleted: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/ManagedConnectionPool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/ManagedConnectionPool.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/ManagedConnectionPool.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -1,95 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.jca.core.connectionmanager.pool.api;
-
-import org.jboss.jca.core.connectionmanager.listener.ConnectionListener;
-import org.jboss.jca.core.connectionmanager.listener.ConnectionListenerFactory;
-import org.jboss.jca.core.connectionmanager.pool.InternalManagedConnectionPool;
-
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.security.auth.Subject;
-import javax.transaction.Transaction;
-
-/**
- * A managed connection pool.
- *
- * @author <a href="mailto:gurkanerdogdu at yahoo.com">Gurkan Erdogdu</a>
- * @author <a href="mailto:d_jencks at users.sourceforge.net">David Jencks</a>
- * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
- * @version $Revision$
- */
-public interface ManagedConnectionPool
-{
-   /**
-    * Retrieve the managed connection factory for this pool.
-    * 
-    * @return the managed connection factory
-    */ 
-   ManagedConnectionFactory getManagedConnectionFactory();
-
-   /**
-    * Set the connection listener factory.
-    * 
-    * @param clf the connection event listener factory
-    */
-   void setConnectionListenerFactory(ConnectionListenerFactory clf);
-
-   /**
-    * Get a connection
-    * 
-    * @param trackByTransaction for transaction stickiness
-    * @param subject the subject for connection
-    * @param cri the connection request information
-    * @return a connection event listener wrapping the connection
-    * @throws ResourceException for any error
-    */
-   ConnectionListener getConnection(Transaction trackByTransaction, Subject subject, ConnectionRequestInfo cri)
-      throws ResourceException;
-
-   /**
-    * Return a connection
-    * 
-    * @param cl the connection event listener wrapping the connection
-    * @param kill whether to destroy the managed connection
-    * @throws ResourceException for any error
-    */
-   void returnConnection(ConnectionListener cl, boolean kill) 
-      throws ResourceException;
-
-   /**
-    * Shutdown the pool
-    */
-   void shutdown();
-
-   /**
-    * Flush the pool
-    */
-   void flush();
-
-   /**
-    * Remove the matching SubPoolContext if the pool is empty
-    * @param pool the internal managed connection pool
-    */
-   void emptySubPool(InternalManagedConnectionPool pool);
-}

Copied: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/Pool.java (from rev 106944, projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/ManagedConnectionPool.java)
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/Pool.java	                        (rev 0)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/Pool.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -0,0 +1,94 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.jca.core.connectionmanager.pool.api;
+
+import org.jboss.jca.core.connectionmanager.listener.ConnectionListener;
+import org.jboss.jca.core.connectionmanager.listener.ConnectionListenerFactory;
+import org.jboss.jca.core.connectionmanager.pool.InternalManagedConnectionPool;
+
+import javax.resource.ResourceException;
+import javax.resource.spi.ConnectionRequestInfo;
+import javax.resource.spi.ManagedConnectionFactory;
+import javax.security.auth.Subject;
+import javax.transaction.Transaction;
+
+/**
+ * A pool.
+ *
+ * @author <a href="mailto:gurkanerdogdu at yahoo.com">Gurkan Erdogdu</a>
+ * @author <a href="mailto:d_jencks at users.sourceforge.net">David Jencks</a>
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
+ */
+public interface Pool
+{
+   /**
+    * Retrieve the managed connection factory for this pool.
+    * 
+    * @return the managed connection factory
+    */ 
+   ManagedConnectionFactory getManagedConnectionFactory();
+
+   /**
+    * Set the connection listener factory.
+    * 
+    * @param clf the connection event listener factory
+    */
+   void setConnectionListenerFactory(ConnectionListenerFactory clf);
+
+   /**
+    * Get a connection
+    * 
+    * @param trackByTransaction for transaction stickiness
+    * @param subject the subject for connection
+    * @param cri the connection request information
+    * @return a connection event listener wrapping the connection
+    * @throws ResourceException for any error
+    */
+   ConnectionListener getConnection(Transaction trackByTransaction, Subject subject, ConnectionRequestInfo cri)
+      throws ResourceException;
+
+   /**
+    * Return a connection
+    * 
+    * @param cl the connection event listener wrapping the connection
+    * @param kill whether to destroy the managed connection
+    * @throws ResourceException for any error
+    */
+   void returnConnection(ConnectionListener cl, boolean kill) 
+      throws ResourceException;
+
+   /**
+    * Shutdown the pool
+    */
+   void shutdown();
+
+   /**
+    * Flush the pool
+    */
+   void flush();
+
+   /**
+    * Remove the matching SubPoolContext if the pool is empty
+    * @param pool the internal managed connection pool
+    */
+   void emptySubPool(InternalManagedConnectionPool pool);
+}

Copied: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolConfiguration.java (from rev 106927, projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/PoolParams.java)
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolConfiguration.java	                        (rev 0)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolConfiguration.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -0,0 +1,200 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008-2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.jca.core.connectionmanager.pool.api;
+
+/**
+ * The pool configuration. 
+ * @author <a href="mailto:gurkanerdogdu at yahoo.com">Gurkan Erdogdu</a>
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
+ */
+public class PoolConfiguration
+{
+   /** Minumum size of the pool */
+   private int minSize;
+
+   /** Maximum size of the pool */
+   private int maxSize;
+
+   /**Blocking timeout. In milliseconds*/
+   private int blockingTimeout;
+   
+   /**Idle timeout period. Default 30 mins. In milliseconds*/
+   private long idleTimeout;
+   
+   /**Background validation interval*/
+   private long backgroundValidationInterval;
+   
+   /**Prefill pool*/
+   private boolean prefill;
+   
+   /**Strict minumum, default false*/
+   private boolean strictMin;
+
+   /**Do we want to immeadiately break when a connection cannot be matched and
+   *  not evaluate the rest of the pool? 
+   */
+   private boolean useFastFail;
+
+   /**
+    * Constructor
+    */
+   public PoolConfiguration()
+   {
+      minSize = 0;
+      maxSize = 10;
+      blockingTimeout = 30000;
+      idleTimeout = 1000 * 60 * 30;
+      backgroundValidationInterval = 0;
+      prefill = false;
+      strictMin = false;
+      useFastFail = false;
+   }
+
+   /**
+    * @return the minSize
+    */
+   public int getMinSize()
+   {
+      return minSize;
+   }
+
+   /**
+    * @param minSize the minSize to set
+    */
+   public void setMinSize(int minSize)
+   {
+      this.minSize = minSize;
+   }
+
+   /**
+    * @return the maxSize
+    */
+   public int getMaxSize()
+   {
+      return maxSize;
+   }
+
+   /**
+    * @param maxSize the maxSize to set
+    */
+   public void setMaxSize(int maxSize)
+   {
+      this.maxSize = maxSize;
+   }
+
+   /**
+    * @return the blockingTimeout
+    */
+   public int getBlockingTimeout()
+   {
+      return blockingTimeout;
+   }
+
+   /**
+    * @param blockingTimeout the blockingTimeout to set
+    */
+   public void setBlockingTimeout(int blockingTimeout)
+   {
+      this.blockingTimeout = blockingTimeout;
+   }
+
+   /**
+    * @return the idleTimeout
+    */
+   public long getIdleTimeout()
+   {
+      return idleTimeout;
+   }
+
+   /**
+    * @param idleTimeout the idleTimeout to set
+    */
+   public void setIdleTimeout(long idleTimeout)
+   {
+      this.idleTimeout = idleTimeout;
+   }
+
+   /**
+    * @return the backgroundInterval
+    */
+   public long getBackgroundValidationInterval()
+   {
+      return backgroundValidationInterval;
+   }
+
+   /**
+    * @param backgroundValidationInterval the backgroundInterval to set
+    */
+   public void setBackgroundValidationInterval(long backgroundValidationInterval)
+   {
+      this.backgroundValidationInterval = backgroundValidationInterval;
+   }
+
+   /**
+    * @return the prefill
+    */
+   public boolean isPrefill()
+   {
+      return prefill;
+   }
+
+   /**
+    * @param prefill the prefill to set
+    */
+   public void setPrefill(boolean prefill)
+   {
+      this.prefill = prefill;
+   }
+
+   /**
+    * @return the strictMin
+    */
+   public boolean isStrictMin()
+   {
+      return strictMin;
+   }
+
+   /**
+    * @param strictMin the strictMin to set
+    */
+   public void setStrictMin(boolean strictMin)
+   {
+      this.strictMin = strictMin;
+   }
+
+   /**
+    * @return the useFastFail
+    */
+   public boolean isUseFastFail()
+   {
+      return useFastFail;
+   }
+
+   /**
+    * @param useFastFail the useFastFail to set
+    */
+   public void setUseFastFail(boolean useFastFail)
+   {
+      this.useFastFail = useFastFail;
+   }
+}

Added: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolFactory.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolFactory.java	                        (rev 0)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolFactory.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -0,0 +1,84 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008-2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.jca.core.connectionmanager.pool.api;
+
+import org.jboss.jca.core.connectionmanager.pool.strategy.OnePool;
+import org.jboss.jca.core.connectionmanager.pool.strategy.PoolByCri;
+import org.jboss.jca.core.connectionmanager.pool.strategy.PoolBySubject;
+import org.jboss.jca.core.connectionmanager.pool.strategy.PoolBySubjectAndCri;
+
+import javax.resource.spi.ManagedConnectionFactory;
+
+/**
+ * The pool factory. 
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
+ */
+public class PoolFactory
+{
+   /**
+    * Constructor
+    */
+   public PoolFactory()
+   {
+   }
+
+   /**
+    * Create a pool
+    * @param strategy The pool strategy
+    * @param mcf The managed connection factory
+    * @param pc The pool configuration
+    * @param noTxSeparatePools no-tx separate pool
+    * @return The pool instance
+    */
+   public Pool create(final PoolStrategy strategy,
+                      final ManagedConnectionFactory mcf,
+                      final PoolConfiguration pc,
+                      final boolean noTxSeparatePools)
+   {
+      if (strategy == null)
+         throw new IllegalArgumentException("Strategy is null");
+
+      if (mcf == null)
+         throw new IllegalArgumentException("MCF is null");
+
+      if (pc == null)
+         throw new IllegalArgumentException("PoolConfiguration is null");
+
+      switch (strategy)
+      {
+         case POOL_BY_CRI:
+            return new PoolByCri(mcf, pc, noTxSeparatePools);
+
+         case POOL_BY_SUBJECT:
+            return new PoolBySubject(mcf, pc, noTxSeparatePools);
+
+         case POOL_BY_SUBJECT_AND_CRI:
+            return new PoolBySubjectAndCri(mcf, pc, noTxSeparatePools);
+
+         case ONE_POOL:
+            return new OnePool(mcf, pc, noTxSeparatePools);
+      }
+
+      throw new IllegalArgumentException("Unknown strategy " + strategy);
+   }
+}

Added: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolStrategy.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolStrategy.java	                        (rev 0)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/PoolStrategy.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008-2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.jca.core.connectionmanager.pool.api;
+
+/**
+ * Defines a pool strategy. 
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
+ */
+public enum PoolStrategy
+{
+   /** POOL_BY_CRI */
+   POOL_BY_CRI,
+
+   /** POOL_BY_SUBJECT */
+   POOL_BY_SUBJECT,
+
+   /** POOL_BY_SUBJECT_AND_CRI */
+   POOL_BY_SUBJECT_AND_CRI,
+
+   /** ONE_POOL */
+   ONE_POOL
+}

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/OnePool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/OnePool.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/OnePool.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -24,7 +24,7 @@
 
 import org.jboss.jca.core.connectionmanager.pool.AbstractPrefillPool;
 import org.jboss.jca.core.connectionmanager.pool.InternalManagedConnectionPool;
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
 
 import javax.resource.ResourceException;
 import javax.resource.spi.ConnectionRequestInfo;
@@ -43,12 +43,12 @@
     * Creates a new instance.
     * 
     * @param mcf managed connection factory
-    * @param poolParams pool parameter
+    * @param pc pool configuration
     * @param noTxSeparatePools notx seperate pool
     */
-   public OnePool(final ManagedConnectionFactory mcf, final PoolParams poolParams, final boolean noTxSeparatePools)
+   public OnePool(final ManagedConnectionFactory mcf, final PoolConfiguration pc, final boolean noTxSeparatePools)
    {
-      super(mcf, poolParams, noTxSeparatePools);
+      super(mcf, pc, noTxSeparatePools);
    }
 
    /**

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolByCri.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolByCri.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolByCri.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -23,7 +23,7 @@
 package org.jboss.jca.core.connectionmanager.pool.strategy;
 
 import org.jboss.jca.core.connectionmanager.pool.AbstractPool;
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
 
 import javax.resource.ResourceException;
 import javax.resource.spi.ConnectionRequestInfo;
@@ -42,13 +42,13 @@
    /**
     * Creates a new instance.
     * @param mcf managed connection factory
-    * @param poolParams pool parameter
+    * @param pc pool configuration
     * @param noTxSeparatePools notx seperate pool
     */
-   protected PoolByCri(final ManagedConnectionFactory mcf, final PoolParams poolParams,
-         final boolean noTxSeparatePools)
+   public PoolByCri(final ManagedConnectionFactory mcf, final PoolConfiguration pc,
+                    final boolean noTxSeparatePools)
    {
-      super(mcf, poolParams, noTxSeparatePools);
+      super(mcf, pc, noTxSeparatePools);
    }
 
    /**

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolBySubject.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolBySubject.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolBySubject.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -23,7 +23,7 @@
 package org.jboss.jca.core.connectionmanager.pool.strategy;
 
 import org.jboss.jca.core.connectionmanager.pool.AbstractPool;
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
 
 import javax.resource.ResourceException;
 import javax.resource.spi.ConnectionRequestInfo;
@@ -42,13 +42,13 @@
    /**
     * Creates a new instance.
     * @param mcf managed connection factory
-    * @param poolParams pool parameter
+    * @param pc pool configuration
     * @param noTxSeparatePools notx seperate pool
     */
-   protected PoolBySubject(final ManagedConnectionFactory mcf, final PoolParams poolParams,
-         final boolean noTxSeparatePools)
+   public PoolBySubject(final ManagedConnectionFactory mcf, final PoolConfiguration pc,
+                        final boolean noTxSeparatePools)
    {
-      super(mcf, poolParams, noTxSeparatePools);
+      super(mcf, pc, noTxSeparatePools);
    }
 
    /**

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolBySubjectAndCri.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolBySubjectAndCri.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/strategy/PoolBySubjectAndCri.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -23,7 +23,7 @@
 package org.jboss.jca.core.connectionmanager.pool.strategy;
 
 import org.jboss.jca.core.connectionmanager.pool.AbstractPool;
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
 
 import javax.resource.ResourceException;
 import javax.resource.spi.ConnectionRequestInfo;
@@ -43,13 +43,13 @@
    /**
     * Creates a new instance.
     * @param mcf managed connection factory
-    * @param poolParams pool parameter
+    * @param pc pool configuration
     * @param noTxSeparatePools notx seperate pool
     */
-   protected PoolBySubjectAndCri(final ManagedConnectionFactory mcf, final PoolParams poolParams,
-         final boolean noTxSeparatePools)
+   public PoolBySubjectAndCri(final ManagedConnectionFactory mcf, final PoolConfiguration pc,
+                              final boolean noTxSeparatePools)
    {
-      super(mcf, poolParams, noTxSeparatePools);
+      super(mcf, pc, noTxSeparatePools);
    }
 
    /**

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManager.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManager.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManager.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -123,7 +123,7 @@
  * @author <a href="mailto:d_jencks at users.sourceforge.net">David Jencks</a>
  * @author <a href="mailto:adrian at jboss.org">Adrian Brock</a>
  * @author <a href="weston.price at jboss.com">Weston Price</a>
- * @version $Revision: 77961 $
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
  */
 public class TxConnectionManager extends AbstractConnectionManager
 {
@@ -507,7 +507,7 @@
          }
       }
 
-      ConnectionListener cli = new TxConnectionListener(this, mc, getPoolingStrategy(), context, xaResource);
+      ConnectionListener cli = new TxConnectionListener(this, mc, getPool(), context, xaResource);
       mc.addConnectionEventListener(cli);
       return cli;
    }

Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/AbstractConnectionManagerTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/AbstractConnectionManagerTestCase.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/AbstractConnectionManagerTestCase.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -25,8 +25,10 @@
 import org.jboss.jca.core.connectionmanager.ccm.CachedConnectionManager;
 import org.jboss.jca.core.connectionmanager.common.MockConnectionManager;
 import org.jboss.jca.core.connectionmanager.common.MockManagedConnectionFactory;
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
-import org.jboss.jca.core.connectionmanager.pool.strategy.OnePool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolFactory;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolStrategy;
 
 import javax.resource.ResourceException;
 import javax.security.auth.Subject;
@@ -36,8 +38,6 @@
 import org.jboss.security.SubjectFactory;
 import org.jboss.util.NotImplementedException;
 
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 import static org.junit.Assert.*;
@@ -51,16 +51,22 @@
 public class AbstractConnectionManagerTestCase
 {
    /**
-    * testPoolingStrategyNotNull. 
+    * testPoolNotNull. 
     */
    @Test
-   public void testPoolingStrategyNotNull()
+   public void testPoolNotNull()
    {
       AbstractConnectionManager connectionManager = new MockConnectionManager();
-      assertNull(connectionManager.getPoolingStrategy());
-      connectionManager.setPoolingStrategy(new OnePool(new MockManagedConnectionFactory(), new PoolParams(), false));
-      assertNotNull(connectionManager.getPoolingStrategy());
-      assertTrue(connectionManager.getPoolingStrategy() instanceof OnePool);
+      assertNull(connectionManager.getPool());
+
+      PoolConfiguration pc = new PoolConfiguration();      
+      PoolFactory pf = new PoolFactory();      
+      
+      Pool pool = pf.create(PoolStrategy.ONE_POOL, new MockManagedConnectionFactory(), pc, false);
+      pool.setConnectionListenerFactory(connectionManager);
+      connectionManager.setPool(pool);
+
+      assertNotNull(connectionManager.getPool());
    }
    
    /**
@@ -137,7 +143,14 @@
       AbstractConnectionManager connectionManager = new MockConnectionManager();
       assertNull(connectionManager.getManagedConnectionFactory());
       MockManagedConnectionFactory mcf = new MockManagedConnectionFactory();
-      connectionManager.setPoolingStrategy(new OnePool(mcf, new PoolParams(), false));
+
+      PoolConfiguration pc = new PoolConfiguration();      
+      PoolFactory pf = new PoolFactory();      
+      
+      Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, false);
+      pool.setConnectionListenerFactory(connectionManager);
+      connectionManager.setPool(pool);
+
       assertNotNull(connectionManager.getManagedConnectionFactory());
       assertEquals(mcf, connectionManager.getManagedConnectionFactory());
    }
@@ -229,7 +242,7 @@
    public void testGetManagedConnectionFactoryIsNull()
    {
       AbstractConnectionManager connectionManager = new MockConnectionManager();
-      connectionManager.setPoolingStrategy(null);
+      connectionManager.setPool(null);
       assertNull(connectionManager.getManagedConnectionFactory());
    }
    
@@ -246,14 +259,14 @@
    }
    
    /**
-    * testAllocateConnectionPoolingStrategyNull.
+    * testAllocateConnectionPoolNull.
     * @throws ResourceException for exception
     */
    @Test(expected = ResourceException.class)
-   public void testAllocateConnectionPoolingStrategyNull() throws ResourceException
+   public void testAllocateConnectionPoolNull() throws ResourceException
    {
       AbstractConnectionManager connectionManager = new MockConnectionManager();
-      connectionManager.setPoolingStrategy(null);
+      connectionManager.setPool(null);
       connectionManager.allocateConnection(null, null);
    }
    
@@ -265,8 +278,14 @@
    public void testAllocateConnectionWrongMCF() throws ResourceException
    {
       AbstractConnectionManager connectionManager = new MockConnectionManager();
-      OnePool pool = new OnePool(new MockManagedConnectionFactory(), new PoolParams(), false);
-      connectionManager.setPoolingStrategy(pool);
+
+      PoolConfiguration pc = new PoolConfiguration();      
+      PoolFactory pf = new PoolFactory();      
+      
+      Pool pool = pf.create(PoolStrategy.ONE_POOL, new MockManagedConnectionFactory(), pc, false);
+      pool.setConnectionListenerFactory(connectionManager);
+
+      connectionManager.setPool(pool);
       connectionManager.allocateConnection(new MockManagedConnectionFactory(), null);
    }
    

Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/nontx/NonTxConnectionManagerTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/nontx/NonTxConnectionManagerTestCase.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/nontx/NonTxConnectionManagerTestCase.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -27,8 +27,10 @@
 import org.jboss.jca.core.connectionmanager.common.MockHandle;
 import org.jboss.jca.core.connectionmanager.common.MockManagedConnectionFactory;
 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.pool.api.Pool;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolFactory;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolStrategy;
 
 import javax.resource.ResourceException;
 import javax.resource.spi.ManagedConnectionFactory;
@@ -59,12 +61,13 @@
    {
       NoTxConnectionManager noTxCm = new NoTxConnectionManager();
       mcf = new MockManagedConnectionFactory();
-      PoolParams poolParams = new PoolParams();
+      PoolConfiguration pc = new PoolConfiguration();      
+      PoolFactory pf = new PoolFactory();      
       
-      OnePool onePool = new OnePool(mcf, poolParams, true);
-      onePool.setConnectionListenerFactory(noTxCm);
+      Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, true);
+      pool.setConnectionListenerFactory(noTxCm);
       
-      noTxCm.setPoolingStrategy(onePool);
+      noTxCm.setPool(pool);
       
       connectionManager = noTxCm;
    }   

Copied: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolConfigurationTestCase.java (from rev 106927, projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolParamsTestCase.java)
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolConfigurationTestCase.java	                        (rev 0)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolConfigurationTestCase.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -0,0 +1,135 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008-2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.jca.core.connectionmanager.unit.pool;
+
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * <code>PoolConfiguration</code> unit test.
+ * 
+ * @author <a href="mailto:gurkanerdogdu at yahoo.com">Gurkan Erdogdu</a> 
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a> 
+ */
+public class PoolConfigurationTestCase
+{
+   /**
+    * Test {@link PoolConfiguration#getMinSize()}
+    */
+   @Test
+   public void testMinSize()
+   {
+      PoolConfiguration params = new PoolConfiguration();
+      assertEquals(0, params.getMinSize());
+      params.setMinSize(10);
+      assertEquals(10, params.getMinSize());
+   }
+
+   /**
+    * Test {@link PoolConfiguration#getMaxSize()}
+    */
+   @Test
+   public void testMaxSize()
+   {
+      PoolConfiguration params = new PoolConfiguration();
+      assertEquals(10, params.getMaxSize());
+      params.setMaxSize(20);
+      assertEquals(20, params.getMaxSize());      
+   }
+
+   /**
+    * Test {@link PoolConfiguration#getBlockingTimeout()}
+    */
+   @Test
+   public void testBlockingTimeout()
+   {
+      PoolConfiguration params = new PoolConfiguration();
+      assertEquals(30000, params.getBlockingTimeout());
+      params.setBlockingTimeout(60000);
+      assertEquals(60000, params.getBlockingTimeout());
+   }
+
+   /**
+    * Test {@link PoolConfiguration#getIdleTimeout()}
+    */
+   @Test
+   public void testIdleTimeout()
+   {
+      PoolConfiguration params = new PoolConfiguration();
+      assertEquals(1000 * 60 * 30, params.getIdleTimeout());
+      params.setIdleTimeout(1000 * 60 * 20);
+      assertEquals(1000 * 60 * 20, params.getIdleTimeout());
+   }
+
+   /**
+    * Test {@link PoolConfiguration#getBackgroundValidationInterval()}
+    */
+   @Test
+   public void testBackgroundValidationInterval()
+   {
+      PoolConfiguration params = new PoolConfiguration();
+      assertEquals(0L, params.getBackgroundValidationInterval());
+      params.setBackgroundValidationInterval(50000L);
+      assertEquals(50000L, params.getBackgroundValidationInterval());
+   }
+
+   /**
+    * Test {@link PoolConfiguration#isPrefill()}
+    */
+   @Test
+   public void testIsPrefill()
+   {
+      PoolConfiguration params = new PoolConfiguration();
+      assertFalse("Prefill must be false", params.isPrefill());
+      params.setPrefill(true);
+      assertTrue("Prefill must be true", params.isPrefill());
+   }
+
+   /**
+    * Test {@link PoolConfiguration#isStrictMin()}
+    */
+   @Test
+   public void testIsStrictMin()
+   {
+      PoolConfiguration params = new PoolConfiguration();
+      assertFalse("StrictMin must be false", params.isStrictMin());
+      params.setStrictMin(true);
+      assertTrue("StrictMin must be true", params.isStrictMin());      
+   }
+
+   /**
+    * Test {@link PoolConfiguration#isUseFastFail()}
+    */
+   @Test
+   public void testIsUseFastFail()
+   {
+      PoolConfiguration params = new PoolConfiguration();
+      assertFalse("UseFastFail must be false", params.isUseFastFail());
+      params.setUseFastFail(true);
+      assertTrue("UseFastFail must be true", params.isUseFastFail());      
+   }
+
+}

Deleted: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolParamsTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolParamsTestCase.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/pool/PoolParamsTestCase.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -1,136 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008-2009, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.jca.core.connectionmanager.unit.pool;
-
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- * <code>PoolParams</code> unit test.
- * 
- * @author gurkanerdogdu
- * @version $Rev$ $Date$
- *
- */
-public class PoolParamsTestCase
-{
-   /**
-    * Test {@link PoolParams#getMinSize()}
-    */
-   @Test
-   public void testMinSize()
-   {
-      PoolParams params = new PoolParams();
-      assertEquals(0, params.getMinSize());
-      params.setMinSize(10);
-      assertEquals(10, params.getMinSize());
-   }
-
-   /**
-    * Test {@link PoolParams#getMaxSize()}
-    */
-   @Test
-   public void testMaxSize()
-   {
-      PoolParams params = new PoolParams();
-      assertEquals(10, params.getMaxSize());
-      params.setMaxSize(20);
-      assertEquals(20, params.getMaxSize());      
-   }
-
-   /**
-    * Test {@link PoolParams#getBlockingTimeout()}
-    */
-   @Test
-   public void testBlockingTimeout()
-   {
-      PoolParams params = new PoolParams();
-      assertEquals(30000, params.getBlockingTimeout());
-      params.setBlockingTimeout(60000);
-      assertEquals(60000, params.getBlockingTimeout());
-   }
-
-   /**
-    * Test {@link PoolParams#getIdleTimeout()}
-    */
-   @Test
-   public void testIdleTimeout()
-   {
-      PoolParams params = new PoolParams();
-      assertEquals(1000 * 60 * 30, params.getIdleTimeout());
-      params.setIdleTimeout(1000 * 60 * 20);
-      assertEquals(1000 * 60 * 20, params.getIdleTimeout());
-   }
-
-   /**
-    * Test {@link PoolParams#getBackgroundValidationInterval()}
-    */
-   @Test
-   public void testBackgroundValidationInterval()
-   {
-      PoolParams params = new PoolParams();
-      assertEquals(0L, params.getBackgroundValidationInterval());
-      params.setBackgroundValidationInterval(50000L);
-      assertEquals(50000L, params.getBackgroundValidationInterval());
-   }
-
-   /**
-    * Test {@link PoolParams#isPrefill()}
-    */
-   @Test
-   public void testIsPrefill()
-   {
-      PoolParams params = new PoolParams();
-      assertFalse("Prefill must be false", params.isPrefill());
-      params.setPrefill(true);
-      assertTrue("Prefill must be true", params.isPrefill());
-   }
-
-   /**
-    * Test {@link PoolParams#isStrictMin()}
-    */
-   @Test
-   public void testIsStrictMin()
-   {
-      PoolParams params = new PoolParams();
-      assertFalse("StrictMin must be false", params.isStrictMin());
-      params.setStrictMin(true);
-      assertTrue("StrictMin must be true", params.isStrictMin());      
-   }
-
-   /**
-    * Test {@link PoolParams#isUseFastFail()}
-    */
-   @Test
-   public void testIsUseFastFail()
-   {
-      PoolParams params = new PoolParams();
-      assertFalse("UseFastFail must be false", params.isUseFastFail());
-      params.setUseFastFail(true);
-      assertTrue("UseFastFail must be true", params.isUseFastFail());      
-   }
-
-}

Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/tx/TxConnectionManagerTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/tx/TxConnectionManagerTestCase.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/tx/TxConnectionManagerTestCase.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -25,8 +25,10 @@
 import org.jboss.jca.core.connectionmanager.common.MockConnectionRequestInfo;
 import org.jboss.jca.core.connectionmanager.common.MockHandle;
 import org.jboss.jca.core.connectionmanager.common.MockManagedConnectionFactory;
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
-import org.jboss.jca.core.connectionmanager.pool.strategy.OnePool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolFactory;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolStrategy;
 import org.jboss.jca.core.connectionmanager.transaction.TransactionSynchronizer;
 import org.jboss.jca.core.connectionmanager.tx.TxConnectionManager;
 import org.jboss.jca.core.workmanager.unit.WorkManagerTestCase;
@@ -78,12 +80,13 @@
       transactionManager.begin();
       
       ManagedConnectionFactory mcf = new MockManagedConnectionFactory();
-      PoolParams params = new PoolParams();      
+      PoolConfiguration pc = new PoolConfiguration();      
+      PoolFactory pf = new PoolFactory();      
       
-      OnePool onePool = new OnePool(mcf, params, true);
-      onePool.setConnectionListenerFactory(txConnectionManager);
+      Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, true);
+      pool.setConnectionListenerFactory(txConnectionManager);
       
-      txConnectionManager.setPoolingStrategy(onePool);
+      txConnectionManager.setPool(pool);
       
       Object handle = connectionManager.allocateConnection(mcf, new MockConnectionRequestInfo());
       assertNotNull(handle);

Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/tx/XATxConnectionManagerTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/tx/XATxConnectionManagerTestCase.java	2010-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/tx/XATxConnectionManagerTestCase.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -25,8 +25,10 @@
 import org.jboss.jca.core.connectionmanager.common.MockConnectionRequestInfo;
 import org.jboss.jca.core.connectionmanager.common.MockHandle;
 import org.jboss.jca.core.connectionmanager.common.MockManagedConnectionFactory;
-import org.jboss.jca.core.connectionmanager.pool.PoolParams;
-import org.jboss.jca.core.connectionmanager.pool.strategy.OnePool;
+import org.jboss.jca.core.connectionmanager.pool.api.Pool;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolFactory;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolStrategy;
 import org.jboss.jca.core.connectionmanager.transaction.TransactionSynchronizer;
 import org.jboss.jca.core.connectionmanager.tx.TxConnectionManager;
 import org.jboss.jca.core.workmanager.unit.WorkManagerTestCase;
@@ -76,12 +78,13 @@
       transactionManager.begin();
       
       ManagedConnectionFactory mcf = new MockManagedConnectionFactory();
-      PoolParams params = new PoolParams();      
+      PoolConfiguration pc = new PoolConfiguration();      
+      PoolFactory pf = new PoolFactory();      
       
-      OnePool onePool = new OnePool(mcf, params, true);
-      onePool.setConnectionListenerFactory(txConnectionManager);
+      Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, true);
+      pool.setConnectionListenerFactory(txConnectionManager);
       
-      txConnectionManager.setPoolingStrategy(onePool);
+      txConnectionManager.setPool(pool);
       
       Object handle = connectionManager.allocateConnection(mcf, new MockConnectionRequestInfo());
       assertNotNull(handle);

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-07-20 18:57:05 UTC (rev 106948)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java	2010-07-20 19:01:15 UTC (rev 106949)
@@ -25,10 +25,12 @@
 import org.jboss.jca.common.annotations.Annotations;
 import org.jboss.jca.common.metadata.Metadata;
 import org.jboss.jca.core.api.CloneableBootstrapContext;
-import org.jboss.jca.core.connectionmanager.AbstractConnectionManager;
+import org.jboss.jca.core.connectionmanager.ConnectionManager;
 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.pool.api.Pool;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolConfiguration;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolFactory;
+import org.jboss.jca.core.connectionmanager.pool.api.PoolStrategy;
 import org.jboss.jca.core.connectionmanager.tx.TxConnectionManager;
 import org.jboss.jca.core.spi.naming.JndiStrategy;
 import org.jboss.jca.validator.Failure;
@@ -481,7 +483,7 @@
                         associateResourceAdapter(resourceAdapter, mcf);
                         
                         // Add a connection manager
-                        AbstractConnectionManager cm = null;
+                        ConnectionManager cm = null;
                         TransactionSupportLevel tsl = TransactionSupportLevel.NoTransaction;
                         TransactionSupportMetaData tsmd = TransactionSupportMetaData.NoTransaction;
                         
@@ -537,11 +539,13 @@
                            cm = txCm;
                         }
 
-                        PoolParams poolParams = new PoolParams();
-                        OnePool onePool = new OnePool(mcf, poolParams, true);
-                        onePool.setConnectionListenerFactory(cm);
-                        cm.setPoolingStrategy(onePool);
+                        PoolConfiguration pc = new PoolConfiguration();
+                        PoolFactory pf = new PoolFactory();
 
+                        Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, true);
+                        pool.setConnectionListenerFactory(cm);
+                        cm.setPool(pool);
+
                         // ConnectionFactory
                         Object cf = mcf.createConnectionFactory(cm);
 



More information about the jboss-cvs-commits mailing list