You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2006/10/02 12:28:58 UTC

svn commit: r451955 - in /jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state: ChangeLog.java WorkspaceItemStateManager.java

Author: angela
Date: Mon Oct  2 03:28:57 2006
New Revision: 451955

URL: http://svn.apache.org/viewvc?view=rev&rev=451955
Log:
work in progress

- delegate cleanup and event-handling to the changelog

Modified:
    jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChangeLog.java
    jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateManager.java

Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChangeLog.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChangeLog.java?view=diff&rev=451955&r1=451954&r2=451955
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChangeLog.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChangeLog.java Mon Oct  2 03:28:57 2006
@@ -17,6 +17,7 @@
 package org.apache.jackrabbit.jcr2spi.state;
 
 import org.apache.jackrabbit.jcr2spi.operation.Operation;
+import org.apache.jackrabbit.spi.EventIterator;
 import org.apache.commons.collections.iterators.IteratorChain;
 
 import java.util.Iterator;
@@ -273,12 +274,25 @@
     }
 
     //-----------------------------< Inform ChangeLog about Success/Failure >---
+    /**
+     * ChangeLog has successfully been commited. The given <code>EventIterator</code>
+     * contains information about all modifications. This ChangeLog needs
+     * to notify all transient states involved.
+     *
+     * @param events
+     */
+    public void persist(EventIterator events) {
+        // TODO: events may reveal additional autocreated items and modifications
+        // applied while commiting the changelog (e.g. uuid or nodetype of new nodes).
+        push();
+        persisted();
+    }
 
     /**
      * Push all states contained in the various maps of
      * items we have.
      */
-    public void push() {
+    private void push() {
         Iterator iter = modifiedStates();
         while (iter.hasNext()) {
             ((ItemState) iter.next()).push();
@@ -297,7 +311,7 @@
      * After the states have actually been persisted, update their
      * internal states and notify listeners.
      */
-    public void persisted() {
+    private void persisted() {
         Iterator iter = modifiedStates();
         while (iter.hasNext()) {
             ItemState state = (ItemState) iter.next();

Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateManager.java?view=diff&rev=451955&r1=451954&r2=451955
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateManager.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateManager.java Mon Oct  2 03:28:57 2006
@@ -115,9 +115,9 @@
         if (changeLog == null) {
             throw new IllegalArgumentException("ChangeLog must not be null.");
         }
-        // now we need to apply the transient changes in changeLog to
-        // the ItemStates in the workspace layer
-        changeLog.push();
-        changeLog.persisted();
+        // apply the transient changes in changeLog to the ItemStates in the
+        // workspace layer and synchronize the changes recorded in the changelog
+        // with the events sent.
+        changeLog.persist(events);
     }
 }