diff --git a/common/source/java/ch/systemsx/cisd/common/utilities/DirectoryScanningTimerTask.java b/common/source/java/ch/systemsx/cisd/common/utilities/DirectoryScanningTimerTask.java
index 2f371ba0d386aa07cd88fdd0c8ec8415d1635fb9..096fd098ba637e79e4a381cd7420a2655547feba 100644
--- a/common/source/java/ch/systemsx/cisd/common/utilities/DirectoryScanningTimerTask.java
+++ b/common/source/java/ch/systemsx/cisd/common/utilities/DirectoryScanningTimerTask.java
@@ -278,7 +278,10 @@ public final class DirectoryScanningTimerTask extends TimerTask
         }
         try
         {
-            handler.handle(item);
+            if (handler.mayHandle(item))
+            {
+                handler.handle(item);
+            }
         } finally
         {
             // If the item still exists, we assume that it has not been handled. So it should be
diff --git a/common/source/java/ch/systemsx/cisd/common/utilities/IStoreHandler.java b/common/source/java/ch/systemsx/cisd/common/utilities/IStoreHandler.java
index f22cfa374a0ab4223a6b921e3e97bedb4dd06dfc..7a9dacf81c8c09b60e0309bd844fae3a8c1ea91a 100644
--- a/common/source/java/ch/systemsx/cisd/common/utilities/IStoreHandler.java
+++ b/common/source/java/ch/systemsx/cisd/common/utilities/IStoreHandler.java
@@ -25,4 +25,6 @@ package ch.systemsx.cisd.common.utilities;
 public interface IStoreHandler
 {
     void handle(StoreItem item);
+
+    boolean mayHandle(StoreItem item);
 }
diff --git a/common/source/java/ch/systemsx/cisd/common/utilities/PathHandlerAdapter.java b/common/source/java/ch/systemsx/cisd/common/utilities/PathHandlerAdapter.java
index 0a1c143f886ecdd5c3ca6ac6017355997a1a4275..1d3e9b23be17f46331dc24ce98d6dd8b787c1308 100644
--- a/common/source/java/ch/systemsx/cisd/common/utilities/PathHandlerAdapter.java
+++ b/common/source/java/ch/systemsx/cisd/common/utilities/PathHandlerAdapter.java
@@ -40,17 +40,23 @@ public class PathHandlerAdapter implements IStoreHandler
         return new PathHandlerAdapter(handler, directory);
     }
 
+    private final File asFile(final StoreItem item)
+    {
+        return StoreItem.asFile(directory, item);
+    }
+
     //
     // IStoreHandler
     //
 
-    public void handle(final StoreItem item)
+    public final boolean mayHandle(final StoreItem item)
+    {
+        return pathHandler.mayHandle(asFile(item));
+    }
+
+    public final void handle(final StoreItem item)
     {
-        final File path = StoreItem.asFile(directory, item);
-        if (pathHandler.mayHandle(path))
-        {
-            pathHandler.handle(path);
-        }
+        pathHandler.handle(asFile(item));
     }
 
 }