made Encoding*Manager available for Upsource

This commit is contained in:
Alexey Kudravtsev
2014-11-27 19:44:36 +03:00
parent 25b0125f40
commit 488586de21
7 changed files with 140 additions and 116 deletions
@@ -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<FileTypeRegistry> fileTypeRegistryGetter,
@NotNull Getter<EncodingRegistry> encodingRegistryGetter,
@NotNull Disposable parent) {
final Application old = ourApplication;
final Getter<FileTypeRegistry> oldFileTypeRegistry = FileTypeRegistry.ourInstanceGetter;
final Getter<EncodingRegistry> 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;
}
}
@@ -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<EncodingRegistry> 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();
}
@@ -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<FileTypeRegistry>(myFileTypeRegistry),
new StaticGetter<EncodingRegistry>(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());
@@ -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<Charset> 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<VirtualFile, Charset> getAllMappings() {
return Collections.emptyMap();
}
@Override
public void setMapping(@NotNull Map<VirtualFile, Charset> result) {
}
@Override
public void setDefaultCharsetName(@NotNull String name) {
}
}
@@ -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<Charset> 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 {
}
@@ -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")
@@ -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<EncodingRegistry>() {
@Override
public EncodingRegistry get() {
return EncodingManager.getInstance();
}
},
getTestRootDisposable());
getApplication().registerService(EncodingManager.class, EncodingManagerImpl.class);
}