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 2006/07/28 11:22:44 UTC

svn commit: r426449 - in /lenya/trunk/src: java/org/apache/lenya/transaction/Transactionable.java java/org/apache/lenya/transaction/UnitOfWorkImpl.java modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java

Author: andreas
Date: Fri Jul 28 02:22:44 2006
New Revision: 426449

URL: http://svn.apache.org/viewvc?rev=426449&view=rev
Log:
Notify node listeners after transaction is successfully committed, not during the commit.

Modified:
    lenya/trunk/src/java/org/apache/lenya/transaction/Transactionable.java
    lenya/trunk/src/java/org/apache/lenya/transaction/UnitOfWorkImpl.java
    lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java

Modified: lenya/trunk/src/java/org/apache/lenya/transaction/Transactionable.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/transaction/Transactionable.java?rev=426449&r1=426448&r2=426449&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/transaction/Transactionable.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/transaction/Transactionable.java Fri Jul 28 02:22:44 2006
@@ -41,4 +41,14 @@
      */
     void createTransactionable() throws TransactionException;
     
+    /**
+     * Notify the transactionable that it has been changed.
+     */
+    void changed();
+    
+    /**
+     * Notify the transactionable that it has been removed.
+     */
+    void removed();
+    
 }

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=426449&r1=426448&r2=426449&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/transaction/UnitOfWorkImpl.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/transaction/UnitOfWorkImpl.java Fri Jul 28 02:22:44 2006
@@ -46,6 +46,7 @@
     private IdentityMap identityMap;
 
     /**
+     * @return The identity map.
      * @see org.apache.lenya.transaction.UnitOfWork#getFactory()
      */
     public IdentityMap getIdentityMap() {
@@ -162,6 +163,24 @@
                     }
                 }
             }
+        }
+        
+        notifyTransactionables();
+        
+    }
+
+    protected void notifyTransactionables() {
+        for (Iterator i = this.newObjects.iterator(); i.hasNext();) {
+            Transactionable t = (Transactionable) i.next();
+            t.changed();
+        }
+        for (Iterator i = this.modifiedObjects.iterator(); i.hasNext();) {
+            Transactionable t = (Transactionable) i.next();
+            t.changed();
+        }
+        for (Iterator i = this.removedObjects.iterator(); i.hasNext();) {
+            Transactionable t = (Transactionable) i.next();
+            t.removed();
         }
     }
 

Modified: lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java?rev=426449&r1=426448&r2=426449&view=diff
==============================================================================
--- lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java (original)
+++ lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java Fri Jul 28 02:22:44 2006
@@ -231,17 +231,26 @@
             } else {
                 SourceUtil.delete(getRealSourceURI(), this.manager);
             }
-            Node node = getDocumentNode();
-            for (Iterator i = this.listeners.iterator(); i.hasNext(); ) {
-                NodeListener listener = (NodeListener) i.next();
-                listener.nodeRemoved(node, getSession().getIdentity());
-            }
+            removed();
 
         } catch (Exception e) {
             throw new RepositoryException(e);
         }
     }
 
+    public void removed() {
+        Node node;
+        try {
+            node = getDocumentNode();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        for (Iterator i = this.listeners.iterator(); i.hasNext(); ) {
+            NodeListener listener = (NodeListener) i.next();
+            listener.nodeRemoved(node, getSession().getIdentity());
+        }
+    }
+
     private RevisionController revisionController;
 
     protected RevisionController getRevisionController() throws RepositoryException {
@@ -319,11 +328,7 @@
                     read = in.read(buf);
                 }
 
-                Node node = getDocumentNode();
-                for (Iterator i = this.listeners.iterator(); i.hasNext(); ) {
-                    NodeListener listener = (NodeListener) i.next();
-                    listener.nodeChanged(node, getSession().getIdentity());
-                }
+                changed();
 
             } catch (Exception e) {
                 throw new RepositoryException(e);
@@ -348,6 +353,19 @@
                     manager.release(resolver);
                 }
             }
+        }
+    }
+
+    public void changed() {
+        Node node;
+        try {
+            node = getDocumentNode();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        for (Iterator i = this.listeners.iterator(); i.hasNext(); ) {
+            NodeListener listener = (NodeListener) i.next();
+            listener.nodeChanged(node, getSession().getIdentity());
         }
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org