From 488586de2158f199c2912a16134f7abcd2972a1a Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 27 Nov 2014 19:35:46 +0300 Subject: [PATCH] made Encoding*Manager available for Upsource --- .../application/ApplicationManager.java | 8 +- .../vfs/encoding/EncodingRegistry.java | 9 +- .../core/CoreApplicationEnvironment.java | 19 ++- .../core/CoreEncodingProjectManager.java | 122 ++++++++++++++++++ .../intellij/core/CoreEncodingRegistry.java | 88 +------------ .../intellij/core/CoreProjectEnvironment.java | 1 + .../testFramework/PlatformLiteFixture.java | 9 +- 7 files changed, 140 insertions(+), 116 deletions(-) create mode 100644 platform/core-impl/src/com/intellij/core/CoreEncodingProjectManager.java diff --git a/platform/core-api/src/com/intellij/openapi/application/ApplicationManager.java b/platform/core-api/src/com/intellij/openapi/application/ApplicationManager.java index d8b36756ba54..5e0831458cb3 100644 --- a/platform/core-api/src/com/intellij/openapi/application/ApplicationManager.java +++ b/platform/core-api/src/com/intellij/openapi/application/ApplicationManager.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2014 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. @@ -19,7 +19,6 @@ import com.intellij.openapi.Disposable; import com.intellij.openapi.fileTypes.FileTypeRegistry; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Getter; -import com.intellij.openapi.vfs.encoding.EncodingRegistry; import org.jetbrains.annotations.NotNull; /** @@ -57,11 +56,9 @@ public class ApplicationManager { public static void setApplication(@NotNull Application instance, @NotNull Getter fileTypeRegistryGetter, - @NotNull Getter encodingRegistryGetter, @NotNull Disposable parent) { final Application old = ourApplication; final Getter oldFileTypeRegistry = FileTypeRegistry.ourInstanceGetter; - final Getter oldEncodingRegistry = EncodingRegistry.ourInstanceGetter; Disposer.register(parent, new Disposable() { @Override public void dispose() { @@ -69,13 +66,10 @@ public class ApplicationManager { setApplication(old); //noinspection AssignmentToStaticFieldFromInstanceMethod FileTypeRegistry.ourInstanceGetter = oldFileTypeRegistry; - //noinspection AssignmentToStaticFieldFromInstanceMethod - EncodingRegistry.ourInstanceGetter = oldEncodingRegistry; } } }); setApplication(instance); FileTypeRegistry.ourInstanceGetter = fileTypeRegistryGetter; - EncodingRegistry.ourInstanceGetter = encodingRegistryGetter; } } diff --git a/platform/core-api/src/com/intellij/openapi/vfs/encoding/EncodingRegistry.java b/platform/core-api/src/com/intellij/openapi/vfs/encoding/EncodingRegistry.java index 6f1891747511..dbfef8c25567 100644 --- a/platform/core-api/src/com/intellij/openapi/vfs/encoding/EncodingRegistry.java +++ b/platform/core-api/src/com/intellij/openapi/vfs/encoding/EncodingRegistry.java @@ -15,9 +15,7 @@ */ package com.intellij.openapi.vfs.encoding; -import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.util.Comparing; -import com.intellij.openapi.util.Getter; import com.intellij.openapi.util.ThrowableComputable; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; @@ -29,8 +27,6 @@ import java.nio.charset.Charset; * @author yole */ public abstract class EncodingRegistry { - public static Getter ourInstanceGetter; - public abstract boolean isNative2Ascii(@NotNull VirtualFile virtualFile); public abstract boolean isNative2AsciiForPropertiesFiles(); @@ -61,10 +57,7 @@ public abstract class EncodingRegistry { } public static EncodingRegistry getInstance() { - if (ourInstanceGetter == null) { - return (EncodingRegistry)ApplicationManager.getApplication().getPicoContainer().getComponentInstance("com.intellij.openapi.vfs.encoding.EncodingManager"); - } - return ourInstanceGetter.get(); + return EncodingManager.getInstance(); } diff --git a/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java b/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java index ec3b2ae8a925..8b9290382df3 100644 --- a/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java +++ b/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java @@ -16,7 +16,10 @@ package com.intellij.core; import com.intellij.codeInsight.folding.CodeFoldingSettings; -import com.intellij.concurrency.*; +import com.intellij.concurrency.AsyncFuture; +import com.intellij.concurrency.AsyncUtil; +import com.intellij.concurrency.Job; +import com.intellij.concurrency.JobLauncher; import com.intellij.lang.*; import com.intellij.lang.impl.PsiBuilderFactoryImpl; import com.intellij.mock.MockApplication; @@ -35,11 +38,16 @@ import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.extensions.ExtensionsArea; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileTypes.*; -import com.intellij.openapi.progress.*; -import com.intellij.openapi.util.*; +import com.intellij.openapi.progress.ProcessCanceledException; +import com.intellij.openapi.progress.ProgressIndicator; +import com.intellij.openapi.progress.ProgressManager; +import com.intellij.openapi.util.ClassExtension; +import com.intellij.openapi.util.Disposer; +import com.intellij.openapi.util.KeyedExtensionCollector; +import com.intellij.openapi.util.StaticGetter; import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.openapi.vfs.VirtualFileSystem; -import com.intellij.openapi.vfs.encoding.EncodingRegistry; +import com.intellij.openapi.vfs.encoding.EncodingManager; import com.intellij.openapi.vfs.impl.CoreVirtualFilePointerManager; import com.intellij.openapi.vfs.impl.VirtualFileManagerImpl; import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem; @@ -83,12 +91,10 @@ public class CoreApplicationEnvironment { Extensions.cleanRootArea(myParentDisposable); myFileTypeRegistry = new CoreFileTypeRegistry(); - CoreEncodingRegistry encodingRegistry = new CoreEncodingRegistry(); myApplication = createApplication(myParentDisposable); ApplicationManager.setApplication(myApplication, new StaticGetter(myFileTypeRegistry), - new StaticGetter(encodingRegistry), myParentDisposable); myLocalFileSystem = createLocalFileSystem(); myJarFileSystem = createJarFileSystem(); @@ -107,6 +113,7 @@ public class CoreApplicationEnvironment { VirtualFileManagerImpl virtualFileManager = new VirtualFileManagerImpl(fs, MessageBusFactory.newMessageBus(myApplication)); registerComponentInstance(appContainer, VirtualFileManager.class, virtualFileManager); + registerApplicationService(EncodingManager.class, new CoreEncodingRegistry()); registerApplicationService(VirtualFilePointerManager.class, createVirtualFilePointerManager()); registerApplicationService(DefaultASTFactory.class, new CoreASTFactory()); registerApplicationService(PsiBuilderFactory.class, new PsiBuilderFactoryImpl()); diff --git a/platform/core-impl/src/com/intellij/core/CoreEncodingProjectManager.java b/platform/core-impl/src/com/intellij/core/CoreEncodingProjectManager.java new file mode 100644 index 000000000000..35bca2fc2283 --- /dev/null +++ b/platform/core-impl/src/com/intellij/core/CoreEncodingProjectManager.java @@ -0,0 +1,122 @@ +/* + * Copyright 2000-2014 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.core; + +import com.intellij.openapi.Disposable; +import com.intellij.openapi.editor.Document; +import com.intellij.openapi.vfs.CharsetToolkit; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.vfs.encoding.EncodingProjectManager; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.beans.PropertyChangeListener; +import java.nio.charset.Charset; +import java.util.Collection; +import java.util.Collections; +import java.util.Map; + +public class CoreEncodingProjectManager extends EncodingProjectManager { + @Override + public boolean isNative2Ascii(@NotNull VirtualFile virtualFile) { + return false; + } + + @NotNull + @Override + public Charset getDefaultCharset() { + return CharsetToolkit.getDefaultSystemCharset(); + } + + @Override + public Charset getEncoding(@Nullable VirtualFile virtualFile, boolean useParentDefaults) { + return getDefaultCharset(); + } + + @Override + public boolean isUseUTFGuessing(VirtualFile virtualFile) { + return true; + } + + @Override + public void setEncoding(@Nullable VirtualFile virtualFileOrDir, @Nullable Charset charset) { + } + + @Override + public boolean isNative2AsciiForPropertiesFiles() { + return false; + } + + @NotNull + @Override + public Collection getFavorites() { + return Collections.singletonList(CharsetToolkit.UTF8_CHARSET); + } + + @Override + public void setNative2AsciiForPropertiesFiles(VirtualFile virtualFile, boolean native2Ascii) { + + } + + @NotNull + @Override + public String getDefaultCharsetName() { + return getDefaultCharset().name(); + } + + @Nullable + @Override + public Charset getDefaultCharsetForPropertiesFiles(@Nullable VirtualFile virtualFile) { + return null; + } + + @Override + public void setDefaultCharsetForPropertiesFiles(@Nullable VirtualFile virtualFile, @Nullable Charset charset) { + + } + + @Override + public void addPropertyChangeListener(@NotNull PropertyChangeListener listener, @NotNull Disposable parentDisposable) { + + } + + @Override + public void removePropertyChangeListener(@NotNull PropertyChangeListener listener) { + + } + + @Nullable + @Override + public Charset getCachedCharsetFromContent(@NotNull Document document) { + return null; + } + + @NotNull + @Override + public Map getAllMappings() { + return Collections.emptyMap(); + } + + @Override + public void setMapping(@NotNull Map result) { + + } + + @Override + public void setDefaultCharsetName(@NotNull String name) { + + } +} diff --git a/platform/core-impl/src/com/intellij/core/CoreEncodingRegistry.java b/platform/core-impl/src/com/intellij/core/CoreEncodingRegistry.java index ef4008910ab3..20981db9adee 100644 --- a/platform/core-impl/src/com/intellij/core/CoreEncodingRegistry.java +++ b/platform/core-impl/src/com/intellij/core/CoreEncodingRegistry.java @@ -15,94 +15,8 @@ */ package com.intellij.core; -import com.intellij.openapi.Disposable; -import com.intellij.openapi.editor.Document; -import com.intellij.openapi.vfs.CharsetToolkit; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.openapi.vfs.encoding.EncodingManager; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.beans.PropertyChangeListener; -import java.nio.charset.Charset; -import java.util.Collection; -import java.util.Collections; - /** * @author yole */ -public class CoreEncodingRegistry extends EncodingManager { - @Override - public boolean isNative2Ascii(@NotNull VirtualFile virtualFile) { - return false; - } - - @NotNull - @Override - public Charset getDefaultCharset() { - return CharsetToolkit.getDefaultSystemCharset(); - } - - @Override - public Charset getEncoding(@Nullable VirtualFile virtualFile, boolean useParentDefaults) { - return getDefaultCharset(); - } - - @Override - public boolean isUseUTFGuessing(VirtualFile virtualFile) { - return true; - } - - @Override - public void setEncoding(@Nullable VirtualFile virtualFileOrDir, @Nullable Charset charset) { - } - - @Override - public boolean isNative2AsciiForPropertiesFiles() { - return false; - } - - @NotNull - @Override - public Collection getFavorites() { - return Collections.singletonList(CharsetToolkit.UTF8_CHARSET); - } - - @Override - public void setNative2AsciiForPropertiesFiles(VirtualFile virtualFile, boolean native2Ascii) { - - } - - @NotNull - @Override - public String getDefaultCharsetName() { - return getDefaultCharset().name(); - } - - @Nullable - @Override - public Charset getDefaultCharsetForPropertiesFiles(@Nullable VirtualFile virtualFile) { - return null; - } - - @Override - public void setDefaultCharsetForPropertiesFiles(@Nullable VirtualFile virtualFile, @Nullable Charset charset) { - - } - - @Override - public void addPropertyChangeListener(@NotNull PropertyChangeListener listener, @NotNull Disposable parentDisposable) { - - } - - @Override - public void removePropertyChangeListener(@NotNull PropertyChangeListener listener) { - - } - - @Nullable - @Override - public Charset getCachedCharsetFromContent(@NotNull Document document) { - return null; - } +public class CoreEncodingRegistry extends CoreEncodingProjectManager { } diff --git a/platform/core-impl/src/com/intellij/core/CoreProjectEnvironment.java b/platform/core-impl/src/com/intellij/core/CoreProjectEnvironment.java index 2a89f73f9704..327a906b30ac 100644 --- a/platform/core-impl/src/com/intellij/core/CoreProjectEnvironment.java +++ b/platform/core-impl/src/com/intellij/core/CoreProjectEnvironment.java @@ -85,6 +85,7 @@ public class CoreProjectEnvironment { myProject.registerService(PsiDirectoryFactory.class, new PsiDirectoryFactoryImpl(myPsiManager)); myProject.registerService(ProjectScopeBuilder.class, createProjectScopeBuilder()); myProject.registerService(DumbService.class, new MockDumbService(myProject)); + myProject.registerService(CoreEncodingProjectManager.class, CoreEncodingProjectManager.class); } @SuppressWarnings("MethodMayBeStatic") diff --git a/platform/testFramework/src/com/intellij/testFramework/PlatformLiteFixture.java b/platform/testFramework/src/com/intellij/testFramework/PlatformLiteFixture.java index 3535334b9c7b..f52291e36c24 100644 --- a/platform/testFramework/src/com/intellij/testFramework/PlatformLiteFixture.java +++ b/platform/testFramework/src/com/intellij/testFramework/PlatformLiteFixture.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2014 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. @@ -28,7 +28,6 @@ import com.intellij.openapi.fileTypes.FileTypeRegistry; import com.intellij.openapi.util.Getter; import com.intellij.openapi.vfs.encoding.EncodingManager; import com.intellij.openapi.vfs.encoding.EncodingManagerImpl; -import com.intellij.openapi.vfs.encoding.EncodingRegistry; import org.jetbrains.annotations.NotNull; import org.picocontainer.MutablePicoContainer; @@ -60,12 +59,6 @@ public abstract class PlatformLiteFixture extends UsefulTestCase { return FileTypeManager.getInstance(); } }, - new Getter() { - @Override - public EncodingRegistry get() { - return EncodingManager.getInstance(); - } - }, getTestRootDisposable()); getApplication().registerService(EncodingManager.class, EncodingManagerImpl.class); }