From 1394ba9f1a21cfea049434484a9b808adbf86732 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Tue, 23 Jun 2009 17:22:27 +0400 Subject: [PATCH] mock filetype manager if no application allows running lexer suites. --- .../openapi/fileTypes/FileTypeManager.java | 4 +- .../openapi/fileTypes/MockFileTypeManager.java | 96 ++++++++++++++++++++++ .../openapi/fileTypes/MockLanguageFileType.java | 36 ++++++++ source/com/intellij/lexer/JavaLexer.java | 4 + 4 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 platform-api/src/com/intellij/openapi/fileTypes/MockFileTypeManager.java create mode 100644 platform-api/src/com/intellij/openapi/fileTypes/MockLanguageFileType.java diff --git a/platform-api/src/com/intellij/openapi/fileTypes/FileTypeManager.java b/platform-api/src/com/intellij/openapi/fileTypes/FileTypeManager.java index 497f7d738c..af1252df70 100644 --- a/platform-api/src/com/intellij/openapi/fileTypes/FileTypeManager.java +++ b/platform-api/src/com/intellij/openapi/fileTypes/FileTypeManager.java @@ -15,6 +15,7 @@ */ package com.intellij.openapi.fileTypes; +import com.intellij.openapi.application.Application; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.CachedSingletonsRegistry; import com.intellij.openapi.vfs.VirtualFile; @@ -38,7 +39,8 @@ public abstract class FileTypeManager{ */ public static FileTypeManager getInstance() { if (ourInstance == null) { - ourInstance = ApplicationManager.getApplication().getComponent(FileTypeManager.class); + Application app = ApplicationManager.getApplication(); + ourInstance = app != null ? app.getComponent(FileTypeManager.class) : new MockFileTypeManager(); } return ourInstance; } diff --git a/platform-api/src/com/intellij/openapi/fileTypes/MockFileTypeManager.java b/platform-api/src/com/intellij/openapi/fileTypes/MockFileTypeManager.java new file mode 100644 index 0000000000..a7fe57850c --- /dev/null +++ b/platform-api/src/com/intellij/openapi/fileTypes/MockFileTypeManager.java @@ -0,0 +1,96 @@ +/* + * @author max + */ +package com.intellij.openapi.fileTypes; + +import com.intellij.openapi.vfs.VirtualFile; +import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; + +import java.util.Collections; +import java.util.List; + +class MockFileTypeManager extends FileTypeManager { + @Override + public void registerFileType(@NotNull FileType type, @NotNull List defaultAssociations) { + throw new UnsupportedOperationException(); + } + + @NotNull + @Override + public FileType getFileTypeByFileName(@NotNull @NonNls String fileName) { + return MockLanguageFileType.INSTANCE; + } + + @NotNull + @Override + public FileType getFileTypeByFile(@NotNull VirtualFile file) { + return MockLanguageFileType.INSTANCE; + } + + @NotNull + @Override + public FileType getFileTypeByExtension(@NonNls @NotNull String extension) { + return MockLanguageFileType.INSTANCE; + } + + @NotNull + @Override + public FileType[] getRegisteredFileTypes() { + return new FileType[] {MockLanguageFileType.INSTANCE}; + } + + @Override + public boolean isFileIgnored(@NonNls @NotNull String name) { + return false; + } + + @NotNull + @Override + public String[] getAssociatedExtensions(@NotNull FileType type) { + return new String[0]; + } + + @NotNull + @Override + public List getAssociations(@NotNull FileType type) { + return Collections.emptyList(); + } + + @Override + public void addFileTypeListener(@NotNull FileTypeListener listener) { + } + + @Override + public void removeFileTypeListener(@NotNull FileTypeListener listener) { + } + + @Override + public FileType getKnownFileTypeOrAssociate(@NotNull VirtualFile file) { + return file.getFileType(); + } + + @NotNull + @Override + public String getIgnoredFilesList() { + return ""; + } + + @Override + public void setIgnoredFilesList(@NotNull String list) { + } + + @Override + public void associate(@NotNull FileType type, @NotNull FileNameMatcher matcher) { + } + + @Override + public void removeAssociation(@NotNull FileType type, @NotNull FileNameMatcher matcher) { + } + + @NotNull + @Override + public FileType getStdFileType(@NotNull @NonNls String fileTypeName) { + return MockLanguageFileType.INSTANCE; + } +} diff --git a/platform-api/src/com/intellij/openapi/fileTypes/MockLanguageFileType.java b/platform-api/src/com/intellij/openapi/fileTypes/MockLanguageFileType.java new file mode 100644 index 0000000000..15197abf60 --- /dev/null +++ b/platform-api/src/com/intellij/openapi/fileTypes/MockLanguageFileType.java @@ -0,0 +1,36 @@ +/* + * @author max + */ +package com.intellij.openapi.fileTypes; + +import com.intellij.lang.Language; +import org.jetbrains.annotations.NotNull; + +import javax.swing.*; + +public class MockLanguageFileType extends LanguageFileType { + public static LanguageFileType INSTANCE = new MockLanguageFileType(); + + private MockLanguageFileType() { + super(Language.ANY); + } + + @NotNull + public String getName() { + return "Mock"; + } + + @NotNull + public String getDescription() { + return "Mock"; + } + + @NotNull + public String getDefaultExtension() { + return ".mockExtensionThatProbablyWon'tEverExist"; + } + + public Icon getIcon() { + return null; + } +} diff --git a/source/com/intellij/lexer/JavaLexer.java b/source/com/intellij/lexer/JavaLexer.java index 989e83a3c4..e2449da0ea 100644 --- a/source/com/intellij/lexer/JavaLexer.java +++ b/source/com/intellij/lexer/JavaLexer.java @@ -408,6 +408,7 @@ public class JavaLexer extends LexerBase { walk(root, stats); System.out.println("Scanned " + stats.files + " files, total of " + stats.lines + " lines in " + (stats.time / 1000000) + " ms."); + System.out.println("Size:" + stats.bytes); ProfilingUtil.captureCPUSnapshot(); } @@ -421,6 +422,8 @@ public class JavaLexer extends LexerBase { stats.lines++; buf.append(s).append("\n"); } + + stats.bytes += buf.length(); long start = System.nanoTime(); lexText(buf); @@ -439,6 +442,7 @@ public class JavaLexer extends LexerBase { public int files; public int lines; public long time; + public long bytes; } private static void walk(File root, Stats stats) throws IOException { -- 2.11.4.GIT