diff --git a/plugin/src/main/java/com/intellij/gwt/impl/i18n/PropertiesSearcher.java b/plugin/src/main/java/com/intellij/gwt/impl/i18n/PropertiesSearcher.java index f1ac968..8ce6e70 100644 --- a/plugin/src/main/java/com/intellij/gwt/impl/i18n/PropertiesSearcher.java +++ b/plugin/src/main/java/com/intellij/gwt/impl/i18n/PropertiesSearcher.java @@ -20,61 +20,46 @@ import com.intellij.lang.properties.IProperty; import com.intellij.lang.properties.psi.PropertiesFile; import consulo.annotation.component.ExtensionImpl; -import consulo.application.ApplicationManager; -import consulo.application.util.function.Computable; -import consulo.application.util.function.Processor; +import consulo.application.Application; import consulo.language.psi.PsiElement; import consulo.language.psi.search.DefinitionsScopedSearch; import consulo.language.psi.search.DefinitionsScopedSearchExecutor; - import jakarta.annotation.Nonnull; +import java.util.function.Predicate; +import java.util.function.Supplier; + /** * @author peter */ @ExtensionImpl -public class PropertiesSearcher implements DefinitionsScopedSearchExecutor -{ - @Override - public boolean execute(@Nonnull DefinitionsScopedSearch.SearchParameters queryParameters, @Nonnull Processor consumer) - { - final PsiElement sourceElement = queryParameters.getElement(); - if(sourceElement instanceof PsiMethod) - { - final IProperty[] properties = ApplicationManager.getApplication().runReadAction(new Computable() - { - @Override - public IProperty[] compute() - { - return GwtI18nManager.getInstance(sourceElement.getProject()).getProperties((PsiMethod) sourceElement); - } - }); - for(IProperty property : properties) - { - if(!consumer.process(property.getPsiElement())) - { - return false; - } - } - } - else if(sourceElement instanceof PsiClass) - { - final PropertiesFile[] files = ApplicationManager.getApplication().runReadAction(new Computable() - { - @Override - public PropertiesFile[] compute() - { - return GwtI18nManager.getInstance(sourceElement.getProject()).getPropertiesFiles((PsiClass) sourceElement); - } - }); - for(PropertiesFile file : files) - { - if(!consumer.process(file.getContainingFile())) - { - return false; - } - } - } - return true; - } +public class PropertiesSearcher implements DefinitionsScopedSearchExecutor { + @Override + public boolean execute( + @Nonnull DefinitionsScopedSearch.SearchParameters queryParameters, + @Nonnull Predicate consumer + ) { + final PsiElement sourceElement = queryParameters.getElement(); + if (sourceElement instanceof PsiMethod method) { + IProperty[] properties = Application.get().runReadAction( + (Supplier)() -> GwtI18nManager.getInstance(method.getProject()).getProperties(method) + ); + for (IProperty property : properties) { + if (!consumer.test(property.getPsiElement())) { + return false; + } + } + } + else if (sourceElement instanceof PsiClass psiClass) { + final PropertiesFile[] files = Application.get().runReadAction( + (Supplier)() -> GwtI18nManager.getInstance(psiClass.getProject()).getPropertiesFiles(psiClass) + ); + for (PropertiesFile file : files) { + if (!consumer.test(file.getContainingFile())) { + return false; + } + } + } + return true; + } } diff --git a/plugin/src/main/java/com/intellij/gwt/impl/references/search/GwtToHtmlTagIdReferencesSearcher.java b/plugin/src/main/java/com/intellij/gwt/impl/references/search/GwtToHtmlTagIdReferencesSearcher.java index a7382e2..4cec8dd 100644 --- a/plugin/src/main/java/com/intellij/gwt/impl/references/search/GwtToHtmlTagIdReferencesSearcher.java +++ b/plugin/src/main/java/com/intellij/gwt/impl/references/search/GwtToHtmlTagIdReferencesSearcher.java @@ -20,9 +20,10 @@ import com.intellij.gwt.module.model.GwtModule; import com.intellij.gwt.impl.references.GwtToHtmlTagReference; import com.intellij.java.language.psi.PsiLiteralExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import consulo.application.ReadAction; -import consulo.application.util.function.Processor; +import consulo.application.AccessRule; +import consulo.language.Language; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.language.psi.PsiReference; @@ -33,83 +34,79 @@ import consulo.xml.psi.xml.XmlAttribute; import consulo.xml.psi.xml.XmlAttributeValue; import consulo.xml.psi.xml.XmlTag; +import jakarta.annotation.Nonnull; + +import java.util.function.Predicate; /** * @author nik */ @ExtensionImpl -public class GwtToHtmlTagIdReferencesSearcher implements ReferencesSearchQueryExecutor -{ - @Override - public boolean execute(final ReferencesSearch.SearchParameters queryParameters, final Processor consumer) - { - return ReadAction.compute(() -> doExecute(queryParameters, consumer)); - } +public class GwtToHtmlTagIdReferencesSearcher implements ReferencesSearchQueryExecutor { + @Override + public boolean execute( + @Nonnull ReferencesSearch.SearchParameters queryParameters, + @Nonnull Predicate consumer + ) { + return AccessRule.read(() -> doExecute(queryParameters, consumer)); + } - private static boolean doExecute(final ReferencesSearch.SearchParameters queryParameters, final Processor consumer) - { - final PsiElement element = queryParameters.getElementToSearch(); - if(!(element instanceof XmlAttributeValue)) - { - return true; - } + @RequiredReadAction + private static boolean doExecute( + ReferencesSearch.SearchParameters queryParameters, + Predicate consumer + ) { + PsiElement element = queryParameters.getElementToSearch(); + if (!(element instanceof XmlAttributeValue attrValue)) { + return true; + } - final PsiElement parent = element.getParent(); - if(!(parent instanceof XmlAttribute) || !"id".equals(((XmlAttribute) parent).getLocalName())) - { - return true; - } - String id = ((XmlAttributeValue) element).getValue(); + PsiElement parent = element.getParent(); + if (!(parent instanceof XmlAttribute attr && "id".equals(attr.getLocalName()))) { + return true; + } + String id = attrValue.getValue(); - final PsiElement tag = parent.getParent(); - if(!(tag instanceof XmlTag)) - { - return true; - } + PsiElement tag = parent.getParent(); + if (!(tag instanceof XmlTag)) { + return true; + } - final PsiFile file = parent.getContainingFile(); - if(!file.getLanguage().equals(HTMLLanguage.INSTANCE) && !file.getLanguage().equals(XHTMLLanguage.INSTANCE)) - { - return true; - } + PsiFile file = parent.getContainingFile(); + Language language = file.getLanguage(); + if (!language.equals(HTMLLanguage.INSTANCE) && !language.equals(XHTMLLanguage.INSTANCE)) { + return true; + } - final GwtModulesManager gwtModulesManager = GwtModulesManager.getInstance(file.getProject()); - final VirtualFile virtualFile = file.getVirtualFile(); - if(virtualFile == null) - { - return true; - } + GwtModulesManager gwtModulesManager = GwtModulesManager.getInstance(file.getProject()); + VirtualFile virtualFile = file.getVirtualFile(); + if (virtualFile == null) { + return true; + } - final GwtModule gwtModule = gwtModulesManager.findGwtModuleByClientOrPublicFile(virtualFile); - if(gwtModule == null) - { - return true; - } + GwtModule gwtModule = gwtModulesManager.findGwtModuleByClientOrPublicFile(virtualFile); + if (gwtModule == null) { + return true; + } - final PsiSearchHelper searchHelper = PsiSearchHelper.SERVICE.getInstance(element.getProject()); - return searchHelper.processElementsWithWord(new TextOccurenceProcessor() - { - @Override - public boolean execute(PsiElement element, int offsetInElement) - { - if(!(element instanceof PsiLiteralExpression)) - { - return true; - } + PsiSearchHelper searchHelper = PsiSearchHelper.SERVICE.getInstance(element.getProject()); + return searchHelper.processElementsWithWord( + (element1, offsetInElement) -> { + if (!(element1 instanceof PsiLiteralExpression)) { + return true; + } - final PsiReference[] references = element.getReferences(); - for(PsiReference reference : references) - { - if(reference instanceof GwtToHtmlTagReference && reference.isReferenceTo(tag)) - { - if(!consumer.process(reference)) - { - return false; - } - } - } - return true; - } - }, queryParameters.getScope(), id, UsageSearchContext.IN_STRINGS, true); - } + for (PsiReference reference : element1.getReferences()) { + if (reference instanceof GwtToHtmlTagReference && reference.isReferenceTo(tag) && !consumer.test(reference)) { + return false; + } + } + return true; + }, + queryParameters.getScope(), + id, + UsageSearchContext.IN_STRINGS, + true + ); + } } diff --git a/plugin/src/main/java/com/intellij/gwt/impl/rpc/GwtAllOverridingServiceMethodsSearcher.java b/plugin/src/main/java/com/intellij/gwt/impl/rpc/GwtAllOverridingServiceMethodsSearcher.java index f6456d2..e9246d5 100644 --- a/plugin/src/main/java/com/intellij/gwt/impl/rpc/GwtAllOverridingServiceMethodsSearcher.java +++ b/plugin/src/main/java/com/intellij/gwt/impl/rpc/GwtAllOverridingServiceMethodsSearcher.java @@ -6,41 +6,38 @@ import com.intellij.java.language.psi.PsiClass; import com.intellij.java.language.psi.PsiMethod; import consulo.annotation.component.ExtensionImpl; -import consulo.application.util.function.Processor; import consulo.language.psi.PsiFile; +import consulo.util.lang.Couple; import consulo.util.lang.Pair; +import java.util.function.Predicate; + /** * @author nik */ @ExtensionImpl -public class GwtAllOverridingServiceMethodsSearcher extends GwtSearcherBase, AllOverridingMethodsSearch.SearchParameters> implements AllOverridingMethodsSearchExecutor -{ - @Override - protected PsiFile getContainingFile(final AllOverridingMethodsSearch.SearchParameters parameters) - { - return parameters.getPsiClass().getContainingFile(); - } +public class GwtAllOverridingServiceMethodsSearcher extends GwtSearcherBase, AllOverridingMethodsSearch.SearchParameters> + implements AllOverridingMethodsSearchExecutor { + @Override + protected PsiFile getContainingFile(final AllOverridingMethodsSearch.SearchParameters parameters) { + return parameters.getPsiClass().getContainingFile(); + } - @Override - public boolean doExecute(final AllOverridingMethodsSearch.SearchParameters queryParameters, final Processor> consumer) - { - PsiClass async = queryParameters.getPsiClass(); - PsiClass sync = RemoteServiceUtil.findSynchronousInterface(async); - if(sync != null) - { - for(PsiMethod method : async.getMethods()) - { - PsiMethod syncMethod = RemoteServiceUtil.findMethodInSync(method, sync); - if(syncMethod != null) - { - if(!consumer.process(Pair.create(method, syncMethod))) - { - return false; - } - } - } - } - return true; - } + @Override + public boolean doExecute( + AllOverridingMethodsSearch.SearchParameters queryParameters, + Predicate> consumer + ) { + PsiClass async = queryParameters.getPsiClass(); + PsiClass sync = RemoteServiceUtil.findSynchronousInterface(async); + if (sync != null) { + for (PsiMethod method : async.getMethods()) { + PsiMethod syncMethod = RemoteServiceUtil.findMethodInSync(method, sync); + if (syncMethod != null && !consumer.test(Couple.of(method, syncMethod))) { + return false; + } + } + } + return true; + } } diff --git a/plugin/src/main/java/com/intellij/gwt/impl/rpc/GwtAsyncMethodSearcher.java b/plugin/src/main/java/com/intellij/gwt/impl/rpc/GwtAsyncMethodSearcher.java index d4d4bbf..56ccec9 100644 --- a/plugin/src/main/java/com/intellij/gwt/impl/rpc/GwtAsyncMethodSearcher.java +++ b/plugin/src/main/java/com/intellij/gwt/impl/rpc/GwtAsyncMethodSearcher.java @@ -8,38 +8,35 @@ import com.intellij.java.language.psi.search.searches.SuperMethodsSearchExecutor; import com.intellij.java.language.psi.util.MethodSignatureBackedByPsiMethod; import consulo.annotation.component.ExtensionImpl; -import consulo.application.util.function.Processor; import consulo.language.psi.PsiFile; +import java.util.function.Predicate; + /** * @author nik */ @ExtensionImpl -public class GwtAsyncMethodSearcher extends GwtSearcherBase implements SuperMethodsSearchExecutor -{ - @Override - protected PsiFile getContainingFile(final SuperMethodsSearch.SearchParameters parameters) - { - return parameters.getMethod().getContainingFile(); - } +public class GwtAsyncMethodSearcher extends GwtSearcherBase + implements SuperMethodsSearchExecutor { + @Override + protected PsiFile getContainingFile(final SuperMethodsSearch.SearchParameters parameters) { + return parameters.getMethod().getContainingFile(); + } - @Override - public boolean doExecute(final SuperMethodsSearch.SearchParameters queryParameters, final Processor consumer) - { - PsiMethod method = queryParameters.getMethod(); - PsiClass sync = method.getContainingClass(); - PsiClass async = RemoteServiceUtil.findAsynchronousInterface(sync); - if(async != null) - { - PsiMethod asyncMethod = RemoteServiceUtil.findMethodInAsync(method, async); - if(asyncMethod != null) - { - if(!consumer.process(MethodSignatureBackedByPsiMethod.create(asyncMethod, PsiSubstitutor.EMPTY))) - { - return false; - } - } - } - return true; - } + @Override + public boolean doExecute( + final SuperMethodsSearch.SearchParameters queryParameters, + final Predicate consumer + ) { + PsiMethod method = queryParameters.getMethod(); + PsiClass sync = method.getContainingClass(); + PsiClass async = RemoteServiceUtil.findAsynchronousInterface(sync); + if (async != null) { + PsiMethod asyncMethod = RemoteServiceUtil.findMethodInAsync(method, async); + if (asyncMethod != null && !consumer.test(MethodSignatureBackedByPsiMethod.create(asyncMethod, PsiSubstitutor.EMPTY))) { + return false; + } + } + return true; + } } diff --git a/plugin/src/main/java/com/intellij/gwt/impl/rpc/GwtOverridingServiceMethodsSearcher.java b/plugin/src/main/java/com/intellij/gwt/impl/rpc/GwtOverridingServiceMethodsSearcher.java index b96b6ef..f6a2bb3 100644 --- a/plugin/src/main/java/com/intellij/gwt/impl/rpc/GwtOverridingServiceMethodsSearcher.java +++ b/plugin/src/main/java/com/intellij/gwt/impl/rpc/GwtOverridingServiceMethodsSearcher.java @@ -6,42 +6,38 @@ import com.intellij.java.language.psi.PsiClass; import com.intellij.java.language.psi.PsiMethod; import consulo.annotation.component.ExtensionImpl; -import consulo.application.util.function.Processor; import consulo.language.psi.PsiFile; +import java.util.function.Predicate; + /** * @author nik */ @ExtensionImpl -public class GwtOverridingServiceMethodsSearcher extends GwtSearcherBase implements OverridingMethodsSearchExecutor -{ - @Override - protected PsiFile getContainingFile(final OverridingMethodsSearch.SearchParameters parameters) - { - return parameters.getMethod().getContainingFile(); - } +public class GwtOverridingServiceMethodsSearcher extends GwtSearcherBase + implements OverridingMethodsSearchExecutor { + @Override + protected PsiFile getContainingFile(final OverridingMethodsSearch.SearchParameters parameters) { + return parameters.getMethod().getContainingFile(); + } - @Override - public boolean doExecute(final OverridingMethodsSearch.SearchParameters queryParameters, final Processor consumer) - { - PsiMethod method = queryParameters.getMethod(); - PsiClass async = method.getContainingClass(); - PsiClass sync = RemoteServiceUtil.findSynchronousInterface(async); - if(sync != null) - { - PsiMethod syncMethod = RemoteServiceUtil.findMethodInSync(method, sync); - if(syncMethod != null) - { - if(!consumer.process(syncMethod)) - { - return false; - } - if(!OverridingMethodsSearch.search(syncMethod, queryParameters.getScope(), queryParameters.isCheckDeep()).forEach(consumer)) - { - return false; - } - } - } - return true; - } + @Override + public boolean doExecute(OverridingMethodsSearch.SearchParameters queryParameters, Predicate consumer) { + PsiMethod method = queryParameters.getMethod(); + PsiClass async = method.getContainingClass(); + PsiClass sync = RemoteServiceUtil.findSynchronousInterface(async); + if (sync != null) { + PsiMethod syncMethod = RemoteServiceUtil.findMethodInSync(method, sync); + if (syncMethod != null) { + if (!consumer.test(syncMethod)) { + return false; + } + if (!OverridingMethodsSearch.search(syncMethod, queryParameters.getScope(), queryParameters.isCheckDeep()) + .forEach(consumer)) { + return false; + } + } + } + return true; + } } diff --git a/plugin/src/main/java/com/intellij/gwt/impl/rpc/GwtSearcherBase.java b/plugin/src/main/java/com/intellij/gwt/impl/rpc/GwtSearcherBase.java index 78fc2ba..2f36c18 100644 --- a/plugin/src/main/java/com/intellij/gwt/impl/rpc/GwtSearcherBase.java +++ b/plugin/src/main/java/com/intellij/gwt/impl/rpc/GwtSearcherBase.java @@ -1,41 +1,35 @@ package com.intellij.gwt.impl.rpc; -import consulo.application.ApplicationManager; -import consulo.application.util.function.Computable; -import consulo.application.util.function.Processor; +import consulo.application.Application; import consulo.application.util.query.QueryExecutor; import consulo.gwt.module.extension.GoogleGwtModuleExtension; import consulo.gwt.base.module.extension.GwtModuleExtensionUtil; import consulo.language.psi.PsiFile; +import jakarta.annotation.Nonnull; + +import java.util.function.Predicate; +import java.util.function.Supplier; /** * @author nik */ -public abstract class GwtSearcherBase implements QueryExecutor -{ - @Override - public boolean execute(final Param queryParameters, final Processor consumer) - { - return ApplicationManager.getApplication().runReadAction(new Computable() - { - @Override - public Boolean compute() - { - PsiFile file = getContainingFile(queryParameters); - if(file != null) - { - GoogleGwtModuleExtension gwtFacet = GwtModuleExtensionUtil.findModuleExtension(file.getProject(), file.getVirtualFile()); - if(gwtFacet != null) - { - return doExecute(queryParameters, consumer); - } - } - return true; - } - }); - } +public abstract class GwtSearcherBase implements QueryExecutor { + @Override + public boolean execute(@Nonnull Param queryParameters, @Nonnull Predicate consumer) { + return Application.get().runReadAction((Supplier)() -> { + PsiFile file = getContainingFile(queryParameters); + if (file != null) { + GoogleGwtModuleExtension gwtFacet = + GwtModuleExtensionUtil.findModuleExtension(file.getProject(), file.getVirtualFile()); + if (gwtFacet != null) { + return doExecute(queryParameters, consumer); + } + } + return true; + }); + } - protected abstract PsiFile getContainingFile(Param parameters); + protected abstract PsiFile getContainingFile(Param parameters); - protected abstract boolean doExecute(final Param queryParameters, final Processor consumer); + protected abstract boolean doExecute(Param queryParameters, Predicate consumer); }