Changed method of building mirror element in ClsFileImpl: now decompiler is invoked directly.

This commit is contained in:
Evgeny Gerashchenko
2012-03-13 17:09:06 +04:00
parent f362d6437f
commit 6efee973ff
@@ -23,8 +23,6 @@ import com.intellij.lang.FileASTNode;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.progress.NonCancelableSection;
import com.intellij.openapi.progress.ProgressIndicatorProvider;
@@ -292,14 +290,13 @@ public class ClsFileImpl extends ClsRepositoryPsiElement<PsiClassHolderFileStub>
synchronized (MIRROR_LOCK) {
if (myMirrorFileElement == null) {
VirtualFile virtualFile = getVirtualFile();
final Document document = FileDocumentManager.getInstance().getDocument(virtualFile);
String text = document.getText();
String mirrorText = decompile(getManager(), virtualFile);
String ext = JavaFileType.INSTANCE.getDefaultExtension();
PsiClass[] classes = getClasses();
String fileName = (classes.length > 0 ? classes[0].getName(): virtualFile.getNameWithoutExtension()) + "." + ext;
PsiManager manager = getManager();
PsiFile mirror = PsiFileFactory.getInstance(manager.getProject()).createFileFromText(fileName, JavaLanguage.INSTANCE, text, false, false);
PsiFile mirror = PsiFileFactory.getInstance(manager.getProject()).createFileFromText(fileName, JavaLanguage.INSTANCE, mirrorText, false, false);
final ASTNode mirrorTreeElement = SourceTreeToPsiMap.psiElementToTree(mirror);
//IMPORTANT: do not take lock too early - FileDocumentManager.getInstance().saveToString() can run write action...