package fr.adrienbrault.idea.symfony2plugin.config.xml;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementResolveResult;
import com.intellij.psi.PsiPolyVariantReferenceBase;
import com.intellij.psi.ResolveResult;
import com.intellij.psi.xml.XmlText;
import fr.adrienbrault.idea.symfony2plugin.dic.container.util.DotEnvUtil;
import fr.adrienbrault.idea.symfony2plugin.util.dict.ServiceUtil;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Collection;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
*/
public class ParameterXmlReference extends PsiPolyVariantReferenceBase<PsiElement> {
private String parameterName;
public ParameterXmlReference(@NotNull XmlText element) {
super(element);
parameterName = element.getValue();
}
@NotNull
@Override
public ResolveResult[] multiResolve(boolean incompleteCode) {
Collection<PsiElement> targets = new ArrayList<>();
targets.addAll(
DotEnvUtil.getEnvironmentVariableTargetsForParameter(getElement().getProject(), this.parameterName)
);
targets.addAll(ServiceUtil.getServiceClassTargets(getElement().getProject(), this.parameterName));
return PsiElementResolveResult.createResults(targets);
}
@NotNull
@Override
public Object[] getVariants() {
return new Object[0];
}
}