diff options
author | Jonatan Kronqvist <jonatan.kronqvist@itmill.com> | 2011-09-05 11:19:34 +0000 |
---|---|---|
committer | Jonatan Kronqvist <jonatan.kronqvist@itmill.com> | 2011-09-05 11:19:34 +0000 |
commit | a3675f0689c77bcdd433b324c5177bb1957a5457 (patch) | |
tree | 63b5e072d404646dc26c134db1725d21e86dbaee /src/com/vaadin/data/util | |
parent | 7355c84b589826e750beab2eab93d8fdc291cf63 (diff) | |
download | vaadin-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.java | 24 |
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; } } |