From 957718c0b6a8721dd305eedb7d02bbff1fdb44f1 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Tue, 31 Jan 2012 20:50:14 +0400 Subject: [PATCH] Cache core jar's vfs children/parent. It'd better be done in normal jar vfs though --- .../openapi/vfs/impl/jar/CoreJarVirtualFile.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java b/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java index c524c6e09926..c2969d9edc09 100644 --- a/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java +++ b/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java @@ -32,11 +32,14 @@ public class CoreJarVirtualFile extends VirtualFile { private final CoreJarFileSystem myFileSystem; private final CoreJarHandler myHandler; private final String myPathInJar; + private final VirtualFile myParent; + private VirtualFile[] myChildren; public CoreJarVirtualFile(CoreJarFileSystem fileSystem, CoreJarHandler handler, String pathInJar) { myFileSystem = fileSystem; myHandler = handler; myPathInJar = pathInJar; + myParent = calcParent(); } @NotNull @@ -77,6 +80,10 @@ public class CoreJarVirtualFile extends VirtualFile { @Override public VirtualFile getParent() { + return myParent; + } + + private VirtualFile calcParent() { if (myPathInJar.length() == 0) { return null; } @@ -89,6 +96,15 @@ public class CoreJarVirtualFile extends VirtualFile { @Override public VirtualFile[] getChildren() { + VirtualFile[] answer = myChildren; + if (answer == null) { + answer = calcChildren(); + myChildren = answer; + } + return answer; + } + + private VirtualFile[] calcChildren() { List result = new ArrayList(); final String[] children = myHandler.list(this); for (String child : children) { -- 2.32.0