[exo-jcr-commits] exo-jcr SVN: r2259 - jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/cas.
do-not-reply at jboss.org
do-not-reply at jboss.org
Fri Apr 9 10:04:27 EDT 2010
Author: dkatayev
Date: 2010-04-09 10:04:27 -0400 (Fri, 09 Apr 2010)
New Revision: 2259
Modified:
jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/cas/JDBCValueContentAddressStorageImpl.java
Log:
EXOJCR-626 Added mechanism to catch H2 Private Key violation esxception "org.h2.jdbc.JdbcSQLException: Unique index or primary key violation"
Modified: jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/cas/JDBCValueContentAddressStorageImpl.java
===================================================================
--- jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/cas/JDBCValueContentAddressStorageImpl.java 2010-04-09 13:49:51 UTC (rev 2258)
+++ jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/cas/JDBCValueContentAddressStorageImpl.java 2010-04-09 14:04:27 UTC (rev 2259)
@@ -97,6 +97,18 @@
*/
private static final String DB2_PK_CONSTRAINT_DETECT_PATTERN =
"(.*DB2 SQL error+.*SQLCODE: -803+.*SQLSTATE: 23505+.*%s.*)+?";
+
+ /**
+ * MYSQL_PK_CONSTRAINT_DETECT_PATTERN.
+ */
+ private static final String H2_PK_CONSTRAINT_DETECT_PATTERN =
+ "(.*JdbcSQLException.*violation.*PRIMARY_KEY_.*)";
+
+ /**
+ * H2_PK_CONSTRAINT_DETECT.
+ */
+ private static final Pattern H2_PK_CONSTRAINT_DETECT =
+ Pattern.compile(H2_PK_CONSTRAINT_DETECT_PATTERN, Pattern.CASE_INSENSITIVE);
/**
* DB2_PK_CONSTRAINT_DETECT.
@@ -302,11 +314,14 @@
// HSQLDB 8.x - java.sql.SQLException: Violation of unique constraint $$: duplicate value(s) for
// column(s) $$:
// JCR_VCAS_PK in statement [INSERT INTO JCR_VCAS (PROPERTY_ID, ORDER_NUM, CAS_ID)
- // VALUES(?,?,?)]
+ // VALUES(?,?,?)] String H2_PK_CONSTRAINT_DETECT_PATTERN = "(.*JdbcSQLException.*violation.*PRIMARY_KEY_.*)";
// PostgreSQL 8.2.x - org.postgresql.util.PSQLException: ERROR: duplicate key violates unique
// constraint "jcr_vcas_pk"
// Oracle 9i x64 (on Fedora 7) - java.sql.SQLException: ORA-00001: unique constraint
// (EXOADMIN.JCR_VCAS_PK) violated
+ // H2 - org.h2.jdbc.JdbcSQLException: Unique index or primary key violation:
+ // "PRIMARY_KEY_4 ON PUBLIC.JCR_VCAS_TEST(PROPERTY_ID, ORDER_NUM)";
+ //
String err = e.toString();
if (DBConstants.DB_DIALECT_MYSQL.equalsIgnoreCase(dialect)
|| DBConstants.DB_DIALECT_MYSQL_UTF8.equalsIgnoreCase(dialect))
@@ -323,6 +338,10 @@
{
return DB2_PK_CONSTRAINT_DETECT.matcher(err).find();
}
+ else if (DBConstants.DB_DIALECT_H2.equalsIgnoreCase(dialect))
+ {
+ return H2_PK_CONSTRAINT_DETECT.matcher(err).find();
+ }
// NOTICE! As an additional check we may ask the database for property currently processed in
// VCAS
More information about the exo-jcr-commits
mailing list