From 133edc2acc31005d8fcfbaf2b8796cf2c3d523c5 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Tue, 22 Jan 2013 14:46:59 +0400 Subject: [PATCH] project leak --- .../EnforcedPlainTextFileTypeManager.java | 33 ++++++++----------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/openapi/file/exclude/EnforcedPlainTextFileTypeManager.java b/platform/lang-impl/src/com/intellij/openapi/file/exclude/EnforcedPlainTextFileTypeManager.java index b095b17fb7ce..bea8d1de3a1a 100644 --- a/platform/lang-impl/src/com/intellij/openapi/file/exclude/EnforcedPlainTextFileTypeManager.java +++ b/platform/lang-impl/src/com/intellij/openapi/file/exclude/EnforcedPlainTextFileTypeManager.java @@ -31,9 +31,13 @@ import com.intellij.openapi.roots.ex.ProjectRootManagerEx; import com.intellij.openapi.roots.impl.DirectoryIndex; import com.intellij.openapi.util.EmptyRunnable; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.containers.WeakList; import com.intellij.util.indexing.FileBasedIndex; +import org.jetbrains.annotations.NotNull; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; /** * Maintains a list of files marked as plain text in a local environment (configuration). Every time a project is loaded/open, it reads @@ -44,8 +48,7 @@ import java.util.*; */ @State(name = "EnforcedPlainTextFileTypeManager", storages = {@Storage( file = StoragePathMacros.APP_CONFIG + "/plainTextFiles.xml")}) public class EnforcedPlainTextFileTypeManager extends PersistentFileSetManager implements ProjectManagerListener { - - private Set myProcessedProjects = new HashSet(); + private Collection myProcessedProjects = new WeakList(); private boolean myNeedsSync = true; public EnforcedPlainTextFileTypeManager() { @@ -59,7 +62,7 @@ public class EnforcedPlainTextFileTypeManager extends PersistentFileSetManager i return containsFile(file); } - public boolean syncWithOpenProject() { + private boolean syncWithOpenProject() { Project[] openProjects = ProjectManager.getInstance().getOpenProjects(); if (openProjects.length > 0) { Project firstOpenProject = openProjects[0]; @@ -71,15 +74,10 @@ public class EnforcedPlainTextFileTypeManager extends PersistentFileSetManager i return false; } - public static boolean isApplicableFor(VirtualFile file) { + public static boolean isApplicableFor(@NotNull VirtualFile file) { if (file.isDirectory()) return false; FileType originalType = FileTypeManager.getInstance().getFileTypeByFileName(file.getName()); - if (originalType.isBinary() || - originalType == FileTypes.PLAIN_TEXT || - originalType == StdFileTypes.JAVA) { - return false; - } - return true; + return !originalType.isBinary() && originalType != FileTypes.PLAIN_TEXT && originalType != StdFileTypes.JAVA; } public void markAsPlainText(VirtualFile... files) { @@ -126,13 +124,12 @@ public class EnforcedPlainTextFileTypeManager extends PersistentFileSetManager i }); } - private static EnforcedPlainTextFileTypeManager ourInstance; + private static class EnforcedPlainTextFileTypeManagerHolder { + private static final EnforcedPlainTextFileTypeManager ourInstance = ServiceManager.getService(EnforcedPlainTextFileTypeManager.class); + } public static EnforcedPlainTextFileTypeManager getInstance() { - if (ourInstance == null) { - ourInstance = ServiceManager.getService(EnforcedPlainTextFileTypeManager.class); - } - return ourInstance; + return EnforcedPlainTextFileTypeManagerHolder.ourInstance; } @Override @@ -147,9 +144,7 @@ public class EnforcedPlainTextFileTypeManager extends PersistentFileSetManager i @Override public void projectClosed(Project project) { - if (myProcessedProjects.contains(project)) { - myProcessedProjects.remove(project); - } + myProcessedProjects.remove(project); } @Override