From a6809b0cd94fde91e944e1b26dff3844aa0106a1 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Fri, 31 Aug 2012 12:56:57 +0400 Subject: [PATCH] Do not acquire read action for VFS visitor; ignore IVFAE's instead --- .../vfs/InvalidVirtualFileAccessException.java | 2 +- .../src/com/intellij/openapi/vfs/VfsUtilCore.java | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) rename platform/{platform-api => core-api}/src/com/intellij/openapi/vfs/InvalidVirtualFileAccessException.java (95%) diff --git a/platform/platform-api/src/com/intellij/openapi/vfs/InvalidVirtualFileAccessException.java b/platform/core-api/src/com/intellij/openapi/vfs/InvalidVirtualFileAccessException.java similarity index 95% rename from platform/platform-api/src/com/intellij/openapi/vfs/InvalidVirtualFileAccessException.java rename to platform/core-api/src/com/intellij/openapi/vfs/InvalidVirtualFileAccessException.java index f685926ea313..74813fb49a59 100644 --- a/platform/platform-api/src/com/intellij/openapi/vfs/InvalidVirtualFileAccessException.java +++ b/platform/core-api/src/com/intellij/openapi/vfs/InvalidVirtualFileAccessException.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java b/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java index f5caa6aa2989..18690bf710f6 100644 --- a/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java +++ b/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java @@ -15,8 +15,7 @@ */ package com.intellij.openapi.vfs; -import com.intellij.openapi.application.AccessToken; -import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.roots.ContentIterator; import com.intellij.openapi.util.io.BufferExposingByteArrayInputStream; import com.intellij.openapi.util.io.FileUtil; @@ -35,6 +34,8 @@ import static com.intellij.openapi.vfs.VirtualFileVisitor.Result; import static com.intellij.openapi.vfs.VirtualFileVisitor.VisitorException; public class VfsUtilCore { + private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.vfs.VfsUtilCore"); + /** * Checks whether the ancestor {@link com.intellij.openapi.vfs.VirtualFile} is parent of file * {@link com.intellij.openapi.vfs.VirtualFile}. @@ -203,7 +204,6 @@ public class VfsUtilCore { Iterable childrenIterable = null; VirtualFile[] children = null; - final AccessToken token = ApplicationManager.getApplication().acquireReadActionLock(); try { if (!file.isValid() || !visitor.allowVisitChildren(file)) return VirtualFileVisitor.CONTINUE; if (!visitor.depthLimitReached()) { @@ -213,8 +213,9 @@ public class VfsUtilCore { } } } - finally { - token.finish(); + catch (InvalidVirtualFileAccessException e) { + LOG.warn("Ignoring: " + e.getMessage()); + return VirtualFileVisitor.CONTINUE; } if (childrenIterable != null) {