You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pp...@apache.org on 2010/03/12 16:17:59 UTC
svn commit: r922290 - in /openjpa/trunk:
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/
openjpa-kernel/src/main/java/org/apache/openjpa/kernel/
openjpa-kernel/src/main/java/org/apache/openjpa/util/
Author: ppoddar
Date: Fri Mar 12 15:17:58 2010
New Revision: 922290
URL: http://svn.apache.org/viewvc?rev=922290&view=rev
Log:
OPENJPA-1565: Raise correct timeout exceptions.
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/FirebirdDictionary.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLServerDictionary.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Exceptions.java
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java?rev=922290&r1=922289&r2=922290&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java Fri Mar 12 15:17:58 2010
@@ -135,7 +135,7 @@ public class DerbyDictionary
DriverManager.getConnection(conf.getConnectionURL()
+ ";shutdown=true");
} catch (SQLException e) {
- // we actuall expect a SQLException to be thrown here:
+ // we actually expect a SQLException to be thrown here:
// Derby strangely uses that as a mechanism to report
// a successful shutdown
}
@@ -143,19 +143,13 @@ public class DerbyDictionary
}
@Override
- protected Boolean matchErrorState(int subtype, Set<String> errorStates,
- SQLException ex) {
- Boolean recoverable = null;
- String errorState = ex.getSQLState();
+ protected boolean isFatalException(int subtype, SQLException ex) {
int errorCode = ex.getErrorCode();
- if (errorStates.contains(errorState)) {
- recoverable = Boolean.FALSE;
- if ((subtype == StoreException.LOCK ||
- subtype == StoreException.QUERY) && errorCode < 30000) {
- recoverable = Boolean.TRUE;
- }
+ if ((subtype == StoreException.LOCK ||
+ subtype == StoreException.QUERY) && errorCode <= 30000) {
+ return false;
}
- return recoverable;
+ return super.isFatalException(subtype, ex);
}
}
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/FirebirdDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/FirebirdDictionary.java?rev=922290&r1=922289&r2=922290&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/FirebirdDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/FirebirdDictionary.java Fri Mar 12 15:17:58 2010
@@ -25,6 +25,7 @@ import java.sql.SQLException;
import java.sql.Types;
import java.text.MessageFormat;
import java.util.Arrays;
+import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -38,6 +39,7 @@ import org.apache.openjpa.jdbc.schema.Se
import org.apache.openjpa.jdbc.schema.Unique;
import org.apache.openjpa.lib.identifier.IdentifierUtil;
import org.apache.openjpa.lib.util.Localizer;
+import org.apache.openjpa.util.StoreException;
import org.apache.openjpa.util.UnsupportedException;
/**
@@ -482,10 +484,12 @@ public class FirebirdDictionary
* Use error code as SQL state returned by Firebird is ambiguous.
*/
@Override
- protected Boolean matchErrorState(int subtype, Set<String> errorStates,
- SQLException ex) {
- int errorCode = ex.getErrorCode();
- return errorStates.contains(String.valueOf(errorCode)) ? Boolean.FALSE
- : null;
+ protected int matchErrorState(Map<Integer,Set<String>> errorStates, SQLException ex) {
+ String errorState = ""+ex.getErrorCode();
+ for (Map.Entry<Integer,Set<String>> states : errorStates.entrySet()) {
+ if (states.getValue().contains(errorState))
+ return states.getKey();
+ }
+ return StoreException.GENERAL;
}
}
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java?rev=922290&r1=922289&r2=922290&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java Fri Mar 12 15:17:58 2010
@@ -39,6 +39,7 @@ import org.apache.openjpa.jdbc.schema.Fo
import org.apache.openjpa.jdbc.schema.Index;
import org.apache.openjpa.jdbc.schema.PrimaryKey;
import org.apache.openjpa.jdbc.schema.Table;
+import org.apache.openjpa.util.StoreException;
/**
* Dictionary for MySQL.
@@ -420,6 +421,15 @@ public class MySQLDictionary
}
return result;
}
+
+ @Override
+ protected boolean isFatalException(int subtype, SQLException ex) {
+ if ((subtype == StoreException.LOCK && ex.getErrorCode() == 1205)
+ ||(subtype == StoreException.QUERY && ex.getErrorCode() == 1317)) {
+ return false;
+ }
+ return super.isFatalException(subtype, ex);
+ }
/**
* OPENJPA-740 Special case for MySql special column types,
@@ -443,6 +453,5 @@ public class MySQLDictionary
return super.getTypeName(col);
}
}
-
}
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLServerDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLServerDictionary.java?rev=922290&r1=922289&r2=922290&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLServerDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLServerDictionary.java Fri Mar 12 15:17:58 2010
@@ -281,20 +281,12 @@ public class SQLServerDictionary extends
}
@Override
- protected Boolean matchErrorState(int subtype, Set<String> errorStates,
- SQLException ex) {
- Boolean recoverable = null;
+ protected boolean isFatalException(int subtype, SQLException ex) {
String errorState = ex.getSQLState();
- if (errorStates.contains(errorState)) {
- recoverable = Boolean.FALSE;
- if (subtype == StoreException.LOCK && errorState.equals("1222")) {
- recoverable = Boolean.TRUE;
- } else if (subtype == StoreException.QUERY &&
- errorState.equals("HY008")) {
- recoverable = Boolean.TRUE;
- }
- }
- return recoverable;
+ if ((subtype == StoreException.LOCK && "1222".equals(errorState))
+ ||(subtype == StoreException.QUERY && "HY008".equals(errorState)))
+ return false;
+ return super.isFatalException(subtype, ex);
}
/**
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java?rev=922290&r1=922289&r2=922290&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java Fri Mar 12 15:17:58 2010
@@ -719,13 +719,14 @@ public class FetchConfigurationImpl
} else if ("setWriteLockLevel".equals(methodName) && !isActiveTransaction()) {
_state.writeLockLevel = (Integer)value;
} else {
- setter.invoke(this, value);
+ setter.invoke(this, Filters.convertToMatchMethodArgument(value, setter));
}
} catch (Exception e) {
- if (e instanceof IllegalArgumentException)
- throw (IllegalArgumentException)e;
- throw new IllegalArgumentException(_loc.get("bad-hint-value", key, toString(value),
- toString(original)).getMessage(), e);
+ String message = _loc.get("bad-hint-value", key, toString(value), toString(original)).getMessage();
+ if (e instanceof IllegalArgumentException) {
+ throw new IllegalArgumentException(message);
+ }
+ throw new IllegalArgumentException(message, e);
}
}
addHint(key, original);
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Exceptions.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Exceptions.java?rev=922290&r1=922289&r2=922290&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Exceptions.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Exceptions.java Fri Mar 12 15:17:58 2010
@@ -272,4 +272,13 @@ public class Exceptions {
return toClassName(cls.getComponentType())+"[]";
return cls.getName();
}
+
+ public static String toClassNames(Collection<? extends Class<?>> classes) {
+ if (classes == null) return "";
+ StringBuilder buffer = new StringBuilder();
+ for (Class<?> cls : classes) {
+ buffer.append("\r\n").append(toClassName(cls));
+ }
+ return buffer.toString();
+ }
}