diff --git a/masterfs/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/BaseFileObj.java b/masterfs/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/BaseFileObj.java --- a/masterfs/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/BaseFileObj.java +++ b/masterfs/src/org/netbeans/modules/masterfs/filebasedfs/fileobjects/BaseFileObj.java @@ -358,6 +358,8 @@ } } else if (attrName.equals("ExistsParentNoPublicAPI")) { return getExistingParent() != null; + } else if (attrName.equals("getChildrenFast")) { + return getChildren(); } else if (attrName.startsWith("ProvidedExtensions")) { //NOI18N // #158600 - delegate to ProvidedExtensions if attrName starts with ProvidedExtensions prefix ProvidedExtensions extension = getProvidedExtensions(); diff --git a/openide.filesystems/src/org/openide/filesystems/AbstractFileObject.java b/openide.filesystems/src/org/openide/filesystems/AbstractFileObject.java --- a/openide.filesystems/src/org/openide/filesystems/AbstractFileObject.java +++ b/openide.filesystems/src/org/openide/filesystems/AbstractFileObject.java @@ -321,6 +321,9 @@ /** performance hack */ final Object getAttribute(String attrName, String path) { + if (attrName.equals("getChildrenFast")) { + return getChildren(); + } return getAbstractFileSystem().attr.readAttribute(path, attrName); } diff --git a/openide.loaders/src/org/openide/loaders/FolderChildren.java b/openide.loaders/src/org/openide/loaders/FolderChildren.java --- a/openide.loaders/src/org/openide/loaders/FolderChildren.java +++ b/openide.loaders/src/org/openide/loaders/FolderChildren.java @@ -130,7 +130,7 @@ /** Deep refresh or not. * @param operation 0 == shallow, 1 == deep, -1 == clear, 10 = shallow immediatelly */ - final void refreshChildren(int operation) { + final void refreshChildren(final int operation) { class R implements Runnable { int op; public void run() { @@ -147,7 +147,8 @@ return; } - final FileObject[] arr = folder.getPrimaryFile().getChildren(); + final FileObject[] arr = operation == 10 ? (FileObject[]) folder.getPrimaryFile().getAttribute("getChildrenFast") // NOI18N + : folder.getPrimaryFile().getChildren(); FolderOrder order = FolderOrder.findFor(folder.getPrimaryFile()); Arrays.sort(arr, order); List positioned = new ArrayList(arr.length);