use of com.intellij.psi.impl.PsiManagerEx in project intellij-community by JetBrains.
the class PsiModificationTrackerTest method testClassShouldNotAppearWithoutEvents_NoPsiGrandParentDirectory.
public void testClassShouldNotAppearWithoutEvents_NoPsiGrandParentDirectory() throws IOException {
PsiModificationTracker tracker = PsiManager.getInstance(getProject()).getModificationTracker();
long count0 = tracker.getJavaStructureModificationCount();
final PsiManagerEx psiManager = PsiManagerEx.getInstanceEx(getProject());
VirtualFile parentDir = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(createTempDirectory());
assertNull(((FileManagerImpl) psiManager.getFileManager()).getCachedDirectory(parentDir));
File file = new File(parentDir.getPath() + "/foo", "Foo.java");
FileUtil.writeToFile(file, "package foo; class Foo {}");
assertNotNull(LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file));
assertNotNull(JavaPsiFacade.getInstance(getProject()).findClass("foo.Foo", GlobalSearchScope.allScope(getProject())));
assertFalse(count0 == tracker.getJavaStructureModificationCount());
}
use of com.intellij.psi.impl.PsiManagerEx in project intellij-community by JetBrains.
the class PsiModificationTrackerTest method testVirtualFileRename_WithPsi.
public void testVirtualFileRename_WithPsi() throws IOException {
PsiModificationTracker tracker = PsiManager.getInstance(getProject()).getModificationTracker();
final PsiManagerEx psiManager = PsiManagerEx.getInstanceEx(getProject());
GlobalSearchScope scope = GlobalSearchScope.allScope(getProject());
final VirtualFile file = addFileToProject("foo/Foo.java", "package foo; class Foo {}").getVirtualFile();
assertNotNull(JavaPsiFacade.getInstance(getProject()).findClass("foo.Foo", scope));
long count1 = tracker.getModificationCount();
long hc = psiManager.findFile(file).hashCode();
long stamp1 = psiManager.findFile(file).getModificationStamp();
rename(file, "Bar.java");
assertNotNull(JavaPsiFacade.getInstance(getProject()).findClass("foo.Foo", scope));
assertTrue(count1 != tracker.getModificationCount());
assertTrue(stamp1 != psiManager.findFile(file).getModificationStamp());
assertEquals(hc, psiManager.findFile(file).hashCode());
}
use of com.intellij.psi.impl.PsiManagerEx in project intellij-community by JetBrains.
the class PsiModificationTrackerTest method testClassShouldNotDisappearWithoutEvents_NoDocument.
public void testClassShouldNotDisappearWithoutEvents_NoDocument() throws IOException {
PsiModificationTracker tracker = PsiManager.getInstance(getProject()).getModificationTracker();
final PsiManagerEx psiManager = PsiManagerEx.getInstanceEx(getProject());
final VirtualFile file = addFileToProject("Foo.java", "class Foo {}").getVirtualFile();
assertNotNull(JavaPsiFacade.getInstance(getProject()).findClass("Foo", GlobalSearchScope.allScope(getProject())));
long count1 = tracker.getJavaStructureModificationCount();
// gc softly-referenced file and document
PlatformTestUtil.tryGcSoftlyReachableObjects();
assertNull(FileDocumentManager.getInstance().getCachedDocument(file));
assertNull(psiManager.getFileManager().getCachedPsiFile(file));
setFileText(file, "");
assertNull(FileDocumentManager.getInstance().getCachedDocument(file));
assertNull(JavaPsiFacade.getInstance(getProject()).findClass("Foo", GlobalSearchScope.allScope(getProject())));
assertFalse(count1 == tracker.getJavaStructureModificationCount());
}
use of com.intellij.psi.impl.PsiManagerEx in project intellij-community by JetBrains.
the class PsiModificationTrackerTest method testClassShouldNotAppearWithoutEvents_NoPsiDirectory.
public void testClassShouldNotAppearWithoutEvents_NoPsiDirectory() throws IOException {
PsiModificationTracker tracker = PsiManager.getInstance(getProject()).getModificationTracker();
long count0 = tracker.getJavaStructureModificationCount();
final PsiManagerEx psiManager = PsiManagerEx.getInstanceEx(getProject());
VirtualFile parentDir = createChildDirectory(getProject().getBaseDir(), "tmp");
assertNull(((FileManagerImpl) psiManager.getFileManager()).getCachedDirectory(parentDir));
File file = new File(parentDir.getPath(), "Foo.java");
FileUtil.writeToFile(file, "class Foo {}");
assertNotNull(LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file));
assertNotNull(JavaPsiFacade.getInstance(getProject()).findClass("Foo", GlobalSearchScope.allScope(getProject())));
assertFalse(count0 == tracker.getJavaStructureModificationCount());
}
use of com.intellij.psi.impl.PsiManagerEx in project intellij-community by JetBrains.
the class PsiModificationTrackerTest method testClassShouldNotDisappearWithoutEvents_VirtualFileDeleted.
public void testClassShouldNotDisappearWithoutEvents_VirtualFileDeleted() throws IOException {
PsiModificationTracker tracker = PsiManager.getInstance(getProject()).getModificationTracker();
final PsiManagerEx psiManager = PsiManagerEx.getInstanceEx(getProject());
final VirtualFile file = addFileToProject("Foo.java", "class Foo {}").getVirtualFile();
assertNotNull(JavaPsiFacade.getInstance(getProject()).findClass("Foo", GlobalSearchScope.allScope(getProject())));
long count1 = tracker.getJavaStructureModificationCount();
// gc softly-referenced file and document
PlatformTestUtil.tryGcSoftlyReachableObjects();
assertNull(FileDocumentManager.getInstance().getCachedDocument(file));
assertNull(psiManager.getFileManager().getCachedPsiFile(file));
delete(file);
assertNull(JavaPsiFacade.getInstance(getProject()).findClass("Foo", GlobalSearchScope.allScope(getProject())));
assertFalse(count1 == tracker.getJavaStructureModificationCount());
}
Aggregations