make TempFileSystem extends LocalFileSystem to simplify clients and tests

This commit is contained in:
Alexey Kudravtsev
2013-10-09 13:51:25 +04:00
parent 662eb803d6
commit 6484602454
5 changed files with 40 additions and 20 deletions
@@ -17,7 +17,6 @@ package org.intellij.images.index;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.ex.temp.TempFileSystem;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.util.indexing.*;
import com.intellij.util.io.DataExternalizer;
@@ -94,8 +93,8 @@ public class ImageInfoIndex extends SingleEntryFileBasedIndexExtension<ImageInfo
return new DefaultFileTypeSpecificInputFilter(ImageFileTypeManager.getInstance().getImageFileType()) {
@Override
public boolean acceptInput(final VirtualFile file) {
return (file.isInLocalFileSystem() || file.getFileSystem() instanceof TempFileSystem) &&
(file.getLength() / 1024) < ourMaxImageSize
return file.isInLocalFileSystem() &&
file.getLength() / 1024 < ourMaxImageSize
;
}
};
@@ -44,7 +44,6 @@ import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.encoding.ChangeFileEncodingAction;
import com.intellij.openapi.vfs.encoding.EncodingUtil;
import com.intellij.openapi.vfs.ex.temp.TempFileSystem;
import com.intellij.psi.PsiFile;
import com.intellij.psi.util.PsiUtilBase;
import com.intellij.util.ArrayUtil;
@@ -98,9 +97,7 @@ public class LossyEncodingInspection extends LocalInspectionTool {
if (file.getViewProvider().getBaseLanguage() != file.getLanguage()) return null;
VirtualFile virtualFile = file.getVirtualFile();
if (virtualFile == null) return null;
if (!virtualFile.isInLocalFileSystem()
// tests
&& virtualFile.getFileSystem() != TempFileSystem.getInstance()) return null;
if (!virtualFile.isInLocalFileSystem()) return null;
String text = file.getText();
Charset charset = LoadTextUtil.extractCharsetFromFileContent(file.getProject(), virtualFile, text);
@@ -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.
@@ -21,13 +21,14 @@ import com.intellij.openapi.util.io.BufferExposingByteArrayInputStream;
import com.intellij.openapi.util.io.FileAttributes;
import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.impl.local.LocalFileSystemBase;
import com.intellij.openapi.vfs.newvfs.ManagingFS;
import com.intellij.openapi.vfs.newvfs.NewVirtualFileSystem;
import com.intellij.openapi.vfs.newvfs.RefreshQueue;
import com.intellij.openapi.vfs.newvfs.VfsImplUtil;
import com.intellij.openapi.vfs.newvfs.impl.FakeVirtualFile;
import com.intellij.openapi.vfs.newvfs.persistent.FSRecords;
import com.intellij.util.ArrayUtil;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.LocalTimeCounter;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -35,12 +36,14 @@ import org.jetbrains.annotations.Nullable;
import java.io.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
/**
* @author max
*/
public class TempFileSystem extends NewVirtualFileSystem {
public class TempFileSystem extends LocalFileSystemBase {
private final FSItem myRoot = new FSDir(null, "/");
public static TempFileSystem getInstance() {
@@ -180,7 +183,7 @@ public class TempFileSystem extends NewVirtualFileSystem {
}
@Override
public void setTimeStamp(@NotNull final VirtualFile file, final long timeStamp) throws IOException {
public void setTimeStamp(@NotNull final VirtualFile file, final long timeStamp) {
final FSItem fsItem = convert(file);
assert fsItem != null;
@@ -370,4 +373,28 @@ public class TempFileSystem extends NewVirtualFileSystem {
final long length = item instanceof FSFile ? ((FSFile)item).myContent.length : 0;
return new FileAttributes(item.isDirectory(), false, false, false, length, item.myTimestamp, item.myWritable);
}
@NotNull
@Override
public Set<WatchRequest> addRootsToWatch(@NotNull Collection<String> rootPaths, boolean watchRecursively) {
throw new IncorrectOperationException();
}
@Override
public void removeWatchedRoots(@NotNull Collection<WatchRequest> watchRequests) {
throw new IncorrectOperationException();
}
@Override
public Set<WatchRequest> replaceWatchedRoots(@NotNull Collection<WatchRequest> watchRequests,
@Nullable Collection<String> recursiveRoots,
@Nullable Collection<String> flatRoots) {
throw new IncorrectOperationException();
}
@Nullable
@Override
protected String normalize(@NotNull String path) {
return path;
}
}
@@ -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.
@@ -44,6 +44,7 @@ import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileFilter;
import com.intellij.openapi.vfs.ex.temp.TempFileSystem;
import com.intellij.util.Alarm;
import com.intellij.util.ArrayUtil;
import com.intellij.util.ThrowableRunnable;
@@ -608,13 +609,14 @@ public class PlatformTestUtil {
FileDocumentManager.getInstance().saveAllDocuments();
VirtualFile[] childrenAfter = dirAfter.getChildren();
if (dirAfter.isInLocalFileSystem()) {
if (dirAfter.isInLocalFileSystem() && dirAfter.getFileSystem() != TempFileSystem.getInstance()) {
File[] ioAfter = new File(dirAfter.getPath()).listFiles();
shallowCompare(childrenAfter, ioAfter);
}
VirtualFile[] childrenBefore = dirBefore.getChildren();
if (dirBefore.isInLocalFileSystem()) {
if (dirBefore.isInLocalFileSystem() && dirBefore.getFileSystem() != TempFileSystem.getInstance()) {
File[] ioBefore = new File(dirBefore.getPath()).listFiles();
shallowCompare(childrenBefore, ioBefore);
}
@@ -25,7 +25,6 @@ import com.intellij.openapi.fileTypes.FileTypeManager;
import com.intellij.openapi.fileTypes.LanguageFileType;
import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.ex.temp.TempFileSystem;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.xml.XmlTokenType;
import com.intellij.util.containers.HashMap;
@@ -97,11 +96,7 @@ public class Html5CustomAttributesIndex extends ScalarIndexExtension<String> {
return new DefaultFileTypeSpecificInputFilter(StdFileTypes.HTML, StdFileTypes.XHTML) {
@Override
public boolean acceptInput(final VirtualFile file) {
if (!file.isInLocalFileSystem() && !(file.getFileSystem() instanceof TempFileSystem)) {
return false;
}
return true;
return file.isInLocalFileSystem();
}
};
}