summaryrefslogtreecommitdiffstats
path: root/src/com/vaadin/data/util
diff options
context:
space:
mode:
authorJonatan Kronqvist <jonatan.kronqvist@itmill.com>2011-09-05 11:19:34 +0000
committerJonatan Kronqvist <jonatan.kronqvist@itmill.com>2011-09-05 11:19:34 +0000
commita3675f0689c77bcdd433b324c5177bb1957a5457 (patch)
tree63b5e072d404646dc26c134db1725d21e86dbaee /src/com/vaadin/data/util
parent7355c84b589826e750beab2eab93d8fdc291cf63 (diff)
downloadvaadin-framework-a3675f0689c77bcdd433b324c5177bb1957a5457.tar.gz
vaadin-framework-a3675f0689c77bcdd433b324c5177bb1957a5457.zip
Fix for #7186 - it is now possible to continue using the SQLContainer after an OptimisticLockException after first doing a rollback()
svn changeset:20844/svn branch:6.7
Diffstat (limited to 'src/com/vaadin/data/util')
-rw-r--r--src/com/vaadin/data/util/sqlcontainer/SQLContainer.java24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java b/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java
index 8d00d6f495..f25252b8c0 100644
--- a/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java
+++ b/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java
@@ -414,6 +414,17 @@ public class SQLContainer implements Container, Container.Filterable,
ee);
}
return false;
+ } catch (OptimisticLockException e) {
+ logger.log(Level.WARNING, "Failed to remove row, rolling back",
+ e);
+ try {
+ delegate.rollback();
+ } catch (SQLException ee) {
+ /* Nothing can be done here */
+ logger.log(Level.SEVERE, "Failed to rollback row removal",
+ ee);
+ }
+ throw e;
}
} else {
removedItems.put((RowId) itemId, (RowItem) getItem(itemId));
@@ -460,6 +471,16 @@ public class SQLContainer implements Container, Container.Filterable,
logger.log(Level.SEVERE, "Failed to roll back", ee);
}
return false;
+ } catch (OptimisticLockException e) {
+ logger.log(Level.WARNING,
+ "removeAllItems() failed, rolling back", e);
+ try {
+ delegate.rollback();
+ } catch (SQLException ee) {
+ /* Nothing can be done here */
+ logger.log(Level.SEVERE, "Failed to roll back", ee);
+ }
+ throw e;
}
} else {
for (Object id : getItemIds()) {
@@ -891,6 +912,9 @@ public class SQLContainer implements Container, Container.Filterable,
} catch (SQLException e) {
delegate.rollback();
throw e;
+ } catch (OptimisticLockException e) {
+ delegate.rollback();
+ throw e;
}
}