From 8773f3ce693eb9ae07c65e8be08e3ad16c3f6bc1 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 9 Feb 2012 20:22:47 +0100 Subject: [PATCH] patch from Alexander Zverev --- .../src/com/intellij/core/JavaCoreEnvironment.java | 13 +++++++------ .../intellij/mock/MockFileDocumentManagerImpl.java | 9 +++++++++ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/core/JavaCoreEnvironment.java b/java/java-psi-impl/src/com/intellij/core/JavaCoreEnvironment.java index 3abd69097571..6c2a98db24b7 100644 --- a/java/java-psi-impl/src/com/intellij/core/JavaCoreEnvironment.java +++ b/java/java-psi-impl/src/com/intellij/core/JavaCoreEnvironment.java @@ -70,12 +70,6 @@ public class JavaCoreEnvironment extends CoreEnvironment { myApplication.registerService(PsiPackageImplementationHelper.class, new CorePsiPackageImplementationHelper()); myFileManager = new CoreJavaFileManager(myPsiManager, getLocalFileSystem(), myJarFileSystem); - JavaPsiFacadeImpl javaPsiFacade = new JavaPsiFacadeImpl(myProject, myPsiManager, myFileManager, null); - myProject.registerService(CoreJavaFileManager.class, myFileManager); - registerComponentInstance(myProject.getPicoContainer(), - JavaPsiFacade.class, - javaPsiFacade); - myProject.registerService(JavaPsiFacade.class, javaPsiFacade); myProject.registerService(PsiElementFactory.class, new PsiElementFactoryImpl(myPsiManager)); myProject.registerService(JavaPsiImplementationHelper.class, new CoreJavaPsiImplementationHelper()); myProject.registerService(PsiResolveHelper.class, new PsiResolveHelperImpl(myPsiManager)); @@ -83,6 +77,13 @@ public class JavaCoreEnvironment extends CoreEnvironment { myProject.registerService(PackageIndex.class, myFileManager); myProject.registerService(JavaResolveCache.class, new JavaResolveCache(null)); + JavaPsiFacadeImpl javaPsiFacade = new JavaPsiFacadeImpl(myProject, myPsiManager, myFileManager, null); + myProject.registerService(CoreJavaFileManager.class, myFileManager); + registerComponentInstance(myProject.getPicoContainer(), + JavaPsiFacade.class, + javaPsiFacade); + myProject.registerService(JavaPsiFacade.class, javaPsiFacade); + myApplication.registerService(EmptySubstitutor.class, new EmptySubstitutorImpl()); myApplication.registerService(JavaDirectoryService.class, new CoreJavaDirectoryService()); } diff --git a/platform/core-impl/src/com/intellij/mock/MockFileDocumentManagerImpl.java b/platform/core-impl/src/com/intellij/mock/MockFileDocumentManagerImpl.java index c70d12f11d0e..798078b78a9f 100644 --- a/platform/core-impl/src/com/intellij/mock/MockFileDocumentManagerImpl.java +++ b/platform/core-impl/src/com/intellij/mock/MockFileDocumentManagerImpl.java @@ -3,6 +3,8 @@ package com.intellij.mock; import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileEditor.impl.LoadTextUtil; +import com.intellij.openapi.fileTypes.BinaryFileTypeDecompilers; +import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Key; import com.intellij.openapi.vfs.VirtualFile; @@ -26,11 +28,18 @@ public class MockFileDocumentManagerImpl extends FileDocumentManager { private final WeakFactoryMap myDocuments = new WeakFactoryMap() { @Override protected Document create(final VirtualFile key) { + if (key.isDirectory() || isBinaryWithoutDecompiler(key)) return null; + CharSequence text = LoadTextUtil.loadText(key); final Document document = myFactory.fun(text); document.putUserData(MOCK_VIRTUAL_FILE_KEY, key); return document; } + + private boolean isBinaryWithoutDecompiler(VirtualFile file) { + final FileType ft = file.getFileType(); + return ft.isBinary() && BinaryFileTypeDecompilers.INSTANCE.forFileType(ft) == null; + } }; @Override