remove unneeded wrapper

This commit is contained in:
Alexey Kudravtsev
2018-09-19 13:29:02 +03:00
parent 83d30bde63
commit ea0dab662b
2 changed files with 6 additions and 32 deletions
@@ -131,7 +131,6 @@ public abstract class BaseSmartPointerPsiNode <Type extends SmartPsiElementPoint
}
protected PsiElement getPsiElement(){
final Type value = getValue();
return value == null ? null : value.getElement();
return (PsiElement)getValue(); // automatically de-anchorized in AbstractTreeNode.getValue
}
}
@@ -36,7 +36,7 @@ public class PsiTreeAnchorizer extends TreeAnchorizer {
PsiElement psi = (PsiElement)element;
return ReadAction.compute(() -> {
if (!psi.isValid()) return psi;
return new SmartPointerWrapper(SmartPointerManager.getInstance(psi.getProject()).createSmartPsiElementPointer(psi));
return SmartPointerManager.getInstance(psi.getProject()).createSmartPsiElementPointer(psi);
});
}
return super.createAnchor(element);
@@ -44,8 +44,8 @@ public class PsiTreeAnchorizer extends TreeAnchorizer {
@Override
@Nullable
public Object retrieveElement(@NotNull final Object pointer) {
if (pointer instanceof SmartPointerWrapper) {
return ReadAction.compute(() -> ((SmartPointerWrapper)pointer).myPointer.getElement());
if (pointer instanceof SmartPsiElementPointer) {
return ReadAction.compute(() -> ((SmartPsiElementPointer)pointer).getElement());
}
return super.retrieveElement(pointer);
@@ -53,9 +53,9 @@ public class PsiTreeAnchorizer extends TreeAnchorizer {
@Override
public void freeAnchor(final Object element) {
if (element instanceof SmartPointerWrapper) {
if (element instanceof SmartPsiElementPointer) {
ApplicationManager.getApplication().runReadAction(() -> {
SmartPsiElementPointer pointer = ((SmartPointerWrapper)element).myPointer;
SmartPsiElementPointer pointer = (SmartPsiElementPointer)element;
Project project = pointer.getProject();
if (!project.isDisposed()) {
SmartPointerManager.getInstance(project).removePointer(pointer);
@@ -63,29 +63,4 @@ public class PsiTreeAnchorizer extends TreeAnchorizer {
});
}
}
private static class SmartPointerWrapper {
private final SmartPsiElementPointer myPointer;
private SmartPointerWrapper(@NotNull SmartPsiElementPointer pointer) {
myPointer = pointer;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof SmartPointerWrapper)) return false;
SmartPointerWrapper wrapper = (SmartPointerWrapper)o;
if (!myPointer.equals(wrapper.myPointer)) return false;
return true;
}
@Override
public int hashCode() {
return myPointer.hashCode();
}
}
}