diff --git a/platform/core-api/src/com/intellij/openapi/vfs/VFileProperty.java b/platform/core-api/src/com/intellij/openapi/vfs/VFileProperty.java new file mode 100644 index 000000000000..984208ac7db1 --- /dev/null +++ b/platform/core-api/src/com/intellij/openapi/vfs/VFileProperty.java @@ -0,0 +1,48 @@ +/* + * Copyright 2000-2013 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.openapi.vfs; + +import org.jetbrains.annotations.NotNull; + +public interface VFileProperty { + @NotNull + String getName(); + + + class Impl implements VFileProperty { + private final String myName; + + public Impl(@NotNull String name) { + myName = name; + } + + @NotNull + @Override + public String getName() { + return myName; + } + + @Override + public String toString() { + return myName; + } + } + + + VFileProperty HIDDEN = new Impl("hidden"); + VFileProperty SPECIAL = new Impl("special"); + VFileProperty SYMLINK = new Impl("symlink"); +} 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 9eafa20e7bf5..26d29d4501eb 100644 --- a/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java +++ b/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java @@ -280,7 +280,7 @@ public class VfsUtilCore { * Returns {@code true} if given virtual file represents broken symbolic link (which points to non-existent file). */ public static boolean isBrokenLink(@NotNull VirtualFile file) { - return file.isSymLink() && file.getCanonicalPath() == null; + return file.is(VFileProperty.SYMLINK) && file.getCanonicalPath() == null; } /** diff --git a/platform/core-api/src/com/intellij/openapi/vfs/VirtualFile.java b/platform/core-api/src/com/intellij/openapi/vfs/VirtualFile.java index 7178cdc0cc01..ddb1e62395f7 100644 --- a/platform/core-api/src/com/intellij/openapi/vfs/VirtualFile.java +++ b/platform/core-api/src/com/intellij/openapi/vfs/VirtualFile.java @@ -82,12 +82,7 @@ public abstract class VirtualFile extends UserDataHolderBase implements Modifica * @see VirtualFileListener#propertyChanged * @see VirtualFilePropertyEvent#getPropertyName */ - @NonNls public static final String PROP_HIDDEN = "hidden"; - - /** - * Used as a property name in the {@link #is(String)}. - */ - @NonNls public static final String PROP_SPECIAL = "special"; + @NonNls public static final String PROP_HIDDEN = VFileProperty.HIDDEN.getName(); private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.vfs.VirtualFile"); private static final Key BOM_KEY = Key.create("BOM"); @@ -222,30 +217,25 @@ public abstract class VirtualFile extends UserDataHolderBase implements Modifica */ public abstract boolean isDirectory(); - /** - * Checks whether this file is a symbolic link. - * - * @return true if this file is a symbolic link, false otherwise - * @since 11.0 - */ + /** @deprecated use {@link #is(VFileProperty)} (to remove in IDEA 14) */ + @SuppressWarnings("UnusedDeclaration") public boolean isSymLink() { - return false; + return is(VFileProperty.SYMLINK); } - /** @deprecated use {@link #is(String)} (to remove in IDEA 14) */ + /** @deprecated use {@link #is(VFileProperty)} (to remove in IDEA 14) */ @SuppressWarnings("UnusedDeclaration") public boolean isSpecialFile() { - return is(PROP_SPECIAL); + return is(VFileProperty.SPECIAL); } /** * Checks whether this file has a specific property. - * Examples of such properties are {@link #PROP_HIDDEN} or {@link #PROP_SPECIAL}. * * @return true if the file has a specific property, false otherwise * @since 13.0 */ - public boolean is(String property) { + public boolean is(@NotNull VFileProperty property) { return false; } @@ -362,7 +352,7 @@ public abstract class VirtualFile extends UserDataHolderBase implements Modifica child = this; } else if (name.equals("..")) { - if (isSymLink()) { + if (is(VFileProperty.SYMLINK)) { final VirtualFile canonicalFile = getCanonicalFile(); child = canonicalFile != null ? canonicalFile.getParent() : null; } diff --git a/platform/core-api/src/com/intellij/openapi/vfs/VirtualFileVisitor.java b/platform/core-api/src/com/intellij/openapi/vfs/VirtualFileVisitor.java index 5a8fae926c73..aa2af4fcaf15 100644 --- a/platform/core-api/src/com/intellij/openapi/vfs/VirtualFileVisitor.java +++ b/platform/core-api/src/com/intellij/openapi/vfs/VirtualFileVisitor.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -168,7 +168,7 @@ public abstract class VirtualFileVisitor { } final boolean allowVisitChildren(@NotNull VirtualFile file) { - return !file.isSymLink() || myFollowSymLinks && !VfsUtilCore.isInvalidLink(file); + return !file.is(VFileProperty.SYMLINK) || myFollowSymLinks && !VfsUtilCore.isInvalidLink(file); } final boolean depthLimitReached() { diff --git a/platform/core-api/src/com/intellij/util/IconUtil.java b/platform/core-api/src/com/intellij/util/IconUtil.java index ff9c5a8a6410..0327435dedff 100644 --- a/platform/core-api/src/com/intellij/util/IconUtil.java +++ b/platform/core-api/src/com/intellij/util/IconUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -25,6 +25,7 @@ import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.Iconable; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.SystemInfo; +import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.WritingAccessProvider; import com.intellij.ui.IconDeferrer; @@ -142,7 +143,7 @@ public class IconUtil { (!file.isWritable() || !WritingAccessProvider.isPotentiallyWritable(file, project))) { icon = new LayeredIcon(icon, PlatformIcons.LOCKED_ICON); } - if (file.isSymLink()) { + if (file.is(VFileProperty.SYMLINK)) { icon = new LayeredIcon(icon, PlatformIcons.SYMLINK_ICON); } @@ -284,7 +285,7 @@ public class IconUtil { } /** - * Result icons look like original but have equal (maximum) size + * Result icons look like original but have equal (maximum) size */ @NotNull public static Icon[] getEqualSizedIcons(@NotNull Icon... icons) { diff --git a/platform/core-impl/src/com/intellij/psi/SingleRootFileViewProvider.java b/platform/core-impl/src/com/intellij/psi/SingleRootFileViewProvider.java index 37ba5ed09ba8..0de8e747cc6e 100644 --- a/platform/core-impl/src/com/intellij/psi/SingleRootFileViewProvider.java +++ b/platform/core-impl/src/com/intellij/psi/SingleRootFileViewProvider.java @@ -34,6 +34,7 @@ import com.intellij.openapi.util.Key; import com.intellij.openapi.util.UserDataHolderBase; import com.intellij.openapi.vfs.NonPhysicalFileSystem; import com.intellij.openapi.vfs.PersistentFSConstants; +import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.impl.PsiManagerEx; import com.intellij.psi.impl.PsiManagerImpl; @@ -268,7 +269,7 @@ public class SingleRootFileViewProvider extends UserDataHolderBase implements Fi @Nullable protected PsiFile createFile(@NotNull Project project, @NotNull VirtualFile file, @NotNull FileType fileType) { - if (fileType.isBinary() || file.is(VirtualFile.PROP_SPECIAL)) { + if (fileType.isBinary() || file.is(VFileProperty.SPECIAL)) { return new PsiBinaryFileImpl((PsiManagerImpl)getManager(), this); } if (!isTooLargeForIntelligence(file)) { @@ -539,8 +540,8 @@ public class SingleRootFileViewProvider extends UserDataHolderBase implements Fi private final PsiFileImpl myFile; private volatile String myContent = null; private final long myModificationStamp; - - @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") + + @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") private final List myFileElementHardRefs = new SmartList(); private PsiFileContent(final PsiFileImpl file, final long modificationStamp) { diff --git a/platform/lang-api/src/com/intellij/ide/util/EditSourceUtil.java b/platform/lang-api/src/com/intellij/ide/util/EditSourceUtil.java index 2db2236bf45c..70ce9f077b9e 100644 --- a/platform/lang-api/src/com/intellij/ide/util/EditSourceUtil.java +++ b/platform/lang-api/src/com/intellij/ide/util/EditSourceUtil.java @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.intellij.ide.util; import com.intellij.navigation.NavigationItem; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileEditor.OpenFileDescriptor; import com.intellij.openapi.util.UserDataHolder; +import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.pom.Navigatable; @@ -54,13 +54,13 @@ public class EditSourceUtil { return desc; } - public static boolean canNavigate (PsiElement element) { + public static boolean canNavigate(PsiElement element) { if (element == null || !element.isValid()) { return false; } VirtualFile file = PsiUtilCore.getVirtualFile(element.getNavigationElement()); - return file != null && file.isValid() && !file.is(VirtualFile.PROP_SPECIAL) && !VfsUtilCore.isBrokenLink(file); + return file != null && file.isValid() && !file.is(VFileProperty.SPECIAL) && !VfsUtilCore.isBrokenLink(file); } public static void navigate(NavigationItem item, boolean requestFocus, boolean useCurrentWindow) { diff --git a/platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java b/platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java index 609bac1f7e23..2f5e43c0c595 100644 --- a/platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java +++ b/platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2011 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -34,6 +34,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.AsyncResult; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.vfs.LocalFileSystem; +import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileSystem; import com.intellij.psi.*; @@ -304,6 +305,6 @@ public class PsiUtilBase extends PsiUtilCore { public static boolean isSymLink(@NotNull final PsiFileSystemItem element) { final VirtualFile virtualFile = element.getVirtualFile(); - return virtualFile != null && virtualFile.isSymLink(); + return virtualFile != null && virtualFile.is(VFileProperty.SYMLINK); } } diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiDirectoryNode.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiDirectoryNode.java index 2d70a8826b17..c8d3ba2b9267 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiDirectoryNode.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiDirectoryNode.java @@ -37,6 +37,7 @@ import com.intellij.openapi.roots.ui.configuration.ProjectSettingsService; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.LocalFileSystem; +import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.pom.NavigatableWithText; @@ -59,7 +60,7 @@ public class PsiDirectoryNode extends BasePsiNode implements Navig public PsiDirectoryNode(Project project, PsiDirectory value, ViewSettings viewSettings) { super(project, value, viewSettings); } - + protected boolean shouldShowModuleName() { return !PlatformUtils.isAppCode(); } @@ -290,7 +291,7 @@ public class PsiDirectoryNode extends BasePsiNode implements Navig icon = LayeredIcon.create(icon, PlatformIcons.LOCKED_ICON); } - if (file.isSymLink()) { + if (file.is(VFileProperty.SYMLINK)) { icon = LayeredIcon.create(icon, PlatformIcons.SYMLINK_ICON); } diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiFileNode.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiFileNode.java index 4566233690d3..0d92e9a36015 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiFileNode.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiFileNode.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -31,6 +31,7 @@ import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Iconable; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.JarFileSystem; +import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.pom.NavigatableWithText; import com.intellij.psi.PsiDirectory; @@ -74,7 +75,7 @@ public class PsiFileNode extends BasePsiNode implements NavigatableWith data.setIcon(value.getIcon(Iconable.ICON_FLAG_READ_STATUS)); VirtualFile file = getVirtualFile(); - if (file != null && file.isSymLink()) { + if (file != null && file.is(VFileProperty.SYMLINK)) { String target = file.getCanonicalPath(); if (target == null) { data.setAttributesKey(CodeInsightColors.WRONG_REFERENCES_ATTRIBUTES); diff --git a/platform/lang-impl/src/com/intellij/ide/util/DeleteHandler.java b/platform/lang-impl/src/com/intellij/ide/util/DeleteHandler.java index 6ca9ae49a211..b8bc4bc40977 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/DeleteHandler.java +++ b/platform/lang-impl/src/com/intellij/ide/util/DeleteHandler.java @@ -35,6 +35,7 @@ import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.ex.MessagesEx; import com.intellij.openapi.util.Ref; +import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.WritingAccessProvider; import com.intellij.psi.PsiDirectory; @@ -193,7 +194,7 @@ public class DeleteHandler { if (!elementToDelete.isValid()) continue; //was already deleted if (elementToDelete instanceof PsiDirectory) { VirtualFile virtualFile = ((PsiDirectory)elementToDelete).getVirtualFile(); - if (virtualFile.isInLocalFileSystem() && !virtualFile.isSymLink()) { + if (virtualFile.isInLocalFileSystem() && !virtualFile.is(VFileProperty.SYMLINK)) { ArrayList readOnlyFiles = new ArrayList(); CommonRefactoringUtil.collectReadOnlyFiles(virtualFile, readOnlyFiles); diff --git a/platform/lang-impl/src/com/intellij/internal/LoadAllContentsAction.java b/platform/lang-impl/src/com/intellij/internal/LoadAllContentsAction.java index fe94674ca6a7..36291e228c92 100644 --- a/platform/lang-impl/src/com/intellij/internal/LoadAllContentsAction.java +++ b/platform/lang-impl/src/com/intellij/internal/LoadAllContentsAction.java @@ -32,6 +32,7 @@ import com.intellij.openapi.roots.ContentIterator; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VirtualFile; import java.io.File; @@ -66,7 +67,7 @@ public class LoadAllContentsAction extends AnAction implements DumbAware { ProjectRootManager.getInstance(project).getFileIndex().iterateContent(new ContentIterator() { @Override public boolean processFile(VirtualFile fileOrDir) { - if (fileOrDir.isDirectory() || fileOrDir.is(VirtualFile.PROP_SPECIAL)) { + if (fileOrDir.isDirectory() || fileOrDir.is(VFileProperty.SPECIAL)) { return true; } try { diff --git a/platform/lang-impl/src/com/intellij/internal/LoadAllVfsStoredContentsAction.java b/platform/lang-impl/src/com/intellij/internal/LoadAllVfsStoredContentsAction.java index bbfee43695e5..aaeb486584cc 100644 --- a/platform/lang-impl/src/com/intellij/internal/LoadAllVfsStoredContentsAction.java +++ b/platform/lang-impl/src/com/intellij/internal/LoadAllVfsStoredContentsAction.java @@ -30,6 +30,7 @@ import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.newvfs.ManagingFS; import com.intellij.openapi.vfs.newvfs.NewVirtualFile; @@ -91,18 +92,19 @@ public class LoadAllVfsStoredContentsAction extends AnAction implements DumbAwar } public boolean processFile(NewVirtualFile file) { - if (file.isDirectory() || file.is(VirtualFile.PROP_SPECIAL)) return true; + if (file.isDirectory() || file.is(VFileProperty.SPECIAL)) { + return true; + } try { DataInputStream stream = FSRecords.readContent(file.getId()); if (stream == null) return true; byte[] bytes = FileUtil.loadBytes(stream); totalSize.addAndGet(bytes.length); count.incrementAndGet(); - ProgressManager.getInstance().getProgressIndicator().setText(file.getPresentableUrl()); } - catch (IOException e1) { - LOG.error(e1); + catch (IOException e) { + LOG.error(e); } return true; } diff --git a/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooserDescriptor.java b/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooserDescriptor.java index ae6f6bbfcfbb..d3076401e291 100644 --- a/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooserDescriptor.java +++ b/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooserDescriptor.java @@ -20,6 +20,7 @@ import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.fileTypes.FileTypes; import com.intellij.openapi.util.Iconable; import com.intellij.openapi.vfs.JarFileSystem; +import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.LayeredIcon; import com.intellij.ui.UIBundle; @@ -166,7 +167,7 @@ public class FileChooserDescriptor implements Cloneable { } protected static Icon dressIcon(final VirtualFile file, final Icon baseIcon) { - return file.isValid() && file.isSymLink() ? new LayeredIcon(baseIcon, PlatformIcons.SYMLINK_ICON) : baseIcon; + return file.isValid() && file.is(VFileProperty.SYMLINK) ? new LayeredIcon(baseIcon, PlatformIcons.SYMLINK_ICON) : baseIcon; } public String getName(final VirtualFile file) { diff --git a/platform/platform-api/src/com/intellij/openapi/fileChooser/FileElement.java b/platform/platform-api/src/com/intellij/openapi/fileChooser/FileElement.java index 63eca5bb8b68..9a0cd32adcea 100644 --- a/platform/platform-api/src/com/intellij/openapi/fileChooser/FileElement.java +++ b/platform/platform-api/src/com/intellij/openapi/fileChooser/FileElement.java @@ -19,6 +19,7 @@ import com.intellij.openapi.fileTypes.FileTypes; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.vfs.JarFileSystem; +import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -101,7 +102,7 @@ public class FileElement { return file != null && file.isValid() && file.isInLocalFileSystem() && - (file.is(VirtualFile.PROP_HIDDEN) || SystemInfo.isUnix && file.getName().startsWith(".")); + (file.is(VFileProperty.HIDDEN) || SystemInfo.isUnix && file.getName().startsWith(".")); } public static boolean isArchive(@Nullable VirtualFile file) { diff --git a/platform/platform-api/src/com/intellij/openapi/vfs/VfsUtil.java b/platform/platform-api/src/com/intellij/openapi/vfs/VfsUtil.java index 96f8bc357fe0..148a7e9044ef 100644 --- a/platform/platform-api/src/com/intellij/openapi/vfs/VfsUtil.java +++ b/platform/platform-api/src/com/intellij/openapi/vfs/VfsUtil.java @@ -75,7 +75,7 @@ public class VfsUtil extends VfsUtilCore { @Nullable VirtualFileFilter filter) throws IOException { @SuppressWarnings("UnsafeVfsRecursion") VirtualFile[] children = fromDir.getChildren(); for (VirtualFile child : children) { - if (!child.isSymLink() && !child.is(VirtualFile.PROP_SPECIAL) && (filter == null || filter.accept(child))) { + if (!child.is(VFileProperty.SYMLINK) && !child.is(VFileProperty.SPECIAL) && (filter == null || filter.accept(child))) { if (!child.isDirectory()) { copyFile(requestor, child, toDir); } diff --git a/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.java index f08afe9316ff..ecc0904c32f8 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.java @@ -37,6 +37,7 @@ import com.intellij.openapi.util.io.ByteSequence; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.CharsetToolkit; +import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileSystem; import com.intellij.openapi.vfs.newvfs.FileSystemInterface; @@ -340,7 +341,7 @@ public class FileTypeManagerImpl extends FileTypeManagerEx implements NamedJDOME @NotNull @Override public FileType detectFileTypeFromContent(@NotNull VirtualFile file) { - if (file.isDirectory() || !file.isValid() || file.is(VirtualFile.PROP_SPECIAL)) { + if (file.isDirectory() || !file.isValid() || file.is(VFileProperty.SPECIAL)) { return UnknownFileType.INSTANCE; } FileType fileType = file.getUserData(DETECTED_FROM_CONTENT_FILE_TYPE_KEY); diff --git a/platform/platform-impl/src/com/intellij/openapi/project/FileContentQueue.java b/platform/platform-impl/src/com/intellij/openapi/project/FileContentQueue.java index b0590c0337cc..5be5a3709117 100644 --- a/platform/platform-impl/src/com/intellij/openapi/project/FileContentQueue.java +++ b/platform/platform-impl/src/com/intellij/openapi/project/FileContentQueue.java @@ -21,6 +21,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.vfs.InvalidVirtualFileAccessException; +import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; @@ -86,7 +87,7 @@ public class FileContentQueue { private void addLast(VirtualFile file, @NotNull final ProgressIndicator indicator) throws InterruptedException { FileContent content = new FileContent(file); - if (file.isValid() && !file.isDirectory() && !file.is(VirtualFile.PROP_SPECIAL) && !VfsUtilCore.isBrokenLink(file)) { + if (file.isValid() && !file.isDirectory() && !file.is(VFileProperty.SPECIAL) && !VfsUtilCore.isBrokenLink(file)) { if (!doLoadContent(content, indicator)) { content.setEmptyContent(); } diff --git a/platform/platform-impl/src/com/intellij/openapi/vcs/impl/FileStatusManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/vcs/impl/FileStatusManagerImpl.java index fb64f715ad14..70100dc72a1a 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vcs/impl/FileStatusManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/vcs/impl/FileStatusManagerImpl.java @@ -36,6 +36,7 @@ import com.intellij.openapi.util.NotNullLazyValue; import com.intellij.openapi.vcs.FileStatus; import com.intellij.openapi.vcs.FileStatusListener; import com.intellij.openapi.vcs.FileStatusManager; +import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.testFramework.LightVirtualFile; import com.intellij.util.ThreeState; @@ -139,7 +140,7 @@ public class FileStatusManagerImpl extends FileStatusManager implements ProjectC } public static FileStatus getDefaultStatus(@NotNull final VirtualFile file) { - return file.isValid() && file.is(VirtualFile.PROP_SPECIAL) ? FileStatus.IGNORED : FileStatus.NOT_CHANGED; + return file.isValid() && file.is(VFileProperty.SPECIAL) ? FileStatus.IGNORED : FileStatus.NOT_CHANGED; } public void projectClosed() { diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/local/LocalFileSystemBase.java b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/local/LocalFileSystemBase.java index 9da01081100b..59023d3d4739 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/local/LocalFileSystemBase.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/local/LocalFileSystemBase.java @@ -474,7 +474,7 @@ public abstract class LocalFileSystemBase extends LocalFileSystem { } private static boolean shallUseSafeStream(final Object requestor, @NotNull VirtualFile file) { - return requestor instanceof SafeWriteRequestor && GeneralSettings.getInstance().isUseSafeWrite() && !file.isSymLink(); + return requestor instanceof SafeWriteRequestor && GeneralSettings.getInstance().isUseSafeWrite() && !file.is(VFileProperty.SYMLINK); } @Override diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/VfsImplUtil.java b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/VfsImplUtil.java index 20dd49873918..bc5afa0b08a6 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/VfsImplUtil.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/VfsImplUtil.java @@ -18,6 +18,7 @@ package com.intellij.openapi.vfs.newvfs; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.vfs.VFileProperty; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -42,7 +43,7 @@ public class VfsImplUtil { for (String pathElement : data.second) { if (pathElement.isEmpty() || ".".equals(pathElement)) continue; if ("..".equals(pathElement)) { - if (file.isSymLink()) { + if (file.is(VFileProperty.SYMLINK)) { final NewVirtualFile canonicalFile = file.getCanonicalFile(); file = canonicalFile != null ? canonicalFile.getParent() : null; } @@ -71,7 +72,7 @@ public class VfsImplUtil { for (String pathElement : data.second) { if (pathElement.isEmpty() || ".".equals(pathElement)) continue; if ("..".equals(pathElement)) { - if (file.isSymLink()) { + if (file.is(VFileProperty.SYMLINK)) { final String canonicalPath = file.getCanonicalPath(); final NewVirtualFile canonicalFile = canonicalPath != null ? findFileByPathIfCached(vfs, canonicalPath) : null; file = canonicalFile != null ? canonicalFile.getParent() : null; @@ -101,7 +102,7 @@ public class VfsImplUtil { for (String pathElement : data.second) { if (pathElement.isEmpty() || ".".equals(pathElement)) continue; if ("..".equals(pathElement)) { - if (file.isSymLink()) { + if (file.is(VFileProperty.SYMLINK)) { final String canonicalPath = file.getCanonicalPath(); final NewVirtualFile canonicalFile = canonicalPath != null ? refreshAndFindFileByPath(vfs, canonicalPath) : null; file = canonicalFile != null ? canonicalFile.getParent() : null; diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/impl/VirtualFileSystemEntry.java b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/impl/VirtualFileSystemEntry.java index 5affe2af4f2a..d79fa6b76e09 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/impl/VirtualFileSystemEntry.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/impl/VirtualFileSystemEntry.java @@ -23,6 +23,7 @@ import com.intellij.openapi.util.io.FileTooBigException; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.LocalFileSystem; +import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VfsBundle; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.encoding.EncodingManager; @@ -90,7 +91,7 @@ public abstract class VirtualFileSystemEntry extends NewVirtualFile { } private void updateLinkStatus() { - boolean isSymLink = isSymLink(); + boolean isSymLink = is(VFileProperty.SYMLINK); if (isSymLink) { String target = myParent.getFileSystem().resolveSymLink(this); putUserData(SYMLINK_TARGET, target != null ? FileUtil.toSystemIndependentName(target) : target); @@ -412,14 +413,10 @@ public abstract class VirtualFileSystemEntry extends NewVirtualFile { } @Override - public boolean isSymLink() { - return getFlagInt(IS_SYMLINK_FLAG); - } - - @Override - public boolean is(String property) { - if (property == PROP_SPECIAL) return getFlagInt(IS_SPECIAL_FLAG); - if (property == PROP_HIDDEN) return getFlagInt(IS_HIDDEN_FLAG); + public boolean is(@NotNull VFileProperty property) { + if (property == VFileProperty.SPECIAL) return getFlagInt(IS_SPECIAL_FLAG); + if (property == VFileProperty.HIDDEN) return getFlagInt(IS_HIDDEN_FLAG); + if (property == VFileProperty.SYMLINK) return getFlagInt(IS_SYMLINK_FLAG); return super.is(property); } @@ -431,7 +428,7 @@ public abstract class VirtualFileSystemEntry extends NewVirtualFile { @Override public String getCanonicalPath() { if (getFlagInt(HAS_SYMLINK_FLAG)) { - if (isSymLink()) { + if (is(VFileProperty.SYMLINK)) { return getUserData(SYMLINK_TARGET); } VirtualDirectoryImpl parent = myParent; diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/persistent/RefreshWorker.java b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/persistent/RefreshWorker.java index 0c18aa4a6b12..e11a9ef18782 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/persistent/RefreshWorker.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/persistent/RefreshWorker.java @@ -21,6 +21,7 @@ import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileAttributes; import com.intellij.openapi.util.io.FileUtil; +import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.newvfs.NewVirtualFile; @@ -194,7 +195,7 @@ public class RefreshWorker { } if (SystemInfo.isWindows) { - boolean currentHidden = file.is(VirtualFile.PROP_HIDDEN); + boolean currentHidden = file.is(VFileProperty.HIDDEN); boolean upToDateHidden = attributes.isHidden(); if (currentHidden != upToDateHidden) { scheduleAttributeChange(file, VirtualFile.PROP_HIDDEN, currentHidden, upToDateHidden); @@ -221,8 +222,8 @@ public class RefreshWorker { @NotNull VirtualFile child, @NotNull FileAttributes childAttributes) { boolean currentIsDirectory = child.isDirectory(); - boolean currentIsSymlink = child.isSymLink(); - boolean currentIsSpecial = child.is(VirtualFile.PROP_SPECIAL); + boolean currentIsSymlink = child.is(VFileProperty.SYMLINK); + boolean currentIsSpecial = child.is(VFileProperty.SPECIAL); boolean upToDateIsDirectory = childAttributes.isDirectory(); boolean upToDateIsSymlink = childAttributes.isSymLink(); boolean upToDateIsSpecial = childAttributes.isSpecial(); diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/vfs/local/SymlinkHandlingTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/vfs/local/SymlinkHandlingTest.java index 55374355a1be..ff56c0df951e 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/vfs/local/SymlinkHandlingTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/vfs/local/SymlinkHandlingTest.java @@ -20,10 +20,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.openapi.vfs.LocalFileSystem; -import com.intellij.openapi.vfs.VfsUtilCore; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.openapi.vfs.VirtualFileVisitor; +import com.intellij.openapi.vfs.*; import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.HashSet; @@ -60,7 +57,7 @@ public class SymlinkHandlingTest extends SymlinkTestCase { File dotLinkFile = createSymLink(".", myTempDir + "/dot_link"); VirtualFile dotLinkVFile = refreshAndFind(dotLinkFile); assertNotNull(dotLinkVFile); - assertTrue(dotLinkVFile.isSymLink()); + assertTrue(dotLinkVFile.is(VFileProperty.SYMLINK)); assertTrue(dotLinkVFile.isDirectory()); assertPathsEqual(myTempDir.getPath(), dotLinkVFile.getCanonicalPath()); assertVisitedPaths(dotLinkVFile.getPath()); @@ -71,7 +68,7 @@ public class SymlinkHandlingTest extends SymlinkTestCase { File upLinkFile = createSymLink(upDir.getPath(), upDir.getPath() + "/up_link"); VirtualFile upLinkVFile = refreshAndFind(upLinkFile); assertNotNull(upLinkVFile); - assertTrue(upLinkVFile.isSymLink()); + assertTrue(upLinkVFile.is(VFileProperty.SYMLINK)); assertTrue(upLinkVFile.isDirectory()); assertPathsEqual(upDir.getPath(), upLinkVFile.getCanonicalPath()); assertVisitedPaths(upDir.getPath(), upLinkVFile.getPath()); @@ -80,7 +77,7 @@ public class SymlinkHandlingTest extends SymlinkTestCase { assertTrue(repeatedLinksFile.getPath(), repeatedLinksFile.isDirectory()); VirtualFile repeatedLinksVFile = refreshAndFind(repeatedLinksFile); assertNotNull(repeatedLinksFile.getPath(), repeatedLinksVFile); - assertTrue(repeatedLinksVFile.isSymLink()); + assertTrue(repeatedLinksVFile.is(VFileProperty.SYMLINK)); assertTrue(repeatedLinksVFile.isDirectory()); assertPathsEqual(upDir.getPath(), repeatedLinksVFile.getCanonicalPath()); assertEquals(upLinkVFile.getCanonicalFile(), repeatedLinksVFile.getCanonicalFile()); @@ -110,7 +107,8 @@ public class SymlinkHandlingTest extends SymlinkTestCase { File targetFile = createTestFile(myTempDir, "target.txt"); File linkFile = createSymLink(targetFile.getPath(), myTempDir + "/link"); VirtualFile linkVFile = refreshAndFind(linkFile); - assertTrue("link=" + linkFile + ", vLink=" + linkVFile, linkVFile != null && !linkVFile.isDirectory() && linkVFile.isSymLink()); + assertTrue("link=" + linkFile + ", vLink=" + linkVFile, linkVFile != null && !linkVFile.isDirectory() && + linkVFile.is(VFileProperty.SYMLINK)); setWritableAndCheck(targetFile, true); refresh(); @@ -122,7 +120,7 @@ public class SymlinkHandlingTest extends SymlinkTestCase { File targetDir = createTestDir(myTempDir, "target"); File linkDir = createSymLink(targetDir.getPath(), myTempDir + "/linkDir"); VirtualFile linkVDir = refreshAndFind(linkDir); - assertTrue("link=" + linkDir + ", vLink=" + linkVDir, linkVDir != null && linkVDir.isDirectory() && linkVDir.isSymLink()); + assertTrue("link=" + linkDir + ", vLink=" + linkVDir, linkVDir != null && linkVDir.isDirectory() && linkVDir.is(VFileProperty.SYMLINK)); if (!SystemInfo.isWindows) { setWritableAndCheck(targetDir, true); @@ -146,7 +144,8 @@ public class SymlinkHandlingTest extends SymlinkTestCase { File targetFile = createTestFile(myTempDir, "target"); File linkFile = createSymLink(targetFile.getPath(), myTempDir + "/link"); VirtualFile linkVFile = refreshAndFind(linkFile); - assertTrue("link=" + linkFile + ", vLink=" + linkVFile, linkVFile != null && !linkVFile.isDirectory() && linkVFile.isSymLink()); + assertTrue("link=" + linkFile + ", vLink=" + linkVFile, linkVFile != null && !linkVFile.isDirectory() && + linkVFile.is(VFileProperty.SYMLINK)); AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(getClass()); try { @@ -165,7 +164,7 @@ public class SymlinkHandlingTest extends SymlinkTestCase { File linkDir = createSymLink(targetDir.getPath(), myTempDir + "/linkDir"); VirtualFile linkVDir = refreshAndFind(linkDir); assertTrue("link=" + linkDir + ", vLink=" + linkVDir, - linkVDir != null && linkVDir.isDirectory() && linkVDir.isSymLink() && linkVDir.getChildren().length == 1); + linkVDir != null && linkVDir.isDirectory() && linkVDir.is(VFileProperty.SYMLINK) && linkVDir.getChildren().length == 1); token = ApplicationManager.getApplication().acquireWriteActionLock(getClass()); try { @@ -188,33 +187,33 @@ public class SymlinkHandlingTest extends SymlinkTestCase { File link = createSymLink(targetFile.getPath(), myTempDir + "/link"); VirtualFile vFile1 = refreshAndFind(link); assertTrue("link=" + link + ", vLink=" + vFile1, - vFile1 != null && !vFile1.isDirectory() && vFile1.isSymLink()); + vFile1 != null && !vFile1.isDirectory() && vFile1.is(VFileProperty.SYMLINK)); // file link => dir assertTrue(link.getPath(), link.delete() && link.mkdir() && link.isDirectory()); VirtualFile vFile2 = refreshAndFind(link); assertTrue("link=" + link + ", vLink=" + vFile2, - !vFile1.isValid() && vFile2 != null && vFile2.isDirectory() && !vFile2.isSymLink()); + !vFile1.isValid() && vFile2 != null && vFile2.isDirectory() && !vFile2.is(VFileProperty.SYMLINK)); // dir => dir link assertTrue(link.getPath(), link.delete()); link = createSymLink(targetDir.getPath(), myTempDir + "/link"); vFile1 = refreshAndFind(link); assertTrue("link=" + link + ", vLink=" + vFile1, - !vFile2.isValid() && vFile1 != null && vFile1.isDirectory() && vFile1.isSymLink()); + !vFile2.isValid() && vFile1 != null && vFile1.isDirectory() && vFile1.is(VFileProperty.SYMLINK)); // dir link => file assertTrue(link.getPath(), link.delete() && link.createNewFile() && link.isFile()); vFile2 = refreshAndFind(link); assertTrue("link=" + link + ", vLink=" + vFile1, - !vFile1.isValid() && vFile2 != null && !vFile2.isDirectory() && !vFile2.isSymLink()); + !vFile1.isValid() && vFile2 != null && !vFile2.isDirectory() && !vFile2.is(VFileProperty.SYMLINK)); // file => file link assertTrue(link.getPath(), link.delete()); link = createSymLink(targetFile.getPath(), myTempDir + "/link"); vFile1 = refreshAndFind(link); assertTrue("link=" + link + ", vLink=" + vFile1, - !vFile2.isValid() && vFile1 != null && !vFile1.isDirectory() && vFile1.isSymLink()); + !vFile2.isValid() && vFile1 != null && !vFile1.isDirectory() && vFile1.is(VFileProperty.SYMLINK)); } public void testDirLinkSwitch() throws Exception { @@ -227,7 +226,7 @@ public class SymlinkHandlingTest extends SymlinkTestCase { File link = createSymLink(targetDir1.getPath(), myTempDir + "/link"); VirtualFile vLink1 = refreshAndFind(link); assertTrue("link=" + link + ", vLink=" + vLink1, - vLink1 != null && vLink1.isDirectory() && vLink1.isSymLink()); + vLink1 != null && vLink1.isDirectory() && vLink1.is(VFileProperty.SYMLINK)); assertEquals(1, vLink1.getChildren().length); assertTrue(link.toString(), link.delete()); @@ -237,7 +236,7 @@ public class SymlinkHandlingTest extends SymlinkTestCase { assertFalse(vLink1.isValid()); VirtualFile vLink2 = myFileSystem.findFileByIoFile(link); assertTrue("link=" + link + ", vLink=" + vLink2, - vLink2 != null && vLink2.isDirectory() && vLink2.isSymLink()); + vLink2 != null && vLink2.isDirectory() && vLink2.is(VFileProperty.SYMLINK)); assertEquals(2, vLink2.getChildren().length); } @@ -250,7 +249,7 @@ public class SymlinkHandlingTest extends SymlinkTestCase { File link = createSymLink(target1.getPath(), myTempDir + "/link"); VirtualFile vLink1 = refreshAndFind(link); assertTrue("link=" + link + ", vLink=" + vLink1, - vLink1 != null && !vLink1.isDirectory() && vLink1.isSymLink()); + vLink1 != null && !vLink1.isDirectory() && vLink1.is(VFileProperty.SYMLINK)); assertEquals(FileUtil.loadFile(target1), VfsUtilCore.loadText(vLink1)); assertTrue(link.toString(), link.delete()); @@ -260,7 +259,7 @@ public class SymlinkHandlingTest extends SymlinkTestCase { assertFalse(vLink1.isValid()); VirtualFile vLink2 = myFileSystem.findFileByIoFile(link); assertTrue("link=" + link + ", vLink=" + vLink2, - vLink2 != null && !vLink2.isDirectory() && vLink2.isSymLink()); + vLink2 != null && !vLink2.isDirectory() && vLink2.is(VFileProperty.SYMLINK)); assertEquals(FileUtil.loadFile(target2), VfsUtilCore.loadText(vLink2)); } @@ -335,7 +334,7 @@ public class SymlinkHandlingTest extends SymlinkTestCase { } private static void assertBrokenLink(@NotNull VirtualFile link) { - assertTrue(link.isSymLink()); + assertTrue(link.is(VFileProperty.SYMLINK)); assertEquals(0, link.getLength()); assertNull(link.getCanonicalPath(), link.getCanonicalPath()); } diff --git a/platform/testFramework/src/com/intellij/mock/MockVirtualLink.java b/platform/testFramework/src/com/intellij/mock/MockVirtualLink.java index 4b0cab803940..4e9eb2807748 100644 --- a/platform/testFramework/src/com/intellij/mock/MockVirtualLink.java +++ b/platform/testFramework/src/com/intellij/mock/MockVirtualLink.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -15,6 +15,7 @@ */ package com.intellij.mock; +import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -28,8 +29,8 @@ public class MockVirtualLink extends MockVirtualFile { } @Override - public boolean isSymLink() { - return true; + public boolean is(@NotNull VFileProperty property) { + return property == VFileProperty.SYMLINK || super.is(property); } @Nullable diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/VcsVFSListener.java b/platform/vcs-api/src/com/intellij/openapi/vcs/VcsVFSListener.java index 5cf65ba2fae3..84fa170df21d 100644 --- a/platform/vcs-api/src/com/intellij/openapi/vcs/VcsVFSListener.java +++ b/platform/vcs-api/src/com/intellij/openapi/vcs/VcsVFSListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -240,7 +240,7 @@ public abstract class VcsVFSListener implements Disposable { } private void addFileToMove(final VirtualFile file, final String newParentPath, final String newName) { - if (file.isDirectory() && !file.isSymLink() && !isDirectoryVersioningSupported()) { + if (file.isDirectory() && !file.is(VFileProperty.SYMLINK) && !isDirectoryVersioningSupported()) { @SuppressWarnings("UnsafeVfsRecursion") VirtualFile[] children = file.getChildren(); if (children != null) { for (VirtualFile child : children) {