You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by md...@apache.org on 2011/09/09 19:01:38 UTC

svn commit: r1167296 - in /jackrabbit/sandbox/jackrabbit-mk: jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/ jackrabbit-spi2microkernel/src/main/java/org/apache/jac...

Author: mduerig
Date: Fri Sep  9 17:01:37 2011
New Revision: 1167296

URL: http://svn.apache.org/viewvc?rev=1167296&view=rev
Log:
Microkernel based Jackrabbit prototype (WIP) 
refactor: hide LazyItemIterator

Modified:
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/LazyItemIterator.java
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java

Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java?rev=1167296&r1=1167295&r2=1167296&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java Fri Sep  9 17:01:37 2011
@@ -227,7 +227,7 @@ public class ItemManagerImpl implements 
         session.checkIsAlive();
 
         Iterator<NodeEntry> it = parentEntry.getNodeEntries();
-        return new LazyItemIterator(this, it);
+        return LazyItemIterator.nodeIterator(this, it);
     }
 
     @Override
@@ -256,7 +256,7 @@ public class ItemManagerImpl implements 
         session.checkIsAlive();
 
         Iterator<PropertyEntry> propEntries = parentEntry.getPropertyEntries();
-        return new LazyItemIterator(this, propEntries);
+        return LazyItemIterator.propertyIterator(this, propEntries);
     }
 
     //-------------------------------------------------------------< Object >---

Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java?rev=1167296&r1=1167295&r2=1167296&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java Fri Sep  9 17:01:37 2011
@@ -184,7 +184,7 @@ public class JcrVersionManager implement
         Iterator<NodeId> failedIds = session.getVersionStateManager().merge((NodeState) n.getItemState(), srcWorkspace,
                 bestEffort, isShallow);
         
-        return new LazyItemIterator(itemManager, session.getHierarchyManager(), failedIds);
+        return LazyItemIterator.nodeIterator(itemManager, session.getHierarchyManager(), failedIds);
     }
 
     @Override
@@ -276,7 +276,7 @@ public class JcrVersionManager implement
         session.checkIsAlive();
         NodeImpl activity = getValidActivity(activityNode, "merge");
         Iterator<NodeId> failedIds = vMgr.mergeActivity((NodeState) activity.getItemState());
-        return new LazyItemIterator(itemManager, session.getHierarchyManager(), failedIds);
+        return LazyItemIterator.nodeIterator(itemManager, session.getHierarchyManager(), failedIds);
     }
 
     /**

Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/LazyItemIterator.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/LazyItemIterator.java?rev=1167296&r1=1167295&r2=1167296&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/LazyItemIterator.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/LazyItemIterator.java Fri Sep  9 17:01:37 2011
@@ -16,10 +16,14 @@
  */
 package org.apache.jackrabbit.jcr2spi;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
+import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEntry;
+import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManager;
+import org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntry;
+import org.apache.jackrabbit.jcr2spi.hierarchy.PropertyEntry;
+import org.apache.jackrabbit.spi.NodeId;
+import org.apache.jackrabbit.spi.PropertyId;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import javax.jcr.Item;
 import javax.jcr.Node;
@@ -30,215 +34,285 @@ import javax.jcr.RangeIterator;
 import javax.jcr.RepositoryException;
 import javax.jcr.version.Version;
 import javax.jcr.version.VersionIterator;
-
-import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEntry;
-import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManager;
-import org.apache.jackrabbit.spi.ItemId;
-import org.apache.jackrabbit.spi.NodeId;
-import org.apache.jackrabbit.spi.PropertyId;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.NoSuchElementException;
 
 /**
- * {@code LazyItemIterator} is an id-based iterator that instantiates
- * the {@code Item}s only when they are requested.
+ * {@code LazyItemIterator} returns id-based iterators which instantiate
+ * {@code Item}s only when they are requested.
  * <p/>
  * <strong>Important:</strong> {@code Item}s that appear to be nonexistent
  * for some reason (e.g. because of insufficient access rights or because they
  * have been removed since the iterator has been retrieved) are silently
  * skipped. As a result the size of the iterator as reported by
- * {@link #getSize()} always returns -1.
+ * {@link RangeIterator#getSize()} always returns -1.
  */
