package sk.sorien.pimpleplugin.pimple; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReferenceBase; import com.intellij.util.IncorrectOperationException; import com.jetbrains.php.PhpIndex; import com.jetbrains.php.lang.psi.elements.PhpClass; import com.jetbrains.php.lang.psi.elements.StringLiteralExpression; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; /** * @author Stanislav Turza */ public class ServiceReference extends PsiReferenceBase<PsiElement> { private final String className; public ServiceReference(String className, StringLiteralExpression element) { super(element); this.className = className; } public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException { throw new IncorrectOperationException(); } @NotNull public Object[] getVariants() { // @see https://youtrack.jetbrains.com/issue/WI-21563 return new Object[0]; } @Nullable public PsiElement resolve() { Collection<PhpClass> classes = PhpIndex.getInstance(getElement().getProject()).getClassesByFQN(className); if (classes.isEmpty()) { return null; } return classes.iterator().next(); } }