[Jboss-cvs] JBossAS SVN: r56106 - branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/connectionmanager

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Aug 21 11:19:51 EDT 2006


Author: weston.price at jboss.com
Date: 2006-08-21 11:19:50 -0400 (Mon, 21 Aug 2006)
New Revision: 56106

Modified:
   branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java
Log:
[JBAS-3453] Adding purge policy and policy handling to JBossManagedConnectionPool
as well as InternalManagedConnectionPool.

Modified: branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java
===================================================================
--- branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java	2006-08-21 15:19:02 UTC (rev 56105)
+++ branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java	2006-08-21 15:19:50 UTC (rev 56106)
@@ -11,6 +11,7 @@
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.List;
 
 import javax.resource.ResourceException;
 import javax.resource.spi.ConnectionRequestInfo;
@@ -326,26 +327,84 @@
       {
          if (trace)
             log.trace("Destroying returned connection " + cl);
-         doDestroy(cl);
+       
+         if(poolParams.purgePolilcy.equals(PurgePolicy.CONNECTION))
+         {
+             doDestroy(cl);        	 
+         
+         }else if(poolParams.purgePolilcy.equals(PurgePolicy.POOL))
+         {
+        	 purge(cl);
+         }
+         
       }
 
    }
-
-   public void flush()
+   
+   private void purge(ConnectionListener cl)
    {
+	   List destroy = new ArrayList();
+	   
+	   if(poolParams.purgePolilcy.equals(PurgePolicy.CONNECTION))
+	   {
+		   doDestroy(cl);
+		   
+	   }else
+	   {
+		   flush(false);
+//		   //Add the current connection
+//		   destroy.add(cl);
+//		  
+//		   synchronized (cls) 
+//		   {
+//			  
+//			   while(cls.size() > 0)
+//			   {
+//				  
+//			   }
+//
+//			   for(Iterator iter = cls.iterator(); iter.hasNext();)
+//			   {
+//				   ConnectionListener purged = (ConnectionListener)iter.next();
+//				   cls.remove(purged);
+//				   destroy.add(purged);
+//			   }
+//			  
+//		   }
+//		   
+//		   
+//		   
+//		   for(Iterator iter = destroy.iterator(); iter.hasNext();)
+//		   {
+//			   ConnectionListener dl = (ConnectionListener)iter.next();
+//			   doDestroy(dl);
+//		   }
+//		   
+		   
+	   }
+	   
+   
+   }
+   
+   public void flush(boolean destroyCheckedOut)
+   {
       ArrayList destroy = null;
       synchronized (cls)
       {
          if (trace)
             log.trace("Flushing pool checkedOut=" + checkedOut + " inPool=" + cls);
-
-         // Mark checked out connections as requiring destruction
-         for (Iterator i = checkedOut.iterator(); i.hasNext();)
+         
+         if(destroyCheckedOut)
          {
-            ConnectionListener cl = (ConnectionListener) i.next();
-            if (trace)
-               log.trace("Flush marking checked out connection for destruction " + cl);
-            cl.setState(ConnectionListener.DESTROY);
+             // Mark checked out connections as requiring destruction
+             for (Iterator i = checkedOut.iterator(); i.hasNext();)
+             {
+                ConnectionListener cl = (ConnectionListener) i.next();
+                if (trace)
+                   log.trace("Flush marking checked out connection for destruction " + cl);
+                cl.setState(ConnectionListener.DESTROY);
+             }
+        	 
          }
          // Destroy connections in the pool
          while (cls.size() > 0)
@@ -438,7 +497,7 @@
       IdleRemover.unregisterPool(this);
 
       // Flush the pool
-      flush();
+      flush(true);
    }
 
    public void fillToMin()
@@ -529,7 +588,7 @@
          throw re;
       }
    }
-
+   
    /**
     * Destroy a connection
     *
@@ -576,6 +635,9 @@
       public int blockingTimeout = 30000; //milliseconds
 
       public long idleTimeout = 1000 * 60 * 30; //milliseconds, 30 minutes.
+      
+      //Default to connection
+      public PurgePolicy purgePolilcy = PurgePolicy.CONNECTION;
    }
 
    /**




More information about the jboss-cvs-commits mailing list