package fr.adrienbrault.idea.symfony2plugin.dic; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.NotNullLazyValue; import com.intellij.psi.PsiElement; import fr.adrienbrault.idea.symfony2plugin.stubs.ContainerCollectionResolver; import fr.adrienbrault.idea.symfony2plugin.stubs.ServiceIndexUtil; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Set; /** * @author Daniel Espendiller <daniel@espendiller.net> */ public class ClassServiceDefinitionTargetLazyValue extends NotNullLazyValue<Collection<? extends PsiElement>> { @NotNull private final Project project; @NotNull private final String fqnClass; public ClassServiceDefinitionTargetLazyValue(@NotNull Project project, @NotNull String fqnClass) { this.project = project; this.fqnClass = fqnClass; } @NotNull @Override protected Collection<? extends PsiElement> compute() { Set<String> serviceNames = ContainerCollectionResolver.ServiceCollector.create(project).convertClassNameToServices(fqnClass); if(serviceNames.size() == 0) { return Collections.emptyList(); } Collection<PsiElement> psiElements = new ArrayList<>(); for(String serviceName: serviceNames) { psiElements.addAll(ServiceIndexUtil.findServiceDefinitions(project, serviceName)); } return psiElements; } }