[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