Author: ppoddar
Date: Mon Dec 10 12:11:22 2007
New Revision: 603028
URL: http://svn.apache.org/viewvc?rev=603028&view=rev
Log:
OPENJPA-462: Adding SQLState in DerbyDictionary to demonstrate specialization
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java?rev=603028&r1=603027&r2=603028&view=diff
==============================================================================
---
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
(original)
+++
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
Mon Dec 10 12:11:22 2007
@@ -4033,7 +4033,11 @@
* [EMAIL PROTECTED] StoreException}.<br>
* JDBC Drivers are not uniform in return values of SQLState for the same
* error and hence each database specific Dictionary can specialize.<br>
- * Default behavior is to return an empty list.
+ *
+ *
+ * @return an <em>unmodifiable</em> list of Strings representing
supposedly
+ * uniform SQL States for a given type of StoreException.
+ * Default behavior is to return an empty list.
*/
public List/*<String>*/ getSQLStates(int exceptionType) {
if (exceptionType>=0 && exceptionType<SQL_STATE_CODES.length)
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=603028&r1=603027&r2=603028&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
Mon Dec 10 12:11:22 2007
@@ -20,9 +20,14 @@
import java.sql.DriverManager;
import java.sql.SQLException;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
+
import javax.sql.DataSource;
+import org.apache.openjpa.util.StoreException;
+
/**
* Dictionary for Apache Derby (formerly Cloudscape).
*/
@@ -93,4 +98,26 @@
}
}
}
+
+ /**
+ * Adds extra SQLState code that Derby JDBC Driver uses. In JDBC 4.0,
+ * SQLState will follow either XOPEN or SQL 2003 convention. A compliant
+ * driver can be queries via DatabaseMetaData.getSQLStateType() to detect
+ * the convention type.<br>
+ * This method is overwritten to highlight that a) the SQL State is ideally
+ * uniform across JDBC Drivers but not practically and b) the overwritten
+ * method must crate a new list to return as the super classes list is
+ * unmodifable.
+ */
+ public List getSQLStates(int exceptionType) {
+ List original = super.getSQLStates(exceptionType);
+ if (exceptionType == StoreException.LOCK) {
+ // Can not add new codes to unmodifable list of the super class
+ List newStates = new ArrayList(original);
+ newStates.add("40XL1");
+ return newStates;
+ }
+ return original;
+ }
+
}