You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2007/08/29 13:32:07 UTC
svn commit: r570759 -
/lenya/trunk/src/java/org/apache/lenya/transaction/UnitOfWorkImpl.java
Author: andreas
Date: Wed Aug 29 04:32:05 2007
New Revision: 570759
URL: http://svn.apache.org/viewvc?rev=570759&view=rev
Log:
Move check-in of nodes to finally block to avoid stale checked-in nodes (see bug 43163)
Modified:
lenya/trunk/src/java/org/apache/lenya/transaction/UnitOfWorkImpl.java
Modified: lenya/trunk/src/java/org/apache/lenya/transaction/UnitOfWorkImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/transaction/UnitOfWorkImpl.java?rev=570759&r1=570758&r2=570759&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/transaction/UnitOfWorkImpl.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/transaction/UnitOfWorkImpl.java Wed Aug 29 04:32:05 2007
@@ -112,38 +112,41 @@
involvedObjects.addAll(this.modifiedObjects);
involvedObjects.addAll(this.removedObjects);
- for (Iterator i = involvedObjects.iterator(); i.hasNext();) {
- Transactionable t = (Transactionable) i.next();
- t.checkout();
- }
-
- for (Iterator i = this.newObjects.iterator(); i.hasNext();) {
- Transactionable t = (Transactionable) i.next();
- t.createTransactionable();
- t.saveTransactionable();
- }
- for (Iterator i = this.modifiedObjects.iterator(); i.hasNext();) {
- Transactionable t = (Transactionable) i.next();
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("UnitOfWorkImpl::commit() calling save on [" + t + "]");
+ try {
+ for (Iterator i = involvedObjects.iterator(); i.hasNext();) {
+ Transactionable t = (Transactionable) i.next();
+ t.checkout();
}
- t.saveTransactionable();
- }
- for (Iterator i = this.removedObjects.iterator(); i.hasNext();) {
- Transactionable t = (Transactionable) i.next();
- t.deleteTransactionable();
- }
- if (getIdentityMap() != null) {
- Object[] objects = getIdentityMap().getObjects();
- for (int i = 0; i < objects.length; i++) {
- if (objects[i] instanceof Transactionable) {
- Transactionable t = (Transactionable) objects[i];
- if (t.isCheckedOutBySession() && !this.removedObjects.contains(t)) {
- t.checkin();
- }
- if (t.isLocked()) {
- t.unlock();
+ for (Iterator i = this.newObjects.iterator(); i.hasNext();) {
+ Transactionable t = (Transactionable) i.next();
+ t.createTransactionable();
+ t.saveTransactionable();
+ }
+ for (Iterator i = this.modifiedObjects.iterator(); i.hasNext();) {
+ Transactionable t = (Transactionable) i.next();
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("UnitOfWorkImpl::commit() calling save on [" + t + "]");
+ }
+ t.saveTransactionable();
+ }
+ for (Iterator i = this.removedObjects.iterator(); i.hasNext();) {
+ Transactionable t = (Transactionable) i.next();
+ t.deleteTransactionable();
+ }
+
+ } finally {
+ if (getIdentityMap() != null) {
+ Object[] objects = getIdentityMap().getObjects();
+ for (int i = 0; i < objects.length; i++) {
+ if (objects[i] instanceof Transactionable) {
+ Transactionable t = (Transactionable) objects[i];
+ if (t.isCheckedOutBySession() && !this.removedObjects.contains(t)) {
+ t.checkin();
+ }
+ if (t.isLocked()) {
+ t.unlock();
+ }
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org