mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
VfsUtil moves back to platform-api; VirtualFile dependencies on VfsUtil moved elsewhere
This commit is contained in:
@@ -179,7 +179,7 @@ public abstract class VirtualFile extends UserDataHolderBase implements Modifica
|
||||
*/
|
||||
public void rename(Object requestor, @NotNull @NonNls String newName) throws IOException {
|
||||
if (getName().equals(newName)) return;
|
||||
if (!VfsUtil.isValidName(newName)) {
|
||||
if (!isValidName(newName)) {
|
||||
throw new IOException(VfsBundle.message("file.invalid.name.error", newName));
|
||||
}
|
||||
|
||||
@@ -321,7 +321,7 @@ public abstract class VirtualFile extends UserDataHolderBase implements Modifica
|
||||
throw new IOException(VfsBundle.message("invalid.directory.create.files"));
|
||||
}
|
||||
|
||||
if (!VfsUtil.isValidName(name)) {
|
||||
if (!isValidName(name)) {
|
||||
throw new IOException(VfsBundle.message("directory.invalid.name.error", name));
|
||||
}
|
||||
|
||||
@@ -351,7 +351,7 @@ public abstract class VirtualFile extends UserDataHolderBase implements Modifica
|
||||
throw new IOException(VfsBundle.message("invalid.directory.create.files"));
|
||||
}
|
||||
|
||||
if (!VfsUtil.isValidName(name)) {
|
||||
if (!isValidName(name)) {
|
||||
throw new IOException(VfsBundle.message("file.invalid.name.error", name));
|
||||
}
|
||||
|
||||
@@ -391,7 +391,7 @@ public abstract class VirtualFile extends UserDataHolderBase implements Modifica
|
||||
throw new IOException(VfsBundle.message("file.move.error", newParent.getPresentableUrl()));
|
||||
}
|
||||
|
||||
VfsUtil.doActionAndRestoreEncoding(this, new ThrowableComputable<VirtualFile, IOException>() {
|
||||
EncodingManager.doActionAndRestoreEncoding(this, new ThrowableComputable<VirtualFile, IOException>() {
|
||||
public VirtualFile compute() throws IOException {
|
||||
getFileSystem().moveFile(requestor, VirtualFile.this, newParent);
|
||||
return VirtualFile.this;
|
||||
@@ -408,7 +408,7 @@ public abstract class VirtualFile extends UserDataHolderBase implements Modifica
|
||||
throw new IOException(VfsBundle.message("file.copy.target.must.be.directory"));
|
||||
}
|
||||
|
||||
return VfsUtil.doActionAndRestoreEncoding(this, new ThrowableComputable<VirtualFile, IOException>() {
|
||||
return EncodingManager.doActionAndRestoreEncoding(this, new ThrowableComputable<VirtualFile, IOException>() {
|
||||
public VirtualFile compute() throws IOException {
|
||||
return getFileSystem().copyFile(requestor, VirtualFile.this, newParent, copyName);
|
||||
}
|
||||
@@ -628,4 +628,8 @@ public abstract class VirtualFile extends UserDataHolderBase implements Modifica
|
||||
public boolean isInLocalFileSystem() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isValidName(@NotNull String name) {
|
||||
return name.indexOf('\\') < 0 && name.indexOf('/') < 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,8 @@ package com.intellij.openapi.vfs.encoding;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.ThrowableComputable;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -88,4 +90,21 @@ public abstract class EncodingManager {
|
||||
public abstract void removePropertyChangeListener(@NotNull PropertyChangeListener listener);
|
||||
|
||||
public abstract Charset getCachedCharsetFromContent(@NotNull Document document);
|
||||
|
||||
public static <E extends Throwable> VirtualFile doActionAndRestoreEncoding(@NotNull VirtualFile fileBefore, @NotNull ThrowableComputable<VirtualFile, E> action) throws E {
|
||||
Charset charsetBefore = getInstance().getEncoding(fileBefore, true);
|
||||
VirtualFile fileAfter = null;
|
||||
try {
|
||||
fileAfter = action.compute();
|
||||
return fileAfter;
|
||||
}
|
||||
finally {
|
||||
if (fileAfter != null) {
|
||||
Charset actual = getInstance().getEncoding(fileAfter, true);
|
||||
if (!Comparing.equal(actual, charsetBefore)) {
|
||||
getInstance().setEncoding(fileAfter, charsetBefore);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -23,8 +23,8 @@ import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.ThrowableComputable;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.encoding.EncodingManager;
|
||||
import com.intellij.openapi.wm.ToolWindowManager;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
@@ -254,7 +254,7 @@ public class CopyFilesOrDirectoriesHandler implements CopyHandlerDelegate {
|
||||
if (newName == null) newName = directory.getName();
|
||||
final PsiDirectory existing = targetDirectory.findSubdirectory(newName);
|
||||
final PsiDirectory subdirectory = existing == null ? targetDirectory.createSubdirectory(newName) : existing;
|
||||
VfsUtil.doActionAndRestoreEncoding(directory.getVirtualFile(), new ThrowableComputable<VirtualFile, IOException>() {
|
||||
EncodingManager.doActionAndRestoreEncoding(directory.getVirtualFile(), new ThrowableComputable<VirtualFile, IOException>() {
|
||||
public VirtualFile compute() {
|
||||
return subdirectory.getVirtualFile();
|
||||
}
|
||||
|
||||
+3
-23
@@ -19,10 +19,11 @@ import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.fileTypes.FileTypeManager;
|
||||
import com.intellij.openapi.fileTypes.FileTypes;
|
||||
import com.intellij.openapi.util.*;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
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.encoding.EncodingManager;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.PathUtil;
|
||||
@@ -595,10 +596,6 @@ public class VfsUtil {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static boolean isValidName(@NotNull String name) {
|
||||
return name.indexOf('\\') < 0 && name.indexOf('/') < 0;
|
||||
}
|
||||
|
||||
public static String getUrlForLibraryRoot(@NotNull File libraryRoot) {
|
||||
String path = FileUtil.toSystemIndependentName(libraryRoot.getAbsolutePath());
|
||||
if (FileTypeManager.getInstance().getFileTypeByFileName(libraryRoot.getName()) == FileTypes.ARCHIVE) {
|
||||
@@ -687,23 +684,6 @@ public class VfsUtil {
|
||||
return file;
|
||||
}
|
||||
|
||||
public static <E extends Throwable> VirtualFile doActionAndRestoreEncoding(@NotNull VirtualFile fileBefore, @NotNull ThrowableComputable<VirtualFile, E> action) throws E {
|
||||
Charset charsetBefore = EncodingManager.getInstance().getEncoding(fileBefore, true);
|
||||
VirtualFile fileAfter = null;
|
||||
try {
|
||||
fileAfter = action.compute();
|
||||
return fileAfter;
|
||||
}
|
||||
finally {
|
||||
if (fileAfter != null) {
|
||||
Charset actual = EncodingManager.getInstance().getEncoding(fileAfter, true);
|
||||
if (!Comparing.equal(actual, charsetBefore)) {
|
||||
EncodingManager.getInstance().setEncoding(fileAfter, charsetBefore);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void processFileRecursivelyWithoutIgnored(@NotNull final VirtualFile root, @NotNull final Processor<VirtualFile> processor) {
|
||||
final FileTypeManager ftm = FileTypeManager.getInstance();
|
||||
processFilesRecursively(root, processor, new Convertor<VirtualFile, Boolean>() {
|
||||
@@ -25,9 +25,9 @@ import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.ThrowableComputable;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileWithId;
|
||||
import com.intellij.openapi.vfs.encoding.EncodingManager;
|
||||
import com.intellij.util.LocalTimeCounter;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -145,7 +145,7 @@ public abstract class NewVirtualFile extends VirtualFile implements VirtualFileW
|
||||
throw new IOException("Destination already exists: " + newParent.getPath() + "/" + getName());
|
||||
}
|
||||
|
||||
VfsUtil.doActionAndRestoreEncoding(this, new ThrowableComputable<VirtualFile, IOException>() {
|
||||
EncodingManager.doActionAndRestoreEncoding(this, new ThrowableComputable<VirtualFile, IOException>() {
|
||||
public VirtualFile compute() throws IOException {
|
||||
getFileSystem().moveFile(requestor, NewVirtualFile.this, newParent);
|
||||
return NewVirtualFile.this;
|
||||
|
||||
+3
-4
@@ -22,7 +22,6 @@ import com.intellij.openapi.util.io.FileTooBigException;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VfsBundle;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.encoding.EncodingManager;
|
||||
import com.intellij.openapi.vfs.newvfs.ManagingFS;
|
||||
@@ -256,7 +255,7 @@ public abstract class VirtualFileSystemEntry extends NewVirtualFile {
|
||||
|
||||
public void rename(final Object requestor, @NotNull @NonNls final String newName) throws IOException {
|
||||
if (getName().equals(newName)) return;
|
||||
if (!VfsUtil.isValidName(newName)) {
|
||||
if (!isValidName(newName)) {
|
||||
throw new IOException(VfsBundle.message("file.invalid.name.error", newName));
|
||||
}
|
||||
|
||||
@@ -298,7 +297,7 @@ public abstract class VirtualFileSystemEntry extends NewVirtualFile {
|
||||
throw new IOException(VfsBundle.message("file.copy.target.must.be.directory"));
|
||||
}
|
||||
|
||||
return VfsUtil.doActionAndRestoreEncoding(this, new ThrowableComputable<VirtualFile, IOException>() {
|
||||
return EncodingManager.doActionAndRestoreEncoding(this, new ThrowableComputable<VirtualFile, IOException>() {
|
||||
public VirtualFile compute() throws IOException {
|
||||
return ourPersistence.copyFile(requestor, VirtualFileSystemEntry.this, newParent, copyName);
|
||||
}
|
||||
@@ -310,7 +309,7 @@ public abstract class VirtualFileSystemEntry extends NewVirtualFile {
|
||||
throw new IOException(VfsBundle.message("file.move.error", newParent.getPresentableUrl()));
|
||||
}
|
||||
|
||||
VfsUtil.doActionAndRestoreEncoding(this, new ThrowableComputable<VirtualFile, IOException>() {
|
||||
EncodingManager.doActionAndRestoreEncoding(this, new ThrowableComputable<VirtualFile, IOException>() {
|
||||
public VirtualFile compute() throws IOException {
|
||||
ourPersistence.moveFile(requestor, VirtualFileSystemEntry.this, newParent);
|
||||
return VirtualFileSystemEntry.this;
|
||||
|
||||
Reference in New Issue
Block a user