Index: /usr/src/jackrabbit/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/impl/ObjectIterator.java
===================================================================
--- /usr/src/jackrabbit/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/impl/ObjectIterator.java	(revision 572301)
+++ /usr/src/jackrabbit/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/impl/ObjectIterator.java	(working copy)
@@ -18,11 +18,14 @@
 package org.apache.jackrabbit.ocm.manager.impl;
 
 import java.util.Iterator;
+import java.util.NoSuchElementException;
 
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
+import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
+import org.apache.jackrabbit.ocm.exception.ObjectContentManagerException;
 import org.apache.jackrabbit.ocm.manager.objectconverter.ObjectConverter;
 
 
@@ -37,8 +40,6 @@
 
 	private NodeIterator nodeIterator;
 
-	private Class objectClass;
-
 	private Session session;
 
 	private ObjectConverter objectConverter;
@@ -43,6 +44,7 @@
 
 	private ObjectConverter objectConverter;
 
+    private Object nextResult;
 	
 	/**
 	 * Constructor 
@@ -52,49 +54,57 @@
 	 * @param converter The object converter
 	 * @param session the JCR session 
 	 */
-	public ObjectIterator(NodeIterator iterator, Class objectClass, ObjectConverter converter, Session session)
+	public ObjectIterator(NodeIterator iterator, ObjectConverter converter, Session session)
 	{
 		nodeIterator = iterator;
-		this.objectClass = objectClass;
 		objectConverter = converter;
 		this.session = session;
+		
+		// get first result
+        seek();
 	}
 
-	/**
-	 * 
-	 * @see java.util.Iterator#hasNext()
-	 */
-	public boolean hasNext()
-	{
-		return nodeIterator.hasNext();
-	}
 
-	/**
-	 * 
-	 * @see java.util.Iterator#next()
-	 */
-	public Object next() 
-	{
-
-		try
-		{
-			Node node = nodeIterator.nextNode();
-			return objectConverter.getObject(session, node.getPath());
-		}
-		catch (Exception e)
-		{
-           return null;			
-		}
-
-	}
-
-	/**
-	 * 
-	 * @see java.util.Iterator#remove()
-	 */
-	public void remove()
-	{
-		nodeIterator.remove();
-	}
+	public boolean hasNext() {
+        return nextResult != null;
+    }
+    
+	
+    public Object next() {
+        if (nextResult == null) {
+            throw new NoSuchElementException();
+        }
+        
+        Object result = nextResult;
+        seek();
+        return result;
+    }
 
+    
+    public void remove() {
+        throw new UnsupportedOperationException();
+    }
+    
+    
+    private void seek() {
+        while (nodeIterator.hasNext()) {
+            try {
+                Node node = nodeIterator.nextNode();
+                Object value = objectConverter.getObject(session, node.getPath());
+                if (value != null) {
+                    nextResult = value;
+                    return;
+                }
+            } catch (RepositoryException re) {
+                // TODO: log this situation and continue mapping
+            } catch (ObjectContentManagerException ocme) {
+                // TODO: log this situation and continue mapping
+            } catch (Throwable t) {
+                // TODO: log this situation and continue mapping
+            }
+        }
+        
+        // no more results
+        nextResult = null;
+    }
 }

