Index: oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/ProgressNotificationEditor.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/ProgressNotificationEditor.java	(date 1495535889000)
+++ oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/ProgressNotificationEditor.java	(revision )
@@ -19,47 +19,60 @@
 
 package org.apache.jackrabbit.oak.spi.commit;
 
-import static org.apache.jackrabbit.oak.commons.PathUtils.concat;
-
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
 
-import com.google.common.base.Function;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.slf4j.Logger;
 
+import static org.apache.jackrabbit.oak.commons.PathUtils.concat;
+
 /**
  * This {@code Editor} instance logs invocations to the logger
  * passed to its constructor after each 10000 calls to it
  * {@code enter()} method.
  */
 public class ProgressNotificationEditor implements Editor {
+    public interface ProgressListener {
+        /**
+         * Invoked for every traversed node
+         * @param path path of current node
+         */
+        void traversedNode(String path) throws CommitFailedException;
+
+    }
+
     private final Editor editor;
     private final String path;
-    private final Function<String, Void> onProgress;
+    private final ProgressListener onProgress;
 
     @CheckForNull
     public static Editor wrap(@CheckForNull Editor editor, final Logger logger, final String message) {
-        if (editor != null && !(editor instanceof ProgressNotificationEditor)) {
-            return new ProgressNotificationEditor(editor, "/", new Function<String, Void>() {
-                int count;
+        return wrap(editor,
+                new ProgressListener() {
+                    int count;
 
-                @Nullable
-                @Override
-                public Void apply(String path) {
-                    if (++count % 10000 == 0) {
-                        logger.info(message + " Traversed #" + count + ' ' + path);
-                    }
-                    return null;
-                }
-            });
+                    @Nullable
+                    @Override
+                    public void traversedNode(String path) {
+                        if (++count % 10000 == 0) {
+                            logger.info(message + " Traversed #" + count + ' ' + path);
+                        }
+                    }
+                });
+    }
+
+    @CheckForNull
+    public static Editor wrap(@CheckForNull Editor editor, ProgressListener onProgress) {
+        if (editor != null && !(editor instanceof ProgressNotificationEditor)) {
+            return new ProgressNotificationEditor(editor, "/", onProgress);
         }
         return editor;
     }
 
-    private ProgressNotificationEditor(Editor editor, String path, Function<String, Void> onProgress) {
+    private ProgressNotificationEditor(Editor editor, String path, ProgressListener onProgress) {
         this.editor = editor;
         this.path = path;
         this.onProgress = onProgress;
@@ -67,7 +80,7 @@
 
     @Override
     public void enter(NodeState before, NodeState after) throws CommitFailedException {
-        onProgress.apply(path);
+        onProgress.traversedNode(path);
         editor.enter(before, after);
     }
 
