Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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<? super PsiElement> consumer)
{
final PsiElement sourceElement = queryParameters.getElement();
if(sourceElement instanceof PsiMethod)
{
final IProperty[] properties = ApplicationManager.getApplication().runReadAction(new Computable<IProperty[]>()
{
@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<PropertiesFile[]>()
{
@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<? super PsiElement> consumer
) {
final PsiElement sourceElement = queryParameters.getElement();
if (sourceElement instanceof PsiMethod method) {
IProperty[] properties = Application.get().runReadAction(
(Supplier<IProperty[]>)() -> 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<PropertiesFile[]>)() -> GwtI18nManager.getInstance(psiClass.getProject()).getPropertiesFiles(psiClass)
);
for (PropertiesFile file : files) {
if (!consumer.test(file.getContainingFile())) {
return false;
}
}
}
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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<? super PsiReference> consumer)
{
return ReadAction.compute(() -> doExecute(queryParameters, consumer));
}
public class GwtToHtmlTagIdReferencesSearcher implements ReferencesSearchQueryExecutor {
@Override
public boolean execute(
@Nonnull ReferencesSearch.SearchParameters queryParameters,
@Nonnull Predicate<? super PsiReference> consumer
) {
return AccessRule.read(() -> doExecute(queryParameters, consumer));
}

private static boolean doExecute(final ReferencesSearch.SearchParameters queryParameters, final Processor<? super PsiReference> consumer)
{
final PsiElement element = queryParameters.getElementToSearch();
if(!(element instanceof XmlAttributeValue))
{
return true;
}
@RequiredReadAction
private static boolean doExecute(
ReferencesSearch.SearchParameters queryParameters,
Predicate<? super PsiReference> 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
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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<Pair<PsiMethod, PsiMethod>, AllOverridingMethodsSearch.SearchParameters> implements AllOverridingMethodsSearchExecutor
{
@Override
protected PsiFile getContainingFile(final AllOverridingMethodsSearch.SearchParameters parameters)
{
return parameters.getPsiClass().getContainingFile();
}
public class GwtAllOverridingServiceMethodsSearcher extends GwtSearcherBase<Pair<PsiMethod, PsiMethod>, 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<? super Pair<PsiMethod, PsiMethod>> 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<? super Pair<PsiMethod, PsiMethod>> 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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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<MethodSignatureBackedByPsiMethod, SuperMethodsSearch.SearchParameters> implements SuperMethodsSearchExecutor
{
@Override
protected PsiFile getContainingFile(final SuperMethodsSearch.SearchParameters parameters)
{
return parameters.getMethod().getContainingFile();
}
public class GwtAsyncMethodSearcher extends GwtSearcherBase<MethodSignatureBackedByPsiMethod, SuperMethodsSearch.SearchParameters>
implements SuperMethodsSearchExecutor {
@Override
protected PsiFile getContainingFile(final SuperMethodsSearch.SearchParameters parameters) {
return parameters.getMethod().getContainingFile();
}

@Override
public boolean doExecute(final SuperMethodsSearch.SearchParameters queryParameters, final Processor<? super MethodSignatureBackedByPsiMethod> 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<? super MethodSignatureBackedByPsiMethod> 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;
}
}
Loading
Loading