-public class LazyItemIterator implements NodeIterator, PropertyIterator, VersionIterator {
-
-    /** Logger instance for this class */
+public final class LazyItemIterator {
     private static final Logger log = LoggerFactory.getLogger(LazyItemIterator.class);
 
     private static final long UNDEFINED_SIZE = -1;
 
-    /** the item manager that is used to lazily fetch the items */
-    private final ItemManager itemMgr;
-
-    /** Iterator over HierarchyEntry elements */
-    private final Iterator<? extends HierarchyEntry> hierarchyEntries;
+    private LazyItemIterator() {
+    }
 
     /**
-     * The number of items.
-     * Note, that the size may change over the time due to the lazy behaviour
-     * of this iterator that may only upon iteration found out, that a
-     * hierarchy entry has been invalidated or removed in the mean time.
+     * Creates a new {@code NodeIterator} instance.
+     *
+     * @param itemManager item manager
+     * @param nodeEntries Iterator over NodeEntries
      */
-    private long size;
+    public static NodeIterator nodeIterator(ItemManager itemManager, Iterator<NodeEntry> nodeEntries) {
+        return new IteratorImpl(itemManager, nodeEntries, sizeOf(nodeEntries));
+    }
 
-    /** the position of the next item */
-    private int pos;
+    /**
+     * Creates a new {@code NodeIterator} instance.
+     *
+     * @param itemManager
+     * @param hierarchyManager
+     * @param nodeIds
+     */
+    public static NodeIterator nodeIterator(ItemManager itemManager, HierarchyManager hierarchyManager,
+            Iterator<NodeId> nodeIds) throws RepositoryException {
 
-    /** pre-fetched item to be returned on {@code }{@link #next()}</code> */
-    private Item next;
+        List<NodeEntry> entries = nodeEntries(hierarchyManager, nodeIds);
+        return new IteratorImpl(itemManager, entries.iterator(), entries.size());
+    }
 
     /**
-     * Creates a new {@code LazyItemIterator} instance.
+     * Creates a new {@code PropertyIterator} instance.
      *
-     * @param itemMgr item manager
-     * @param hierarchyEntryIterator Iterator over HierarchyEntries
+     * @param itemManager item manager
+     * @param propertyEntries Iterator over PropertyEntries
      */
-    public LazyItemIterator(ItemManager itemMgr, Iterator<? extends HierarchyEntry> hierarchyEntryIterator) {
-        this.itemMgr = itemMgr;
-        hierarchyEntries = hierarchyEntryIterator;
-        if (hierarchyEntryIterator instanceof RangeIterator) {
-            size = ((RangeIterator) hierarchyEntryIterator).getSize();
-        } else {
-            size = UNDEFINED_SIZE;
-        }
-        pos = 0;
-        // fetch first item
-        next = prefetchNext();
+    public static PropertyIterator propertyIterator(ItemManager itemManager, Iterator<PropertyEntry> propertyEntries) {
+        return new IteratorImpl(itemManager, propertyEntries, sizeOf(propertyEntries));
     }
 
     /**
-     * Creates a new {@code LazyItemIterator} instance.
+     * Creates a new {@code PropertyIterator} instance.
      *
-     * @param itemMgr
-     * @param hierarchyMgr
-     * @param itemIds
+     * @param itemManager
+     * @param hierarchyManager
+     * @param propertyIds
      */
-    public LazyItemIterator(ItemManager itemMgr, HierarchyManager hierarchyMgr, Iterator<? extends ItemId> itemIds)
-            throws RepositoryException {
+    public static PropertyIterator propertyIterator(ItemManager itemManager, HierarchyManager hierarchyManager,
+            Iterator<PropertyId> propertyIds) throws RepositoryException {
 
-        this.itemMgr = itemMgr;
-        List<HierarchyEntry> entries = new ArrayList<HierarchyEntry>();
-        while (itemIds.hasNext()) {
-            ItemId id = itemIds.next();
-            HierarchyEntry entry;
-            if (id.denotesNode()) {
-                entry = hierarchyMgr.getNodeEntry((NodeId) id);
-            } else {
-                entry = hierarchyMgr.getPropertyEntry((PropertyId) id);
-            }
-            entries.add(entry);
-        }
-        hierarchyEntries = entries.iterator();
-        size = entries.size();
-        pos = 0;
-        // fetch first item
-        next = prefetchNext();
+        List<PropertyEntry> entries = propertyEntries(hierarchyManager, propertyIds);
+        return new IteratorImpl(itemManager, entries.iterator(), entries.size());
     }
 
     /**
-     * Pre-fetches next item.
-     * <p>
-     * {@link #next} is set to the next available item in this iterator or to
-     * {@code null} in case there are no more items.
+     * Creates a new {@code VersionIterator} instance.
+     *
+     * @param itemManager item manager
+     * @param nodeEntries Iterator over NodeEntries
      */
-    private Item prefetchNext() {
-        Item nextItem = null;
-        while (nextItem == null && hierarchyEntries.hasNext()) {
-            HierarchyEntry entry = hierarchyEntries.next();
-            try {
-                nextItem = itemMgr.getItem(entry);
-            } catch (RepositoryException e) {
-                log.warn("Failed to fetch item " + entry.getName() + ", skipping.", e.getMessage());
-                // reduce the size... and try the next one
-                size--;
-            }
-        }
-        return nextItem;
+    public static VersionIterator versionIterator(ItemManager itemManager, Iterator<NodeEntry> nodeEntries) {
+        return new IteratorImpl(itemManager, nodeEntries, sizeOf(nodeEntries));
     }
 
-    //-------------------------------------------------------< NodeIterator >---
+    /**
+     * Creates a new {@code VersionIterator} instance.
+     *
+     * @param itemManager
+     * @param hierarchyManager
+     * @param nodeIds
+     */
+    public static VersionIterator versionIterator(ItemManager itemManager, HierarchyManager hierarchyManager,
+            Iterator<NodeId> nodeIds) throws RepositoryException {
 
-    @Override
-    public Node nextNode() {
-        return (Node) next();
+        List<NodeEntry> entries = nodeEntries(hierarchyManager, nodeIds);
+        return new IteratorImpl(itemManager, entries.iterator(), entries.size());
     }
 
-    //---------------------------------------------------< PropertyIterator >---
-
-    @Override
-    public Property nextProperty() {
-        return (Property) next();
+    //------------------------------------------< private >---
+    
+    private static long sizeOf(Iterator<?> it) {
+        return it instanceof RangeIterator
+                ? ((RangeIterator) it).getSize()
+                : UNDEFINED_SIZE;
     }
 
-    //----------------------------------------------------< VersionIterator >---
+    private static List<NodeEntry> nodeEntries(HierarchyManager hierarchyManager, Iterator<NodeId> ids)
+            throws RepositoryException {
 
-    @Override
-    public Version nextVersion() {
-        return (Version) next();
+        List<NodeEntry> entries = new ArrayList<NodeEntry>();
+        while (ids.hasNext()) {
+            entries.add(hierarchyManager.getNodeEntry(ids.next()));
+        }
+        return entries;
     }
 
-    //------------------------------------------------------< RangeIterator >---
+    private static List<PropertyEntry> propertyEntries(HierarchyManager hierarchyManager, Iterator<PropertyId> ids)
+            throws RepositoryException {
 
-    @Override
-    public long getPosition() {
-        return pos;
+        List<PropertyEntry> entries = new ArrayList<PropertyEntry>();
+        while (ids.hasNext()) {
+            entries.add(hierarchyManager.getPropertyEntry(ids.next()));
+        }
+        return entries;
     }
 
-    /**
-     * Returns the number of {@code Item}s in this iterator or -1 if the
-     * size is unknown.
-     * </p>
-     * Note: The number returned by this method may differ from the number
-     * of {@code Item}s actually returned by calls to hasNext() / getNextNode().
-     * This is caused by the lazy instantiation behaviour of this iterator,
-     * that may detect only upon iteration that an Item has been invalidated
-     * or removed in the mean time. As soon as an invalid {@code Item} is
-     * detected, the size of this iterator is adjusted.
-     *
-     * @return the number of {@code Item}s in this iterator.
-     * @see RangeIterator#getSize()
-     */
-    @Override
-    public long getSize() {
-        return size;
-    }
+    //------------------------------------------< Inner class >---
+    
+    private static class IteratorImpl implements NodeIterator, PropertyIterator, VersionIterator {
+
+        /** the item manager that is used to lazily fetch the items */
+        private final ItemManager itemMgr;
+
+        /** Iterator over HierarchyEntry elements */
+        private final Iterator<? extends HierarchyEntry> hierarchyEntries;
+
+        /**
+         * The number of items.
+         * Note, that the size may change over the time due to the lazy behaviour
+         * of this iterator that may only upon iteration found out, that a
+         * hierarchy entry has been invalidated or removed in the mean time.
+         */
+        private long size;
+
+        /** the position of the next item */
+        private int pos;
+
+        /** pre-fetched item to be returned on {@code }{@link #next()}</code> */
+        private Item next;
+
+        /**
+         * Creates a new {@code LazyItemIterator} instance.
+         *
+         * @param itemMgr item manager
+         * @param hierarchyEntryIterator Iterator over HierarchyEntries
+         */
+        public IteratorImpl(ItemManager itemMgr, Iterator<? extends HierarchyEntry> hierarchyEntryIterator, long size) {
+            this.itemMgr = itemMgr;
+            hierarchyEntries = hierarchyEntryIterator;
+            this.size = size;
+            pos = 0;
 
-    @Override
-    public void skip(long skipNum) {
-        if (skipNum < 0) {
-            throw new IllegalArgumentException("skipNum must not be negative");
+            // fetch first item
+            next = prefetchNext();
         }
-        if (skipNum == 0) {
-            return;
+
+        /**
+         * Pre-fetches next item.
+         * <p>
+         * {@link #next} is set to the next available item in this iterator or to
+         * {@code null} in case there are no more items.
+         */
+        private Item prefetchNext() {
+            Item nextItem = null;
+            while (nextItem == null && hierarchyEntries.hasNext()) {
+                HierarchyEntry entry = hierarchyEntries.next();
+                try {
+                    nextItem = itemMgr.getItem(entry);
+                } catch (RepositoryException e) {
+                    log.warn("Failed to fetch item " + entry.getName() + ", skipping.", e.getMessage());
+                    // reduce the size... and try the next one
+                    size--;
+                }
+            }
+            return nextItem;
         }
-        if (next == null) {
-            throw new NoSuchElementException();
+
+        //-------------------------------------------------------< NodeIterator >---
+
+        @Override
+        public Node nextNode() {
+            return (Node) next();
         }
 
-        // skip the first (skipNum - 1) items without actually retrieving them
-        while (--skipNum > 0) {
-            pos++;
-            HierarchyEntry entry = hierarchyEntries.next();
-            // check if item exists but don't build Item instance.
-            while (!itemMgr.itemExists(entry)) {
-                log.debug("Ignoring nonexistent item " + entry);
-                entry = hierarchyEntries.next();
+        //---------------------------------------------------< PropertyIterator >---
+
+        @Override
+        public Property nextProperty() {
+            return (Property) next();
+        }
+
+        //----------------------------------------------------< VersionIterator >---
+
+        @Override
+        public Version nextVersion() {
+            return (Version) next();
+        }
+
+        //------------------------------------------------------< RangeIterator >---
+
+        @Override
+        public long getPosition() {
+            return pos;
+        }
+
+        /**
+         * Returns the number of {@code Item}s in this iterator or -1 if the
+         * size is unknown.
+         * </p>
+         * Note: The number returned by this method may differ from the number
+         * of {@code Item}s actually returned by calls to hasNext() / getNextNode().
+         * This is caused by the lazy instantiation behaviour of this iterator,
+         * that may detect only upon iteration that an Item has been invalidated
+         * or removed in the mean time. As soon as an invalid {@code Item} is
+         * detected, the size of this iterator is adjusted.
+         *
+         * @return the number of {@code Item}s in this iterator.
+         * @see RangeIterator#getSize()
+         */
+        @Override
+        public long getSize() {
+            return size;
+        }
+
+        @Override
+        public void skip(long skipNum) {
+            if (skipNum < 0) {
+                throw new IllegalArgumentException("skipNum must not be negative");
+            }
+            if (skipNum == 0) {
+                return;
             }
+            if (next == null) {
+                throw new NoSuchElementException();
+            }
+
+            // skip the first (skipNum - 1) items without actually retrieving them
+            while (--skipNum > 0) {
+                pos++;
+                HierarchyEntry entry = hierarchyEntries.next();
+                // check if item exists but don't build Item instance.
+                while (!itemMgr.itemExists(entry)) {
+                    log.debug("Ignoring nonexistent item " + entry);
+                    entry = hierarchyEntries.next();
+                }
+            }
+            // fetch final item (the one to be returned on next())
+            pos++;
+            next = prefetchNext();
         }
-        // fetch final item (the one to be returned on next())
-        pos++;
-        next = prefetchNext();
-    }
 
-    //-----------------------------------------------------------< Iterator >---
+        //-----------------------------------------------------------< Iterator >---
 
-    @Override
-    public boolean hasNext() {
-        return next != null;
-    }
+        @Override
+        public boolean hasNext() {
+            return next != null;
+        }
 
-    @Override
-    public Object next() {
-        if (next == null) {
-            throw new NoSuchElementException();
+        @Override
+        public Object next() {
+            if (next == null) {
+                throw new NoSuchElementException();
+            }
+            Item item = next;
+            pos++;
+            next = prefetchNext();
+            return item;
         }
-        Item item = next;
-        pos++;
-        next = prefetchNext();
-        return item;
-    }
 
-    @Override
-    public void remove() {
-        throw new UnsupportedOperationException("remove");
+        @Override
+        public void remove() {
+            throw new UnsupportedOperationException("remove");
+        }
     }
 }

Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java?rev=1167296&r1=1167295&r2=1167296&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java Fri Sep  9 17:01:37 2011
@@ -1468,16 +1468,17 @@ public class NodeImpl extends ItemImpl i
     }
 
     /**
+     *
      * @param name
      * @param weak
      * @return
      * @throws RepositoryException
      */
-    private LazyItemIterator getReferences(String name, boolean weak) throws RepositoryException {
+    private PropertyIterator getReferences(String name, boolean weak) throws RepositoryException {
         checkStatus();
         Name propName = name == null ? null : getQName(name);
         Iterator<PropertyId> itr = getNodeState().getNodeReferences(propName, weak);
-        return new LazyItemIterator(getItemManager(), session.getHierarchyManager(), itr);
+        return LazyItemIterator.propertyIterator(getItemManager(), session.getHierarchyManager(), itr);
     }
 
     /**

Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java?rev=1167296&r1=1167295&r2=1167296&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java Fri Sep  9 17:01:37 2011
@@ -425,8 +425,7 @@ public class SessionImpl extends Abstrac
      * @see javax.jcr.Session#setNamespacePrefix(String, String)
      */
     @Override
-    public void setNamespacePrefix(String prefix, String uri)
-            throws RepositoryException {
+    public void setNamespacePrefix(String prefix, String uri) throws RepositoryException {
         super.setNamespacePrefix(prefix, uri);
         // Reset name and path caches
         npResolver = new DefaultNamePathResolver(this, true);

Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java?rev=1167296&r1=1167295&r2=1167296&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java Fri Sep  9 17:01:37 2011
@@ -103,7 +103,7 @@ public class VersionHistoryImpl extends 
                 versionEntries.add(entry);
             }
         }
-        return new LazyItemIterator(getItemManager(), versionEntries.iterator());
+        return LazyItemIterator.versionIterator(getItemManager(), versionEntries.iterator());
     }
 
     @Override

Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java?rev=1167296&r1=1167295&r2=1167296&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java Fri Sep  9 17:01:37 2011
@@ -174,7 +174,7 @@ public class SubscriptionImpl implements
 
         public synchronized String wait(final String baseRevision, final long timeout) throws RepositoryException {
             if (baseRevision == null) {
-                throw new IllegalArgumentException("Base revision may not be null");
+                throw new IllegalArgumentException("IteratorImpl revision may not be null");
             }
             if (waitForCommit != null) {
                 throw new IllegalStateException("Wait already in progress");