do not retrieve element when pointer is sufficient

This commit is contained in:
anna
2012-04-16 14:24:30 +02:00
parent 2f667d277f
commit 04972c4d12
2 changed files with 9 additions and 7 deletions
@@ -300,9 +300,9 @@ public class RefJavaManagerImpl extends RefJavaManager {
public void export(final RefEntity refEntity, final Element element) {
if (refEntity instanceof RefElement) {
final PsiElement psiElement = ((RefElement)refEntity).getElement();
if (psiElement != null) {
final PsiFile psiFile = psiElement.getContainingFile();
final SmartPsiElementPointer pointer = ((RefElement)refEntity).getPointer();
if (pointer != null) {
final PsiFile psiFile = pointer.getContainingFile();
if (psiFile instanceof PsiJavaFile) {
appendPackageElement(element, ((PsiJavaFile)psiFile).getPackageName());
}
@@ -43,6 +43,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectUtil;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.Segment;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
@@ -210,8 +211,8 @@ public class RefManagerImpl extends RefManager {
if (refEntity instanceof RefElement) {
final RefElement refElement = (RefElement)refEntity;
PsiElement psiElement = refElement.getElement();
PsiFile psiFile = psiElement.getContainingFile();
final SmartPsiElementPointer pointer = refElement.getPointer();
PsiFile psiFile = pointer.getContainingFile();
Element fileElement = new Element("file");
Element lineElement = new Element("line");
@@ -220,9 +221,10 @@ public class RefManagerImpl extends RefManager {
fileElement.addContent(virtualFile.getUrl());
if (actualLine == -1) {
final Document document = PsiDocumentManager.getInstance(refElement.getRefManager().getProject()).getDocument(psiFile);
final Document document = PsiDocumentManager.getInstance(pointer.getProject()).getDocument(psiFile);
LOG.assertTrue(document != null);
lineElement.addContent(String.valueOf(document.getLineNumber(psiElement.getTextOffset()) + 1));
final Segment range = pointer.getRange();
lineElement.addContent(String.valueOf(range != null ? (document.getLineNumber(range.getStartOffset()) + 1) : -1));
}
else {
lineElement.addContent(String.valueOf(actualLine));