[Jboss-cvs] JBossAS SVN: r56256 - branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/adapter/jdbc/support

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Aug 25 07:33:10 EDT 2006


Author: weston.price at jboss.com
Date: 2006-08-25 07:33:09 -0400 (Fri, 25 Aug 2006)
New Revision: 56256

Modified:
   branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/adapter/jdbc/support/JdbcExternalCodeHandler.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/adapter/jdbc/support/JdbcExternalCodeHandler.java
===================================================================
--- branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/adapter/jdbc/support/JdbcExternalCodeHandler.java	2006-08-25 11:17:25 UTC (rev 56255)
+++ branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/adapter/jdbc/support/JdbcExternalCodeHandler.java	2006-08-25 11:33:09 UTC (rev 56256)
@@ -7,6 +7,7 @@
 
 package org.jboss.resource.adapter.jdbc.support;
 
+import java.io.Serializable;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -26,16 +27,20 @@
  * @author <a href="weston.price at jboss.com">Weston Price</a>
  * @version $Revision: 1.1 $
  */
-public class JdbcExternalCodeHandler implements ExceptionSorter, StaleConnectionChecker
+public class JdbcExternalCodeHandler implements ExceptionSorter, StaleConnectionChecker, Serializable
 {
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 2807074076959468607L;
    private static final Logger logger = Logger.getLogger(JdbcExternalCodeHandler.class);
-   private final boolean trace = logger.isTraceEnabled();
+   private static final boolean trace = logger.isTraceEnabled();
 
    private static final String STALE_CODE_ELEMENT = "stale-code";
    private static final String FATAL_CODE_ELEMENT = "fatal-code";
-
+   private static final String ABS_VALUE_ATTRIBUTE = "use-absolute-value";
+   
+   private boolean useAbsoluteValue;
+   
    private List staleCodes = new ArrayList();
-
    private List fatalCodes = new ArrayList();
 
    public boolean hasStaleCodes()
@@ -52,6 +57,19 @@
 
    public JdbcExternalCodeHandler(final Document doc)
    {
+      
+      String value = doc.getDocumentElement().getAttribute(ABS_VALUE_ATTRIBUTE);
+      
+      if(value != null && !value.equalsIgnoreCase(""))
+      {
+         useAbsoluteValue  = Boolean.valueOf(value).booleanValue();
+         
+         if(trace)
+         {
+            logger.trace("Using absolute value for error codes has been set to " + useAbsoluteValue);
+            
+         }
+      }
       NodeList stale = doc.getElementsByTagName(STALE_CODE_ELEMENT);
 
       for (int i = 0; i < stale.getLength(); i++)
@@ -63,7 +81,8 @@
          try
          {
 
-            code = Integer.valueOf(content);
+            
+            code = useAbsoluteValue ? Integer.valueOf(Math.abs(Integer.valueOf(content).intValue())) : Integer.valueOf(content);
             staleCodes.add(code);
 
          }
@@ -82,12 +101,19 @@
 
       for (int i = 0; i < fatal.getLength(); i++)
       {
-         Node fatalNode = (Element) stale.item(i);
+         Node fatalNode = (Element) fatal.item(i);
          String content = fatalNode.getTextContent();
+         Integer code;
          try
          {
 
-            Integer code = Integer.valueOf(content);
+            code = useAbsoluteValue ? Integer.valueOf(Math.abs(Integer.valueOf(content).intValue())) : Integer.valueOf(content);
+            
+            if(staleCodes.contains(code))
+            {
+               logger.warn("Code " + code + " appears in both stale-codes list and fatal-codes list. Stale code will be used.");               
+            }
+            
             fatalCodes.add(code);
 
          }
@@ -119,15 +145,16 @@
 
    public boolean isExceptionFatal(SQLException e)
    {
-      int fatalCode = e.getErrorCode();
-      return fatalCodes.contains(Integer.valueOf(fatalCode));
+      int fatalCode = e.getErrorCode();    
+      return (useAbsoluteValue) ? fatalCodes.contains(Integer.valueOf(Math.abs(fatalCode))) : fatalCodes.contains(Integer.valueOf(fatalCode));
+     
    }
 
-   public boolean isStaleConnection(SQLException e)
+   public boolean isStaleConnection(final SQLException e)
    {
       int staleCode = e.getErrorCode();
-      return staleCodes.contains(Integer.valueOf(staleCode));
-
+      return useAbsoluteValue ? staleCodes.contains(Integer.valueOf(Math.abs(staleCode))) : staleCodes.contains(Integer.valueOf(staleCode));
+      
    }
 
    public int getFatalCodeCount()




More information about the jboss-cvs-commits mailing list