From 8e4a29ca189f2d7424696c5fe656e8457d8dc341 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Tue, 20 May 2025 14:11:44 +0200 Subject: [PATCH] fix after "fix visibility" global refactoring (VirtualFilePointerManager) GitOrigin-RevId: bce0d808ccafe328ffaa1caf2db8fbe6333c92d9 --- .../com/intellij/openapi/vfs/impl/FilePartNode.java | 6 +++--- .../intellij/openapi/vfs/impl/FilePartNodeRoot.java | 2 +- .../openapi/vfs/impl/VirtualFilePointerImpl.java | 12 +++++++++++- .../vfs/impl/VirtualFilePointerManagerImpl.java | 4 ++-- .../openapi/vfs/impl/VirtualFilePointerTest.java | 8 ++++---- 5 files changed, 21 insertions(+), 11 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/FilePartNode.java b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/FilePartNode.java index 0dba28a68a89..1a61fb2179a8 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/FilePartNode.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/FilePartNode.java @@ -49,8 +49,8 @@ public class FilePartNode { volatile @NotNull Object fileOrUrl; /** The file system of this particular component. E.g. for path "/x.jar!/foo.txt" the node "x.jar" fs is LocalFileSystem, the node "foo.txt" fs is JarFileSystem */ - @VisibleForTesting - public final NewVirtualFileSystem fs; + @NotNull + final NewVirtualFileSystem fs; FilePartNode(int nameId, @NotNull Object fileOrUrl, @@ -494,7 +494,7 @@ public class FilePartNode { } void addAllPointersTo(@NotNull Collection outList) { - processPointers(p->{ if (p.getNode() != null) outList.add(p); }); + processPointers(p->{ if (p.myNode != null) outList.add(p); }); } void processPointers(@NotNull Consumer processor) { diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/FilePartNodeRoot.java b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/FilePartNodeRoot.java index 0989781ac85e..1d070b61965a 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/FilePartNodeRoot.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/FilePartNodeRoot.java @@ -326,7 +326,7 @@ public final class FilePartNodeRoot extends FilePartNode { } void removePointer(@NotNull VirtualFilePointerImpl pointer) { - FilePartNode node = pointer.getNode(); + FilePartNode node = pointer.myNode; int remainingLeaves = node.removeLeaf(pointer); if (remainingLeaves == 0) { VirtualFile file = fileOrNull(node.fileOrUrl); diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/VirtualFilePointerImpl.java b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/VirtualFilePointerImpl.java index 9fab6446b09e..2680de63183b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/VirtualFilePointerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/VirtualFilePointerImpl.java @@ -7,6 +7,7 @@ import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.util.TraceableDisposable; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.newvfs.ArchiveFileSystem; +import com.intellij.openapi.vfs.newvfs.NewVirtualFileSystem; import com.intellij.openapi.vfs.pointers.VirtualFilePointer; import com.intellij.openapi.vfs.pointers.VirtualFilePointerListener; import com.intellij.openapi.vfs.pointers.VirtualFilePointerManager; @@ -30,7 +31,9 @@ public class VirtualFilePointerImpl extends TraceableDisposable implements Virtu } @ApiStatus.Internal - public FilePartNode getNode() { + @TestOnly + public FilePartNode getNodeForTesting() { + assert ApplicationManager.getApplication().isUnitTestMode(); return myNode; } @@ -50,6 +53,13 @@ public class VirtualFilePointerImpl extends TraceableDisposable implements Virtu return index >= 0 ? url.substring(index + 1) : url; } + @NotNull + @TestOnly + public NewVirtualFileSystem getFileSystemForTesting() { + assert ApplicationManager.getApplication().isUnitTestMode(); + return myNode.fs; + } + @Override public VirtualFile getFile() { FilePartNode node = checkDisposed(myNode); diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/VirtualFilePointerManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/VirtualFilePointerManagerImpl.java index e8c4868d95ec..f46c396362c3 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/VirtualFilePointerManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/VirtualFilePointerManagerImpl.java @@ -758,7 +758,7 @@ public final class VirtualFilePointerManagerImpl extends VirtualFilePointerManag if (!shouldKill) { return false; } - getRoot(pointer.getNode().fs).removePointer(pointer); + getRoot(pointer.myNode.fs).removePointer(pointer); pointer.myNode = null; assertConsistency(); myPointerSetModCount++; @@ -811,7 +811,7 @@ public final class VirtualFilePointerManagerImpl extends VirtualFilePointerManag Reference2IntMap.Entry entry = iterator.next(); VirtualFilePointerImpl pointer = entry.getKey(); int disposeCount = entry.getIntValue(); - boolean isDisposed = !(pointer instanceof IdentityVirtualFilePointer) && pointer.getNode() == null; + boolean isDisposed = !(pointer instanceof IdentityVirtualFilePointer) && pointer.myNode == null; if (isDisposed) { pointer.throwDisposalError("Already disposed:\n" + pointer.getStackTrace()); } diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/vfs/impl/VirtualFilePointerTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/vfs/impl/VirtualFilePointerTest.java index 18dbe9edb5c0..f9298f2444f2 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/vfs/impl/VirtualFilePointerTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/vfs/impl/VirtualFilePointerTest.java @@ -249,7 +249,7 @@ public class VirtualFilePointerTest extends BareTestFixtureTestCase { connection.subscribe(VirtualFileManager.VFS_CHANGES, new BulkFileListener() { @Override public void after(@NotNull List events) { - Object url = ((VirtualFilePointerImpl)pointer).getNode().getFileOrUrl(); + Object url = ((VirtualFilePointerImpl)pointer).getNodeForTesting().getFileOrUrl(); assertTrue(url.toString(), url instanceof String); assertFalse(pointer.isValid()); } @@ -802,7 +802,7 @@ public class VirtualFilePointerTest extends BareTestFixtureTestCase { try { ready.countDown(); while (run.get()) { - bb.getNode().update(((VirtualFilePointerImpl)fileToCreatePointer).getNode(), fakeRoot, "test", null); + bb.getNodeForTesting().update(((VirtualFilePointerImpl)fileToCreatePointer).getNodeForTesting(), fakeRoot, "test", null); } } catch (Throwable e) { @@ -1360,7 +1360,7 @@ public class VirtualFilePointerTest extends BareTestFixtureTestCase { assertEquals(expectedPointerRelativeUrl, StringUtil.trimStart(pointer.getUrl(), "jar://" + tempRoot + "/" + abc)); String expectedPointerFileNameToCheck = expectedPointerFileName == null ? abc : expectedPointerFileName; assertEquals(expectedPointerFileNameToCheck, pointer.getFileName()); - assertEquals(JarFileSystem.getInstance(), ((VirtualFilePointerImpl)pointer).getNode().fs); + assertEquals(JarFileSystem.getInstance(), ((VirtualFilePointerImpl)pointer).getFileSystemForTesting()); assertFalse(pointer.isValid()); File jar = IoTestUtil.createTestJar(new File(tempRoot+"/"+abc), List.of(Pair.create(expectedPathInsideJar, new byte[]{' ', ' '}))); @@ -1376,7 +1376,7 @@ public class VirtualFilePointerTest extends BareTestFixtureTestCase { VirtualFilePointer pointer = VirtualFilePointerManager.getInstance().create(sourceUrl, disposable, null); assertEquals(expectedPointerUrl, pointer.getUrl()); assertEquals(expectedPointerFileName, pointer.getFileName()); - assertEquals(JarFileSystem.getInstance(), ((VirtualFilePointerImpl)pointer).getNode().fs); + assertEquals(JarFileSystem.getInstance(), ((VirtualFilePointerImpl)pointer).getFileSystemForTesting()); assertFalse(pointer.isValid()); } } \ No newline at end of file