From 85b2a36cb83c78007121689b60de2116da932291 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Wed, 16 May 2012 13:36:31 +0400 Subject: [PATCH] moving heavy initialization to initComponent() --- .../util/indexing/FileBasedIndexImpl.java | 8 ++++ .../fileTypes/impl/FileTypeManagerImpl.java | 37 +++++++++---------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexImpl.java b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexImpl.java index a5f15bf670d1..e2ae3217f0d8 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexImpl.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexImpl.java @@ -271,6 +271,9 @@ public class FileBasedIndexImpl extends FileBasedIndex { } */ + } + + private void initExtensions() { try { final FileBasedIndexExtension[] extensions = Extensions.getExtensions(FileBasedIndexExtension.EXTENSION_POINT_NAME); for (FileBasedIndexExtension extension : extensions) { @@ -318,6 +321,9 @@ public class FileBasedIndexImpl extends FileBasedIndex { registerIndexableSet(new AdditionalIndexableFileSet(), null); } + catch (IOException e) { + throw new RuntimeException(e); + } finally { ShutDownTracker.getInstance().registerShutdownTask(new Runnable() { @Override @@ -329,6 +335,7 @@ public class FileBasedIndexImpl extends FileBasedIndex { saveRegisteredIndices(myIndices.keySet()); myFlushingFuture = FlushingDaemon.everyFiveSeconds(new Runnable() { int lastModCount = 0; + @Override public void run() { if (lastModCount == myLocalModCount) { @@ -343,6 +350,7 @@ public class FileBasedIndexImpl extends FileBasedIndex { @Override public void initComponent() { + initExtensions(); } @Nullable 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 f80fe3b6269a..1898ea037391 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 @@ -105,12 +105,12 @@ public class FileTypeManagerImpl extends FileTypeManagerEx implements NamedJDOME } private final MessageBus myMessageBus; - private static final Map ourStandardFileTypes = new LinkedHashMap(); + private final Map myStandardFileTypes = new LinkedHashMap(); @NonNls private static final String[] FILE_TYPES_WITH_PREDEFINED_EXTENSIONS = {"JSP", "JSPX", "DTD", "HTML", "Properties", "XHTML"}; private final SchemesManager mySchemesManager; @NonNls private static final String FILE_SPEC = "$ROOT_CONFIG$/filetypes"; - static { + private void initStandardFileTypes() { final FileTypeConsumer consumer = new FileTypeConsumer() { @Override public void consume(@NotNull FileType fileType) { @@ -129,25 +129,24 @@ public class FileTypeManagerImpl extends FileTypeManagerEx implements NamedJDOME @Override public FileType getStandardFileTypeByName(@NotNull final String name) { - final StandardFileType type = ourStandardFileTypes.get(name); + final StandardFileType type = myStandardFileTypes.get(name); return type != null ? type.fileType : null; } private void register(final FileType fileType, final List fileNameMatchers) { - final StandardFileType type = ourStandardFileTypes.get(fileType.getName()); + final StandardFileType type = myStandardFileTypes.get(fileType.getName()); if (type != null) { for (FileNameMatcher matcher : fileNameMatchers) type.matchers.add(matcher); } else { - ourStandardFileTypes.put(fileType.getName(), new StandardFileType(fileType, fileNameMatchers)); + myStandardFileTypes.put(fileType.getName(), new StandardFileType(fileType, fileNameMatchers)); } } }; - final FileTypeFactory[] fileTypeFactories = Extensions.getExtensions(FileTypeFactory.FILE_TYPE_FACTORY_EP); - for (final FileTypeFactory factory : fileTypeFactories) { + for (final FileTypeFactory factory : Extensions.getExtensions(FileTypeFactory.FILE_TYPE_FACTORY_EP)) { try { - initFactory(consumer, factory); + factory.createFileTypes(consumer); } catch (final Error ex) { PluginManager.disableIncompatiblePlugin(factory, ex); @@ -155,10 +154,6 @@ public class FileTypeManagerImpl extends FileTypeManagerEx implements NamedJDOME } } - private static void initFactory(final FileTypeConsumer consumer, final FileTypeFactory factory) { - factory.createFileTypes(consumer); - } - // ------------------------------------------------------------------------- // Constructor // ------------------------------------------------------------------------- @@ -238,12 +233,6 @@ public class FileTypeManagerImpl extends FileTypeManagerEx implements NamedJDOME fireFileTypesChanged(); } }, RoamingType.PER_USER); - for (final StandardFileType pair : ourStandardFileTypes.values()) { - registerFileTypeWithoutNotification(pair.fileType, pair.matchers); - } - if (loadAllFileTypes()) { - restoreStandardFileExtensions(); - } } private static void writeImportedExtensionsMap(final Element map, final ImportedFileType type) { @@ -264,7 +253,7 @@ public class FileTypeManagerImpl extends FileTypeManagerEx implements NamedJDOME @Override @NotNull public FileType getStdFileType(@NotNull @NonNls String name) { - StandardFileType stdFileType = ourStandardFileTypes.get(name); + StandardFileType stdFileType = myStandardFileTypes.get(name); return stdFileType != null ? stdFileType.fileType : PlainTextFileType.INSTANCE; } @@ -289,6 +278,14 @@ public class FileTypeManagerImpl extends FileTypeManagerEx implements NamedJDOME @Override public void initComponent() { + initStandardFileTypes(); + + for (final StandardFileType pair : myStandardFileTypes.values()) { + registerFileTypeWithoutNotification(pair.fileType, pair.matchers); + } + if (loadAllFileTypes()) { + restoreStandardFileExtensions(); + } } // ------------------------------------------------------------------------- @@ -722,7 +719,7 @@ public class FileTypeManagerImpl extends FileTypeManagerEx implements NamedJDOME private void restoreStandardFileExtensions() { for (final String name : FILE_TYPES_WITH_PREDEFINED_EXTENSIONS) { - final StandardFileType stdFileType = ourStandardFileTypes.get(name); + final StandardFileType stdFileType = myStandardFileTypes.get(name); if (stdFileType != null) { FileType fileType = stdFileType.fileType; for (FileNameMatcher matcher : myPatternsTable.getAssociations(fileType)) {