public static boolean isAppEngineContext(@Nullable PsiElement context) { for (AppEngineExtension extension : EXTENSION.getExtensions()) { if (extension.isAppEngineEnabled(context)) { return true; } } return ourTestingMode; } }
public static Collection<GotoCompletionContributor> getContributors(final PsiElement psiElement) { final Collection<GotoCompletionContributor> contributors = new ArrayList<>(); GotoCompletionRegistrarParameter registrar = (pattern, contributor) -> { if(pattern.accepts(psiElement)) { contributors.add(contributor); } }; for(GotoCompletionRegistrar register: EXTENSIONS.getExtensions()) { register.register(registrar); } return contributors; }
private Collection<MethodParameterSetting> getExtensionMethodParameterSetting(Project project) { Collection<MethodParameterSetting> methodParameterSettings = new ArrayList<>(); MethodParameterReferenceContributorExtension[] extensions = EXTENSIONS.getExtensions(); if(extensions.length == 0) { return methodParameterSettings; } MethodParameterReferenceContributorParameter parameter = new MethodParameterReferenceContributorParameter(project); for(MethodParameterReferenceContributorExtension extension: extensions) { methodParameterSettings.addAll(extension.getSettings(parameter)); } return methodParameterSettings; }
synchronized public static <T extends ServiceParserInterface> T getInstance(Project project, Class<T> serviceParser){ Map<Class, ServiceXmlParserFactory> projectInstance = instance.computeIfAbsent(project, k -> new HashMap<>()); ServiceXmlParserFactory serviceXmlParserFactory = projectInstance.get(serviceParser); if(serviceXmlParserFactory == null) { serviceXmlParserFactory = new ServiceXmlParserFactory(project); // add extension for new instance for (CompiledServiceBuilderFactory ext : EXTENSIONS.getExtensions()) { serviceXmlParserFactory.extensions.add(ext.create()); } projectInstance.put(serviceParser, serviceXmlParserFactory); } return serviceXmlParserFactory.parser(serviceParser); }
public static List<GotoRelatedItem> getGotoRelatedItems(Method method) { List<GotoRelatedItem> gotoRelatedItems = new ArrayList<>(); ControllerActionGotoRelatedCollectorParameter parameter = new ControllerActionGotoRelatedCollectorParameter(method, gotoRelatedItems); for(ControllerActionGotoRelatedCollector extension : EP_NAME.getExtensions()) { extension.collectGotoRelatedItems(parameter); } return gotoRelatedItems; }
public Collection<File> getContainerFiles() { Collection<ContainerFile> containerFiles = new ArrayList<>(); ServiceContainerLoaderParameter containerLoaderExtensionParameter = new ServiceContainerLoaderParameter(project, containerFiles); for(ServiceContainerLoader loaderExtension : SERVICE_CONTAINER_POINT_NAME.getExtensions()) { loaderExtension.attachContainerFile(containerLoaderExtensionParameter); } if(containerFiles.size() == 0) { for (String s : Settings.DEFAULT_CONTAINER_PATHS) { containerFiles.add(new ContainerFile(s)); } } Collection<File> validFiles = new ArrayList<>(); for(ContainerFile containerFile : containerFiles) { if(containerFile.exists(this.project)) { validFiles.add(containerFile.getFile(this.project)); } } return validFiles; }
@NotNull private Collection<MethodSignatureSetting> getSignatureSettings(@NotNull PsiElement psiElement) { Collection<MethodSignatureSetting> signatures = new ArrayList<>(); // get user defined settings if(Settings.getInstance(psiElement.getProject()).objectSignatureTypeProvider) { Collection<MethodSignatureSetting> settingSignatures = Settings.getInstance(psiElement.getProject()).methodSignatureSettings; if(settingSignatures != null) { signatures.addAll(settingSignatures); } } // load extension MethodSignatureTypeProviderExtension[] extensions = EXTENSIONS.getExtensions(); if(extensions.length > 0) { MethodSignatureTypeProviderParameter parameter = new MethodSignatureTypeProviderParameter(psiElement); for(MethodSignatureTypeProviderExtension extension: extensions){ signatures.addAll(extension.getSignatures(parameter)); } } return signatures; }
for (RoutingLoader routingLoader : ROUTING_LOADER.getExtensions()) { if(parameter == null) { parameter = new RoutingLoaderParameter(project, routes);
SwaggerCustomFieldCompletionFactory.EP_NAME.getExtensions()) { ep.from(completionHelper, result).ifPresent(FieldCompletion::fill); SwaggerCustomValueCompletionFactory.EP_NAME.getExtensions()) { ep.from(completionHelper, result).ifPresent(ValueCompletion::fill);
private Set<String> getNames() { Set<String> serviceNames = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); // local filesystem serviceNames.addAll( ServiceXmlParserFactory.getInstance(project, XmlServiceParser.class).getServiceMap().getIds() ); // Extension points ServiceCollectorParameter.Id parameter = null; for (fr.adrienbrault.idea.symfony2plugin.extension.ServiceCollector collectorEx : EXTENSIONS.getExtensions()) { if(parameter == null) { parameter = new ServiceCollectorParameter.Id(project, serviceNames); } collectorEx.collectIds(parameter); } // index serviceNames.addAll( FileIndexCaches.getIndexKeysCache(project, SERVICE_CONTAINER_INDEX_NAMES, ServicesDefinitionStubIndex.KEY) ); return serviceNames; }
@NotNull public static Map<String, PsiVariable> collectScopeVariables(@NotNull PsiElement psiElement, @NotNull Set<VirtualFile> visitedFiles) { Map<String, Set<String>> globalVars = new HashMap<>(); Map<String, PsiVariable> controllerVars = new HashMap<>(); VirtualFile virtualFile = psiElement.getContainingFile().getVirtualFile(); if(visitedFiles.contains(virtualFile)) { return controllerVars; } visitedFiles.add(virtualFile); TwigFileVariableCollectorParameter collectorParameter = new TwigFileVariableCollectorParameter(psiElement, visitedFiles); for(TwigFileVariableCollector collector: TWIG_FILE_VARIABLE_COLLECTORS.getExtensions()) { collector.collect(collectorParameter, globalVars); collector.collectPsiVariables(collectorParameter, controllerVars); } // globals first globalVars.putAll(convertHashMapToTypeSet(findInlineStatementVariableDocBlock(psiElement, TwigElementTypes.BLOCK_STATEMENT, true))); globalVars.putAll(convertHashMapToTypeSet(findInlineStatementVariableDocBlock(psiElement, TwigElementTypes.MACRO_STATEMENT, false))); globalVars.putAll(convertHashMapToTypeSet(findInlineStatementVariableDocBlock(psiElement, TwigElementTypes.FOR_STATEMENT, false))); for(Map.Entry<String, Set<String>> entry: globalVars.entrySet()) { Set<String> types = entry.getValue(); // collect iterator types.addAll(collectIteratorReturns(psiElement, entry.getValue())); // convert to variable model controllerVars.put(entry.getKey(), new PsiVariable(types, null)); } // check if we are in "for" scope and resolve types ending with [] collectForArrayScopeVariables(psiElement, controllerVars); return controllerVars; }
public static List<PsiElement> findServiceDefinitions(@NotNull Project project, @NotNull String serviceName) { List<PsiElement> items = new ArrayList<>(); VirtualFile[] twigVirtualFiles = ServiceIndexUtil.findServiceDefinitionFiles(project, serviceName); for (VirtualFile twigVirtualFile : twigVirtualFiles) { PsiFile psiFile = PsiManager.getInstance(project).findFile(twigVirtualFile); if(psiFile instanceof YAMLFile) { PsiElement servicePsiElement = YamlHelper.getLocalServiceName(psiFile, serviceName); if(servicePsiElement != null) { items.add(servicePsiElement); } } if(psiFile instanceof XmlFile) { PsiElement servicePsiElement = XmlHelper.getLocalServiceName(psiFile, serviceName); if(servicePsiElement != null) { items.add(servicePsiElement); } } } // extension points ServiceDefinitionLocator[] extensions = EXTENSIONS.getExtensions(); if(extensions.length > 0) { ServiceDefinitionLocatorParameter parameter = new ServiceDefinitionLocatorParameter(project, items); for (ServiceDefinitionLocator locator : extensions) { locator.locate(serviceName, parameter); } } return items; }
.ifPresent(FieldCompletion::fill); for (SwaggerCustomFieldCompletionFactory ep : SwaggerCustomFieldCompletionFactory.EP_NAME.getExtensions()) { ep.from(completionHelper, result).ifPresent(FieldCompletion::fill); .ifPresent(ValueCompletion::fill); for (SwaggerCustomValueCompletionFactory ep : SwaggerCustomValueCompletionFactory.EP_NAME.getExtensions()) { ep.from(completionHelper, result).ifPresent(ValueCompletion::fill);
for (ServiceParameterCollector parameterCollector : EXTENSIONS_PARAMETER.getExtensions()) { if(parameter == null) { parameter = new ServiceParameterCollectorParameter.Id(project, exps);
private static List<LookupElement> getModelLookupElements(Project project, boolean useClassNameAsLookupString, DoctrineTypes.Manager... managers) { List<LookupElement> results = new ArrayList<>(); List<DoctrineTypes.Manager> managerList = Arrays.asList(managers); if(managerList.contains(DoctrineTypes.Manager.ORM)) { Map<String, String> entityNameMap = new HashMap<>( ServiceXmlParserFactory.getInstance(project, EntityNamesServiceParser.class).getEntityNameMap() ); attachRepositoryNames(project, results, entityNameMap, DoctrineTypes.Manager.ORM, useClassNameAsLookupString, false); // add bundle entity namespace attachRepositoryNames(project, results, EntityHelper.getWeakBundleNamespaces(project, entityNameMap, "Entity"), DoctrineTypes.Manager.ORM, useClassNameAsLookupString, true); } if(managerList.contains(DoctrineTypes.Manager.MONGO_DB) || managerList.contains(DoctrineTypes.Manager.COUCH_DB)) { Map<String, String> documentNameMap = new HashMap<>( ServiceXmlParserFactory.getInstance(project, DocumentNamespacesParser.class).getNamespaceMap() ); attachRepositoryNames(project, results, documentNameMap, DoctrineTypes.Manager.MONGO_DB, useClassNameAsLookupString, false); // add bundle document namespace attachRepositoryNames(project, results, EntityHelper.getWeakBundleNamespaces(project, documentNameMap, "Document"), DoctrineTypes.Manager.MONGO_DB, useClassNameAsLookupString, true); } // add custom doctrine classes Collection<DoctrineModelProviderParameter.DoctrineModel> doctrineModels = new ArrayList<>(); DoctrineModelProviderParameter containerLoaderExtensionParameter = new DoctrineModelProviderParameter(project, doctrineModels); for(DoctrineModelProvider provider : EntityHelper.MODEL_POINT_NAME.getExtensions()) { for(DoctrineModelProviderParameter.DoctrineModel doctrineModel: provider.collectModels(containerLoaderExtensionParameter)) { results.add(new DoctrineEntityLookupElement(doctrineModel.getName(), doctrineModel.getPhpClass(), useClassNameAsLookupString, false)); } } return results; }
for (fr.adrienbrault.idea.symfony2plugin.extension.ServiceCollector collectorEx : EXTENSIONS.getExtensions()) { if(parameter == null) { parameter = new ServiceCollectorParameter.Service(project, exps);
@NotNull public static List<TwigPath> getTwigNamespaces(@NotNull Project project, boolean includeSettings) { List<TwigPath> twigPaths = new ArrayList<>(); // load extension TwigNamespaceExtensionParameter parameter = new TwigNamespaceExtensionParameter(project); for (TwigNamespaceExtension namespaceExtension : EXTENSIONS.getExtensions()) { twigPaths.addAll(namespaceExtension.getNamespaces(parameter)); } // disable namespace explicitly disabled by user for(TwigPath twigPath: twigPaths) { TwigNamespaceSetting twigNamespaceSetting = findManagedTwigNamespace(project, twigPath); if(twigNamespaceSetting != null) { twigPath.setEnabled(false); } } twigPaths = getUniqueTwigTemplatesList(twigPaths); if(!includeSettings) { return twigPaths; } List<TwigNamespaceSetting> twigNamespaceSettings = Settings.getInstance(project).twigNamespaces; if(twigNamespaceSettings != null) { for(TwigNamespaceSetting twigNamespaceSetting: twigNamespaceSettings) { if(twigNamespaceSetting.isCustom()) { twigPaths.add(new TwigPath(twigNamespaceSetting.getPath(), twigNamespaceSetting.getNamespace(), twigNamespaceSetting.getNamespaceType(), true).setEnabled(twigNamespaceSetting.isEnabled())); } } } return twigPaths; }
for(DoctrineModelProvider provider : EntityHelper.MODEL_POINT_NAME.getExtensions()) { for(DoctrineModelProviderParameter.DoctrineModel doctrineModel: provider.collectModels(containerLoaderExtensionParameter)) { doctrineModels.add(new DoctrineModel(doctrineModel.getPhpClass(), doctrineModel.getName()));
private Pair<List<ProblemDescriptor>, Integer> getLocalInspectionsAtCaret(@NotNull String filename, @NotNull String content) { PsiElement psiFile = myFixture.configureByText(filename, content); int caretOffset = myFixture.getCaretOffset(); if(caretOffset <= 0) { fail("Please provide <caret> tag"); } ProblemsHolder problemsHolder = new ProblemsHolder(InspectionManager.getInstance(getProject()), psiFile.getContainingFile(), false); for (LocalInspectionEP localInspectionEP : LocalInspectionEP.LOCAL_INSPECTION.getExtensions()) { Object object = localInspectionEP.getInstance(); if(!(object instanceof LocalInspectionTool)) { continue; } final PsiElementVisitor psiElementVisitor = ((LocalInspectionTool) object).buildVisitor(problemsHolder, false); psiFile.acceptChildren(new PsiRecursiveElementVisitor() { @Override public void visitElement(PsiElement element) { psiElementVisitor.visitElement(element); super.visitElement(element); } }); psiElementVisitor.visitFile(psiFile.getContainingFile());; } return Pair.create(problemsHolder.getResults(), caretOffset); }
@NotNull public static Collection<PsiElement> getTargetsBySignature(@NotNull PhpToolboxDeclarationHandlerParameter parameter, @NotNull String target) { Collection<PsiElement> psiElements = new HashSet<>(); for (PhpToolboxTargetLocator locator : EXTENSIONS.getExtensions()) { psiElements.addAll( locator.getTargets(new TargetLocatorParameter(parameter, target)) ); } return psiElements; }