You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by fa...@apache.org on 2008/06/11 05:03:16 UTC
svn commit: r666512 - in
/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel:
BatchingConstraintUpdateManager.java BatchingOperationOrderUpdateManager.java
BatchingPreparedStatementManagerImpl.java
Author: fancy
Date: Tue Jun 10 20:03:16 2008
New Revision: 666512
URL: http://svn.apache.org/viewvc?rev=666512&view=rev
Log:
OPENJPA-634 Batched updates resulted in SQLException was not propagated back to users application
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingConstraintUpdateManager.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingOperationOrderUpdateManager.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingPreparedStatementManagerImpl.java
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingConstraintUpdateManager.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingConstraintUpdateManager.java?rev=666512&r1=666511&r2=666512&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingConstraintUpdateManager.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingConstraintUpdateManager.java Tue Jun 10 20:03:16 2008
@@ -19,9 +19,12 @@
package org.apache.openjpa.jdbc.kernel;
import java.sql.Connection;
+import java.sql.SQLException;
import java.util.Collection;
import org.apache.openjpa.jdbc.sql.RowManager;
+import org.apache.openjpa.jdbc.sql.SQLExceptions;
+import org.apache.openjpa.util.OpenJPAException;
/**
* <P>Batch update manager that writes the SQL in object-level operation order.
@@ -53,10 +56,24 @@
*/
protected Collection flush(RowManager rowMgr,
PreparedStatementManager psMgr, Collection exceps) {
- Collection rtnCol = super.flush(rowMgr, psMgr, exceps);
+ super.flush(rowMgr, psMgr, exceps);
BatchingPreparedStatementManagerImpl bPsMgr =
(BatchingPreparedStatementManagerImpl) psMgr;
- bPsMgr.flushBatch();
- return rtnCol;
+ try {
+ bPsMgr.flushBatch();
+ } catch (SQLException se) {
+ exceps = addException(exceps, SQLExceptions.getStore(se, dict));
+ } catch (OpenJPAException ke) {
+ exceps = addException(exceps, ke);
+ }
+
+ // return all exceptions
+ Collection psExceps = psMgr.getExceptions();
+ if (exceps == null)
+ return psExceps;
+ if (psExceps == null)
+ return exceps;
+ exceps.addAll(psExceps);
+ return exceps;
}
}
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingOperationOrderUpdateManager.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingOperationOrderUpdateManager.java?rev=666512&r1=666511&r2=666512&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingOperationOrderUpdateManager.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingOperationOrderUpdateManager.java Tue Jun 10 20:03:16 2008
@@ -19,9 +19,12 @@
package org.apache.openjpa.jdbc.kernel;
import java.sql.Connection;
+import java.sql.SQLException;
import java.util.Collection;
import org.apache.openjpa.jdbc.sql.RowManager;
+import org.apache.openjpa.jdbc.sql.SQLExceptions;
+import org.apache.openjpa.util.OpenJPAException;
/**
* <P>Batch update manager that writes the SQL in object-level operation order.
@@ -55,10 +58,24 @@
*/
protected Collection flush(RowManager rowMgr,
PreparedStatementManager psMgr, Collection exceps) {
- Collection rtnCol = super.flush(rowMgr, psMgr, exceps);
+ super.flush(rowMgr, psMgr, exceps);
BatchingPreparedStatementManagerImpl bPsMgr =
(BatchingPreparedStatementManagerImpl) psMgr;
- bPsMgr.flushBatch();
- return rtnCol;
+ try {
+ bPsMgr.flushBatch();
+ } catch (SQLException se) {
+ exceps = addException(exceps, SQLExceptions.getStore(se, dict));
+ } catch (OpenJPAException ke) {
+ exceps = addException(exceps, ke);
+ }
+
+ // return all exceptions
+ Collection psExceps = psMgr.getExceptions();
+ if (exceps == null)
+ return psExceps;
+ if (psExceps == null)
+ return exceps;
+ exceps.addAll(psExceps);
+ return exceps;
}
}
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingPreparedStatementManagerImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingPreparedStatementManagerImpl.java?rev=666512&r1=666511&r2=666512&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingPreparedStatementManagerImpl.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingPreparedStatementManagerImpl.java Tue Jun 10 20:03:16 2008
@@ -138,7 +138,7 @@
* flush all cached up statements to be executed as a single or batched
* prepared statements.
*/
- protected void flushBatch() {
+ protected void flushBatch() throws SQLException {
List batchedRows = getBatchedRows();
String batchedSql = getBatchedSql();
if (batchedRows == null)