From 722c476dbb8fffd0653b95cca81fd96e3540cbde Mon Sep 17 00:00:00 2001 From: UNV Date: Sat, 25 Jul 2026 01:56:07 +0300 Subject: [PATCH 1/2] Adding missing @Override annotations (part 2). Adding RRA/RWA/RUI annotations. Some refactoring. --- .../aop/jam/AopHighlightErrorFilter.java | 21 +-- .../intellij/aop/jam/AopIntroductionImpl.java | 18 ++- .../intellij/aop/jam/AopJamContributor.java | 1 + .../intellij/aop/jam/AopJavaAnnotator.java | 5 +- .../com/intellij/aop/jam/AopMetaData.java | 7 +- .../com/intellij/aop/jam/AopModelImpl.java | 3 +- .../intellij/aop/jam/AopModuleService.java | 6 +- .../com/intellij/aop/jam/AopPointcutImpl.java | 17 ++- .../aop/jam/ArgNamesErrorsInspection.java | 23 ++-- .../aop/jam/ArgNamesWarningsInspection.java | 48 ++----- .../aop/jam/AroundAdviceStyleInspection.java | 12 +- .../java/com/intellij/aop/lexer/AopLexer.java | 13 +- .../AopConstructorReferenceExpression.java | 2 +- .../com/intellij/aop/psi/AopElementBase.java | 6 +- .../com/intellij/aop/psi/AopElementTypes.java | 3 +- .../aop/psi/AopGenericTypeExpression.java | 12 +- .../aop/psi/AopImplicitUsageProvider.java | 3 + .../aop/psi/AopMemberReferenceExpression.java | 22 +-- .../com/intellij/aop/psi/AopModifierList.java | 5 +- .../intellij/aop/psi/AopNotExpression.java | 21 ++- .../intellij/aop/psi/AopParameterList.java | 8 +- .../aop/psi/AopParameterReferenceTarget.java | 6 + .../aop/psi/AopParenthesizedExpression.java | 12 +- .../aop/psi/AopPointcutExpressionFile.java | 9 ++ .../psi/AopPointcutExpressionFileType.java | 10 +- ...AopPointcutExpressionParserDefinition.java | 12 +- .../intellij/aop/psi/AopPointcutTypes.java | 103 +++++++++----- .../com/intellij/aop/psi/AopPrattParser.java | 51 ++++--- .../aop/psi/AopPrimitiveTypeExpression.java | 9 +- .../aop/psi/AopPsiTypePatternsUtil.java | 60 ++++---- .../aop/psi/AopReferenceExpression.java | 130 +++++++++++------- .../aop/psi/AopSubtypeExpression.java | 9 +- .../aop/psi/AopSyntaxHighlighter.java | 4 +- .../com/intellij/aop/psi/AopThrowsList.java | 4 + .../intellij/aop/psi/AopTypeExpression.java | 11 +- .../aop/psi/AopTypeParameterList.java | 5 +- .../aop/psi/AopWildcardExpression.java | 9 +- .../com/intellij/aop/psi/ArrayPattern.java | 6 +- .../com/intellij/aop/jam/AopModelTest.java | 4 + .../intellij/aop/psi/AopHighlightingTest.java | 1 + .../intellij/aop/psi/AopInjectionTest.java | 46 +++++-- .../aop/psi/AopJavaHighlightingTest.java | 1 + .../intellij/aop/psi/AopQuickFixesTest.java | 6 +- .../intellij/aop/psi/AopReferencesTest.java | 8 +- .../psi/AopSpringJavaHighlightingTest.java | 1 + .../model/xml/aop/AfterReturningAdvice.java | 3 +- .../impl/ide/model/xml/aop/AopConfig.java | 12 +- .../model/xml/aop/AopPointcutConverter.java | 17 +-- .../ide/model/xml/context/AspectjWeaving.java | 19 ++- .../impl/model/aop/AspectjAutoproxyImpl.java | 1 + 50 files changed, 508 insertions(+), 317 deletions(-) diff --git a/aop-common/src/main/java/com/intellij/aop/jam/AopHighlightErrorFilter.java b/aop-common/src/main/java/com/intellij/aop/jam/AopHighlightErrorFilter.java index a57b9955..652ec2ec 100644 --- a/aop-common/src/main/java/com/intellij/aop/jam/AopHighlightErrorFilter.java +++ b/aop-common/src/main/java/com/intellij/aop/jam/AopHighlightErrorFilter.java @@ -17,17 +17,18 @@ */ @ExtensionImpl public class AopHighlightErrorFilter extends HighlightErrorFilter { + @Override + public boolean shouldHighlightErrorElement(@Nonnull PsiErrorElement element) { + return !value(element); + } - public boolean shouldHighlightErrorElement(@Nonnull PsiErrorElement element) { - return !value(element); - } + public static boolean value(PsiErrorElement psiErrorElement) { + if (psiErrorElement.getContainingFile() instanceof AopPointcutExpressionFile pointcutExpressionFile) { + if (pointcutExpressionFile.getAopModel().getAdvisedElementsSearcher().shouldSuppressErrors()) { + return true; + } + } - public static boolean value(PsiErrorElement psiErrorElement) { - PsiFile file = psiErrorElement.getContainingFile(); - if (file instanceof AopPointcutExpressionFile) { - if (((AopPointcutExpressionFile)file).getAopModel().getAdvisedElementsSearcher().shouldSuppressErrors()) return true; + return false; } - - return false; - } } diff --git a/aop-common/src/main/java/com/intellij/aop/jam/AopIntroductionImpl.java b/aop-common/src/main/java/com/intellij/aop/jam/AopIntroductionImpl.java index 7083c8c0..d5bd96b8 100644 --- a/aop-common/src/main/java/com/intellij/aop/jam/AopIntroductionImpl.java +++ b/aop-common/src/main/java/com/intellij/aop/jam/AopIntroductionImpl.java @@ -1,7 +1,6 @@ /* * Copyright (c) 2000-2007 JetBrains s.r.o. All Rights Reserved. */ - package com.intellij.aop.jam; import com.intellij.aop.AopIntroduction; @@ -20,6 +19,7 @@ import com.intellij.jam.reflect.JamAttributeMeta; import com.intellij.jam.reflect.JamStringAttributeMeta; import com.intellij.java.language.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.language.psi.PsiManager; @@ -49,32 +49,40 @@ public AopReferenceHolder fromString(@Nullable String s, JamStringAttributeEleme @Nonnull @JamAnnotation(AopConstants.DECLARE_PARENTS_ANNO) @JamAttribute(AopConstants.DEFAULT_IMPL_PARAM) + @Override public abstract JamClassAttributeElement getDefaultImpl(); + @Override public XmlTag getXmlTag() { return null; } + @Override public Module getModule() { return null; } + @Override public PsiAnnotation getIdentifyingPsiElement() { return DECLARE_PARENTS_META.getAnnotation(getPsiElement()); } + @Override public PsiFile getContainingFile() { return getPsiElement().getContainingFile(); } @Nonnull + @Override public GenericValue getImplementInterface() { - return new ReadOnlyGenericValue() { + return new ReadOnlyGenericValue<>() { + @Override public PsiClass getValue() { PsiType type = getPsiElement().getType(); return type instanceof PsiClassType ? ((PsiClassType)type).resolve() : null; } + @Override public String getStringValue() { return getPsiElement().getType().getCanonicalText(); } @@ -82,6 +90,7 @@ public String getStringValue() { } @Nonnull + @Override public GenericValue getTypesMatching() { return DECLARE_PARENTS_META.getAttribute(getPsiElement(), VALUE_META); } @@ -89,9 +98,10 @@ public GenericValue getTypesMatching() { @Nullable public static AopReferenceHolder getTypesMatchingPattern(@Nullable PsiElement value) { PsiPointcutExpression expression = AopPointcutImpl.getPsiPointcutExpression(value); - return expression instanceof PsiTargetExpression ? ((PsiTargetExpression)expression).getTypeReference() : null; + return expression instanceof PsiTargetExpression target ? target.getTypeReference() : null; } + @Override public PsiManager getPsiManager() { return getPsiElement().getManager(); } @@ -100,6 +110,8 @@ public PsiManager getPsiManager() { @JamPsiConnector public abstract PsiField getPsiElement(); + @Override + @RequiredReadAction public boolean isValid() { return getPsiElement().isValid(); } diff --git a/aop-common/src/main/java/com/intellij/aop/jam/AopJamContributor.java b/aop-common/src/main/java/com/intellij/aop/jam/AopJamContributor.java index 677c8e86..9e6720bc 100644 --- a/aop-common/src/main/java/com/intellij/aop/jam/AopJamContributor.java +++ b/aop-common/src/main/java/com/intellij/aop/jam/AopJamContributor.java @@ -15,6 +15,7 @@ */ @ExtensionImpl public class AopJamContributor extends SemContributor { + @Override public void registerSemProviders(SemRegistrar registrar) { AopAspectImpl.ASPECT_META.register(registrar, psiClass().withAnnotation(AopConstants.ASPECT_ANNO).andNot(psiElement().compiled())); diff --git a/aop-common/src/main/java/com/intellij/aop/jam/AopJavaAnnotator.java b/aop-common/src/main/java/com/intellij/aop/jam/AopJavaAnnotator.java index 86b8d08f..84aa6f14 100644 --- a/aop-common/src/main/java/com/intellij/aop/jam/AopJavaAnnotator.java +++ b/aop-common/src/main/java/com/intellij/aop/jam/AopJavaAnnotator.java @@ -338,8 +338,9 @@ public static NavigationGutterIconBuilder addNavigationToIntercepted final AopAdvisedElementsSearcher searcher) { NavigationGutterIconBuilder builder = NavigationGutterIconBuilder.create(createFromIcon(advice.getAdviceType().getAdviceIcon())) - .setTargets(new NotNullLazyValue>() { + .setTargets(new NotNullLazyValue<>() { @Nonnull + @Override public Collection compute() { if (!advice.isValid()) return Collections.emptyList(); @@ -398,7 +399,7 @@ public static Map getBoundAdvices(PsiClass psiClass) { CachedValue> value = psiClass.getUserData(BOUND_ADVICES_KEY); if (value == null) { psiClass.putUserData(BOUND_ADVICES_KEY, value = CachedValuesManager.getManager(psiClass.getProject()).createCachedValue(() -> { - Module module = psiClass.getModule(); + Module module = psiClass.getModule(); if (module == null) return CachedValueProvider.Result.create(Collections.emptyMap(), PsiModificationTracker.MODIFICATION_COUNT); diff --git a/aop-common/src/main/java/com/intellij/aop/jam/AopMetaData.java b/aop-common/src/main/java/com/intellij/aop/jam/AopMetaData.java index d7466025..c7c88090 100644 --- a/aop-common/src/main/java/com/intellij/aop/jam/AopMetaData.java +++ b/aop-common/src/main/java/com/intellij/aop/jam/AopMetaData.java @@ -15,24 +15,27 @@ public class AopMetaData implements PsiMetaData { private PsiAnnotation myAnnotation; + @Override public PsiElement getDeclaration() { return myAnnotation; } - @NonNls + @Override public String getName(PsiElement context) { return getName(); } - @NonNls + @Override public final String getName() { return ((PsiMethod)myAnnotation.getParent().getParent()).getName(); } + @Override public void init(PsiElement element) { myAnnotation = (PsiAnnotation) element; } + @Override public Object[] getDependences() { return new Object[]{myAnnotation}; } diff --git a/aop-common/src/main/java/com/intellij/aop/jam/AopModelImpl.java b/aop-common/src/main/java/com/intellij/aop/jam/AopModelImpl.java index 529ac964..60d7a118 100644 --- a/aop-common/src/main/java/com/intellij/aop/jam/AopModelImpl.java +++ b/aop-common/src/main/java/com/intellij/aop/jam/AopModelImpl.java @@ -22,12 +22,13 @@ public AopModelImpl(@Nonnull consulo.module.Module module) { myModule = module; } + @Override public List getAspects() { return JamService.getJamService(myModule.getProject()).getJamClassElements(AopAspectImpl.ASPECT_META, AopConstants.ASPECT_ANNO, GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(myModule)); } + @Override public List getPointcuts() { return JamService.getJamService(myModule.getProject()).getJamMethodElements(AopPointcutImpl.POINTCUT_METHOD_META, AopConstants.POINTCUT_ANNO, GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(myModule)); } - } diff --git a/aop-common/src/main/java/com/intellij/aop/jam/AopModuleService.java b/aop-common/src/main/java/com/intellij/aop/jam/AopModuleService.java index 1e29c8d9..9591f52f 100644 --- a/aop-common/src/main/java/com/intellij/aop/jam/AopModuleService.java +++ b/aop-common/src/main/java/com/intellij/aop/jam/AopModuleService.java @@ -34,10 +34,12 @@ public class AopModuleService implements Disposable { private final NotNullLazyValue myModel; private static final AopModel EMPTY_AOP_MODEL = new AopModel() { + @Override public List getAspects() { return Collections.emptyList(); } + @Override public List getPointcuts() { return Collections.emptyList(); } @@ -55,8 +57,9 @@ public static AopModel getAopModel(@Nullable Module module) { @Inject public AopModuleService(final @Nonnull Module module) { - myModel = new NotNullLazyValue() { + myModel = new NotNullLazyValue<>() { @Nonnull + @Override protected AopModelImpl compute() { return new AopModelImpl(module); } @@ -88,6 +91,7 @@ public synchronized AopModelImpl getModel() { return myModel.getValue(); } + @Override public void dispose() { } } diff --git a/aop-common/src/main/java/com/intellij/aop/jam/AopPointcutImpl.java b/aop-common/src/main/java/com/intellij/aop/jam/AopPointcutImpl.java index 65809f62..6ecd7468 100644 --- a/aop-common/src/main/java/com/intellij/aop/jam/AopPointcutImpl.java +++ b/aop-common/src/main/java/com/intellij/aop/jam/AopPointcutImpl.java @@ -19,6 +19,7 @@ import com.intellij.java.language.psi.PsiAnnotationMemberValue; import com.intellij.java.language.psi.PsiBinaryExpression; import com.intellij.java.language.psi.PsiMethod; +import consulo.annotation.access.RequiredReadAction; import consulo.document.util.TextRange; import consulo.language.inject.InjectedLanguageManager; import consulo.language.psi.PsiElement; @@ -37,10 +38,12 @@ */ public abstract class AopPointcutImpl implements JamElement, AopPointcut, PointcutContainer { private static final JamAnnotationMeta POINTCUT_META = new JamAnnotationMeta(AopConstants.POINTCUT_ANNO); - public static final JamMethodMeta POINTCUT_METHOD_META = new JamMethodMeta(AopPointcutImpl.class); + public static final JamMethodMeta POINTCUT_METHOD_META = new JamMethodMeta<>(AopPointcutImpl.class); private static final JamStringAttributeMeta.Single ARG_NAMES_META = JamAttributeMeta.singleString("argNames"); + @Override + @RequiredReadAction public GenericValue getExpression() { JamStringAttributeMeta.Single meta = JamAttributeMeta.singleString("value", new JamConverter() { @@ -52,32 +55,38 @@ public PsiPointcutExpression fromString(@Nullable String s, JamStringAttributeEl return POINTCUT_META.getAttribute(getPsiElement(), meta); } + @Override public PsiElement getIdentifyingPsiElement() { PsiAnnotation annotation = getAnnotation(); return annotation == null ? getPsiElement() : annotation; } + @Override public JamStringAttributeElement getArgNames() { return POINTCUT_META.getAttribute(getPsiElement(), ARG_NAMES_META); } + @Override public GenericValue getQualifiedName() { return ReadOnlyGenericValue.getInstance(getPsiElement().getContainingClass().getQualifiedName() + "." + getPsiElement().getName()); } + @Override public int getParameterCount() { return getPsiElement().getParameterList().getParametersCount(); } @Nullable + @RequiredReadAction protected PsiPointcutExpression getPointcutExpression(@Nullable PsiAnnotationMemberValue value) { return getPsiPointcutExpression(value); } @Nullable + @RequiredReadAction public static PsiPointcutExpression getPsiPointcutExpression(@Nullable PsiElement value) { - if (value instanceof PsiBinaryExpression) { - return getPsiPointcutExpression(((PsiBinaryExpression)value).getLOperand()); + if (value instanceof PsiBinaryExpression binaryExpr) { + return getPsiPointcutExpression(binaryExpr.getLOperand()); } if (value instanceof PsiLanguageInjectionHost) { @@ -93,6 +102,7 @@ public static PsiPointcutExpression getPsiPointcutExpression(@Nullable PsiElemen } @Nullable + @Override public PsiAnnotation getAnnotation() { return POINTCUT_META.getAnnotation(getPsiElement()); } @@ -105,6 +115,7 @@ public PsiManager getPsiManager() { @JamPsiConnector public abstract PsiMethod getPsiElement(); + @RequiredReadAction public boolean isValid() { return getPsiElement().isValid(); } diff --git a/aop-common/src/main/java/com/intellij/aop/jam/ArgNamesErrorsInspection.java b/aop-common/src/main/java/com/intellij/aop/jam/ArgNamesErrorsInspection.java index a98c1579..a03be5c5 100644 --- a/aop-common/src/main/java/com/intellij/aop/jam/ArgNamesErrorsInspection.java +++ b/aop-common/src/main/java/com/intellij/aop/jam/ArgNamesErrorsInspection.java @@ -10,7 +10,6 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.aop.localize.AopLocalize; -import consulo.application.util.function.Processor; import consulo.document.util.TextRange; import consulo.language.editor.inspection.ProblemHighlightType; import consulo.language.editor.inspection.ProblemsHolder; @@ -35,14 +34,14 @@ @ExtensionImpl public class ArgNamesErrorsInspection extends AbstractArgNamesInspection { @Nonnull + @Override public HighlightDisplayLevel getDefaultLevel() { return HighlightDisplayLevel.ERROR; } - protected void checkAnnotation( - PsiParameter[] parameters, ProblemsHolder holder, - ArgNamesManipulator manipulator, PsiMethod method - ) { + @Override + @RequiredReadAction + protected void checkAnnotation(PsiParameter[] parameters, ProblemsHolder holder, ArgNamesManipulator manipulator, PsiMethod method) { String names = manipulator.getArgNames(); if (names != null) { String[] strings = names.trim().split(","); @@ -102,11 +101,8 @@ else if (psiElement instanceof PsiParameter) { for (PsiParameter parameter : parameters) { if (!LocalAopModel.isJoinPointParamer(parameter)) { - boolean hasRef = !ReferencesSearch.search(parameter).forEach(new Processor() { - public boolean process(PsiReference reference) { - return !(reference.getElement().getContainingFile() instanceof AopPointcutExpressionFile); - } - }); + boolean hasRef = !ReferencesSearch.search(parameter) + .forEach(reference -> !(reference.getElement().getContainingFile() instanceof AopPointcutExpressionFile)); if (!hasRef && !parameter.equals(manipulator.getReturningParameter()) && !parameter.equals(manipulator.getThrowingParameter())) { holder.newProblem(AopLocalize.unboundPointcutParameter(parameter.getName())) .range(manipulator.getArgNamesProblemElement()) @@ -127,13 +123,12 @@ private static void addAnnoReferenceProblem(ProblemsHolder holder, PsiReference LocalizeValue message = ProblemsHolder.unresolvedReferenceMessage(returningReference); ProblemHighlightType highlightType = emptyRange || !(element instanceof PsiLiteralExpression || element instanceof XmlElement) ? ProblemHighlightType.GENERIC_ERROR_OR_WARNING : ProblemHighlightType.LIKE_UNKNOWN_SYMBOL; - holder.registerProblem(InspectionManager.getInstance(element.getProject()).createProblemDescriptor(element, range, message.get(), - highlightType - )); + holder.registerProblem(InspectionManager.getInstance(element.getProject()) + .createProblemDescriptor(element, range, message.get(), highlightType)); } public static List getGeneralArgumentNames(PsiParameter[] parameters) { - List actualNames = new ArrayList(); + List actualNames = new ArrayList<>(); for (PsiParameter parameter : parameters) { actualNames.add(parameter.getName()); } diff --git a/aop-common/src/main/java/com/intellij/aop/jam/ArgNamesWarningsInspection.java b/aop-common/src/main/java/com/intellij/aop/jam/ArgNamesWarningsInspection.java index 581cd493..99eee475 100644 --- a/aop-common/src/main/java/com/intellij/aop/jam/ArgNamesWarningsInspection.java +++ b/aop-common/src/main/java/com/intellij/aop/jam/ArgNamesWarningsInspection.java @@ -6,20 +6,17 @@ import com.intellij.aop.AopAdviceType; import com.intellij.aop.ArgNamesManipulator; import com.intellij.aop.LocalAopModel; -import com.intellij.aop.psi.PsiThisExpression; import com.intellij.aop.psi.*; +import com.intellij.aop.psi.PsiThisExpression; import com.intellij.java.language.psi.*; import consulo.annotation.component.ExtensionImpl; import consulo.aop.localize.AopLocalize; -import consulo.application.util.function.Processor; import consulo.language.editor.inspection.ProblemsHolder; import consulo.language.editor.rawHighlight.HighlightDisplayLevel; -import consulo.language.psi.PsiReference; import consulo.language.psi.search.ReferencesSearch; import consulo.language.psi.util.PsiTreeUtil; import consulo.localize.LocalizeValue; import consulo.util.collection.ContainerUtil; -import consulo.util.lang.function.Condition; import jakarta.annotation.Nonnull; import java.util.HashSet; @@ -32,10 +29,12 @@ @ExtensionImpl public class ArgNamesWarningsInspection extends AbstractArgNamesInspection { @Nonnull + @Override public HighlightDisplayLevel getDefaultLevel() { return HighlightDisplayLevel.WARNING; } + @Override protected void checkAnnotation( PsiParameter[] parameters, ProblemsHolder holder, @@ -96,11 +95,8 @@ private static boolean canInferParameters(PsiParameter[] parameters, ArgNamesMan List canBePrimitive = findParametersUsedInPointcuts(set, PsiArgsExpression.class); if (canBePrimitive.size() == 1) { - List primitives = ContainerUtil.findAll(set, new Condition() { - public boolean value(PsiParameter psiParameter) { - return psiParameter.getType() instanceof PsiPrimitiveType; - } - }); + List primitives = + ContainerUtil.findAll(set, psiParameter -> psiParameter.getType() instanceof PsiPrimitiveType); if (primitives.size() == 1) { set.removeAll(primitives); @@ -125,34 +121,20 @@ public boolean value(PsiParameter psiParameter) { return false; } - private static List findParametersUsedInPointcuts(Set set, final Class designatorClass) { - return ContainerUtil.findAll(set, new Condition() { - public boolean value(PsiParameter psiParameter) { - return !ReferencesSearch.search(psiParameter).forEach(new Processor() { - public boolean process(PsiReference reference) { - if (reference instanceof AopReferenceExpression) { - if (designatorClass.isInstance(PsiTreeUtil.getParentOfType( - (AopReferenceExpression) reference, - PsiPointcutExpression.class - ))) { - return false; - } - } - return true; - } - }); - } - }); + private static List findParametersUsedInPointcuts(Set set, Class designatorClass) { + return ContainerUtil.findAll( + set, + psiParameter -> !ReferencesSearch.search(psiParameter).forEach( + reference -> !(reference instanceof AopReferenceExpression refExpr) + || !designatorClass.isInstance(PsiTreeUtil.getParentOfType(refExpr, PsiPointcutExpression.class)) + ) + ); } private static boolean containsOnlyOneParameter(PsiMethod method, Set set, String className) { - final PsiClassType baseType = JavaPsiFacade.getInstance(method.getManager().getProject()).getElementFactory() + PsiClassType baseType = JavaPsiFacade.getInstance(method.getManager().getProject()).getElementFactory() .createTypeByFQClassName(className, method.getResolveScope()); - List instanceofs = ContainerUtil.findAll(set, new Condition() { - public boolean value(PsiParameter psiParameter) { - return baseType.isAssignableFrom(psiParameter.getType()); - } - }); + List instanceofs = ContainerUtil.findAll(set, psiParameter -> baseType.isAssignableFrom(psiParameter.getType())); if (instanceofs.size() == 1) { set.removeAll(instanceofs); if (set.isEmpty()) { diff --git a/aop-common/src/main/java/com/intellij/aop/jam/AroundAdviceStyleInspection.java b/aop-common/src/main/java/com/intellij/aop/jam/AroundAdviceStyleInspection.java index df6b793b..422e5a91 100644 --- a/aop-common/src/main/java/com/intellij/aop/jam/AroundAdviceStyleInspection.java +++ b/aop-common/src/main/java/com/intellij/aop/jam/AroundAdviceStyleInspection.java @@ -5,10 +5,10 @@ package com.intellij.aop.jam; import com.intellij.aop.AopAdviceType; -import com.intellij.aop.AopBundle; import com.intellij.aop.LocalAopModel; import com.intellij.aop.psi.AopPointcutExpressionFile; import com.intellij.java.language.psi.*; +import consulo.annotation.access.RequiredWriteAction; import consulo.annotation.component.ExtensionImpl; import consulo.aop.localize.AopLocalize; import consulo.language.editor.inspection.LocalQuickFix; @@ -18,7 +18,6 @@ import consulo.localize.LocalizeValue; import consulo.logging.Logger; import consulo.project.Project; - import jakarta.annotation.Nonnull; /** @@ -28,6 +27,7 @@ public class AroundAdviceStyleInspection extends AbstractAopInspection { private static final Logger LOG = Logger.getInstance(AroundAdviceStyleInspection.class); + @Override protected void checkAopMethod( final PsiMethod pointcutMethod, LocalAopModel model, @@ -44,14 +44,15 @@ protected void checkAopMethod( holder.newProblem(AopLocalize.aroundAdviceShouldReturnSomething()) .range(model.getArgNamesManipulator().getCommonProblemElement()) .withFix(new LocalQuickFix() { + @Override + @RequiredWriteAction public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descriptor) { if (!pointcutMethod.isValid()) { return; } try { - PsiClassType object = - PsiType.getJavaLangObject(pointcutMethod.getManager(), pointcutMethod.getResolveScope()); + PsiClassType object = PsiType.getJavaLangObject(pointcutMethod.getManager(), pointcutMethod.getResolveScope()); pointcutMethod.getReturnTypeElement().replace(factory.createTypeElement(object)); } catch (IncorrectOperationException e) { @@ -75,10 +76,13 @@ public LocalizeValue getName() { .range(model.getArgNamesManipulator().getCommonProblemElement()) .withFix(new LocalQuickFix() { @Nonnull + @Override public LocalizeValue getName() { return AopLocalize.addPjpParameter(); } + @Override + @RequiredWriteAction public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descriptor) { if (!pointcutMethod.isValid()) { return; diff --git a/aop-common/src/main/java/com/intellij/aop/lexer/AopLexer.java b/aop-common/src/main/java/com/intellij/aop/lexer/AopLexer.java index c0b5f892..ee7ed452 100644 --- a/aop-common/src/main/java/com/intellij/aop/lexer/AopLexer.java +++ b/aop-common/src/main/java/com/intellij/aop/lexer/AopLexer.java @@ -1,19 +1,17 @@ /* * Copyright (c) 2000-2007 JetBrains s.r.o. All Rights Reserved. */ - package com.intellij.aop.lexer; import com.intellij.aop.psi.AopElementType; import com.intellij.aop.psi.AopElementTypes; import com.intellij.aop.psi.AopPointcutTypes; -import consulo.language.ast.TokenSet; -import consulo.language.lexer.LexerPosition; import consulo.language.ast.IElementType; +import consulo.language.ast.TokenSet; import consulo.language.lexer.DelegateLexer; import consulo.language.lexer.FlexAdapter; +import consulo.language.lexer.LexerPosition; import consulo.language.lexer.MergingLexerAdapter; -import org.jetbrains.annotations.NonNls; import java.util.HashMap; import java.util.Map; @@ -22,8 +20,8 @@ * @author peter */ public class AopLexer extends DelegateLexer implements AopElementTypes { - @NonNls public static final Map PRIMITIVE_TYPES = new HashMap(); - @NonNls public static final Map LOGICAL_OP_TYPES = new HashMap(); + public static final Map PRIMITIVE_TYPES = new HashMap<>(); + public static final Map LOGICAL_OP_TYPES = new HashMap<>(); static { PRIMITIVE_TYPES.put("int", AOP_INT); @@ -48,6 +46,7 @@ public AopLexer() { super(new MergingLexerAdapter(new FlexAdapter(new _AopLexer()), TokenSet.EMPTY)); } + @Override public IElementType getTokenType() { IElementType tokenType = super.getTokenType(); if (tokenType == null) return tokenType; @@ -68,7 +67,7 @@ public IElementType getTokenType() { } if (AOP_IDENTIFIER == tokenType) { - @NonNls String text = getTokenText(); + String text = getTokenText(); AopElementType primType = PRIMITIVE_TYPES.get(text); if (primType != null) return primType; diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopConstructorReferenceExpression.java b/aop-common/src/main/java/com/intellij/aop/psi/AopConstructorReferenceExpression.java index 7ecd45f8..4ac6a220 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopConstructorReferenceExpression.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopConstructorReferenceExpression.java @@ -16,8 +16,8 @@ public AopConstructorReferenceExpression(@Nonnull ASTNode node) { super(node); } + @Override public String toString() { return "AopConstructorReferenceExpression"; } - } diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopElementBase.java b/aop-common/src/main/java/com/intellij/aop/psi/AopElementBase.java index 675d4a4c..b316735a 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopElementBase.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopElementBase.java @@ -3,10 +3,9 @@ */ package com.intellij.aop.psi; -import jakarta.annotation.Nonnull; - -import consulo.language.impl.psi.ASTWrapperPsiElement; import consulo.language.ast.ASTNode; +import consulo.language.impl.psi.ASTWrapperPsiElement; +import jakarta.annotation.Nonnull; /** * @author peter @@ -17,6 +16,7 @@ public AopElementBase(@Nonnull ASTNode node) { } @Nonnull + @Override public AopPointcutExpressionFile getContainingFile() { return (AopPointcutExpressionFile)super.getContainingFile(); } diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopElementTypes.java b/aop-common/src/main/java/com/intellij/aop/psi/AopElementTypes.java index 2c853d85..ccaf1403 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopElementTypes.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopElementTypes.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.intellij.aop.psi; import consulo.language.ast.*; @@ -136,9 +135,9 @@ public AopWhitespaceElementType() { } @Nonnull + @Override public ASTNode createLeafNode(CharSequence leafText) { return new PsiWhiteSpaceImpl(leafText); } } - } diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopGenericTypeExpression.java b/aop-common/src/main/java/com/intellij/aop/psi/AopGenericTypeExpression.java index 46716345..041849d5 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopGenericTypeExpression.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopGenericTypeExpression.java @@ -1,9 +1,9 @@ /* * Copyright (c) 2000-2007 JetBrains s.r.o. All Rights Reserved. */ - package com.intellij.aop.psi; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; @@ -21,21 +21,26 @@ public AopGenericTypeExpression(@Nonnull ASTNode node) { super(node); } + @Override public String toString() { return "AopParameterizedTypeExpression"; } @Nonnull + @RequiredReadAction public AopTypeExpression getRawTypeReference() { return findNotNullChildByClass(AopTypeExpression.class); } @Nonnull + @RequiredReadAction public AopTypeParameterList getTypeParameterList() { return findNotNullChildByClass(AopTypeParameterList.class); } @Nonnull + @Override + @RequiredReadAction public Collection getPatterns() { Collection erasurePatterns = getRawTypeReference().getPatterns(); PsiElement[] parameters = getTypeParameterList().getParameters(); @@ -46,7 +51,7 @@ public Collection getPatterns() { Collection patterns = expression.getPatterns(); parameterPatterns[i] = patterns.toArray(new AopPsiTypePattern[patterns.size()]); } - Set result = new HashSet(); + Set result = new HashSet<>(); for (AopPsiTypePattern erasurePattern : erasurePatterns) { int[] indices = new int[parameterPatterns.length]; while (true) { @@ -66,9 +71,8 @@ public Collection getPatterns() { return result; } + @Override public String getTypePattern() { return "'_"; } - - } \ No newline at end of file diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopImplicitUsageProvider.java b/aop-common/src/main/java/com/intellij/aop/psi/AopImplicitUsageProvider.java index 76a60a21..974d761c 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopImplicitUsageProvider.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopImplicitUsageProvider.java @@ -16,6 +16,7 @@ */ @ExtensionImpl public class AopImplicitUsageProvider implements ImplicitUsageProvider { + @Override public boolean isImplicitUsage(PsiElement element) { if (element instanceof PsiParameter) { PsiMethod method = PsiTreeUtil.getParentOfType(element, PsiMethod.class); @@ -26,10 +27,12 @@ public boolean isImplicitUsage(PsiElement element) { return false; } + @Override public boolean isImplicitRead(PsiElement element) { return false; } + @Override public boolean isImplicitWrite(PsiElement element) { return false; } diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopMemberReferenceExpression.java b/aop-common/src/main/java/com/intellij/aop/psi/AopMemberReferenceExpression.java index 82356349..53ea5762 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopMemberReferenceExpression.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopMemberReferenceExpression.java @@ -1,9 +1,9 @@ /* * Copyright (c) 2000-2007 JetBrains s.r.o. All Rights Reserved. */ - package com.intellij.aop.psi; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import consulo.util.collection.ContainerUtil; @@ -21,25 +21,26 @@ public AopMemberReferenceExpression(@Nonnull ASTNode node) { } @Nullable + @RequiredReadAction public AopReferenceExpression getReferenceExpression() { AopTypeExpression aopTypeExpression = getTypeExpression(); - if (aopTypeExpression instanceof AopReferenceExpression) { - return (AopReferenceExpression)aopTypeExpression; + if (aopTypeExpression instanceof AopReferenceExpression refExpr) { + return refExpr; } - if (aopTypeExpression instanceof AopAnnotatedTypeExpression) { - AopTypeExpression expression1 = ((AopAnnotatedTypeExpression)aopTypeExpression).getTypeExpression(); - if (expression1 instanceof AopReferenceExpression) { - return (AopReferenceExpression)expression1; - } + if (aopTypeExpression instanceof AopAnnotatedTypeExpression annotatedTypeExpr + && annotatedTypeExpr.getTypeExpression() instanceof AopReferenceExpression refExpr) { + return refExpr; } return null; } @Nullable + @RequiredReadAction public AopTypeExpression getTypeExpression() { return findChildByClass(AopTypeExpression.class); } + @RequiredReadAction public Collection getQualifierPatterns() { AopReferenceExpression expression = getReferenceExpression(); if (expression == null) return Arrays.asList(AopPsiTypePattern.TRUE); @@ -49,10 +50,11 @@ public Collection getQualifierPatterns() { AopTypeExpression typeExpression = getTypeExpression(); - return typeExpression instanceof AopAnnotatedTypeExpression ? ((AopAnnotatedTypeExpression)typeExpression).getQualifierPatterns() : qualifier + return typeExpression instanceof AopAnnotatedTypeExpression annotatedTypeExpr ? annotatedTypeExpr.getQualifierPatterns() : qualifier .getPatterns(); } + @RequiredReadAction public Collection getPatterns() { AopReferenceExpression expression = getReferenceExpression(); Collection patterns = getQualifierPatterns(); @@ -62,8 +64,8 @@ public Collection getPatterns() { return patterns; } + @Override public String toString() { return "AopMemberReferenceExpression"; } - } \ No newline at end of file diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopModifierList.java b/aop-common/src/main/java/com/intellij/aop/psi/AopModifierList.java index 3f4d29b0..e168fe47 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopModifierList.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopModifierList.java @@ -1,10 +1,10 @@ /* * Copyright (c) 2000-2007 JetBrains s.r.o. All Rights Reserved. */ - package com.intellij.aop.psi; import com.intellij.java.language.psi.PsiModifierListOwner; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import jakarta.annotation.Nonnull; @@ -13,15 +13,16 @@ * @author peter */ public class AopModifierList extends AopElementBase { - public AopModifierList(@Nonnull ASTNode node) { super(node); } + @Override public String toString() { return "AopModifierList"; } + @RequiredReadAction public boolean accepts(PsiModifierListOwner owner) { for (ASTNode node : getNode().getChildren(null)) { if (node.getElementType() == AopElementTypes.AOP_MODIFIER && !owner.hasModifierProperty(node.getText())) return false; diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopNotExpression.java b/aop-common/src/main/java/com/intellij/aop/psi/AopNotExpression.java index 6071f703..8b728c3e 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopNotExpression.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopNotExpression.java @@ -5,6 +5,7 @@ package com.intellij.aop.psi; import com.intellij.java.language.psi.PsiMember; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; import consulo.util.collection.ContainerUtil; @@ -22,28 +23,35 @@ public AopNotExpression(@Nonnull ASTNode node) { super(node); } + @Override public String toString() { return "AopNotExpression"; } @Nullable + @RequiredReadAction public AopPatternContainer getInnerExpression() { return findChildByClass(AopPatternContainer.class); } @Nonnull + @RequiredReadAction public PsiElement getNotToken() { return findChildByType(AopElementTypes.AOP_NOT); } @Nonnull + @Override + @RequiredReadAction public PointcutMatchDegree acceptsSubject(PointcutContext context, PsiMember member) { AopPatternContainer expression = getInnerExpression(); - return expression instanceof PsiPointcutExpression ? PointcutMatchDegree.not(((PsiPointcutExpression)expression).acceptsSubject(context, - member)) : PointcutMatchDegree.FALSE; + return expression instanceof PsiPointcutExpression pointcutExpr + ? PointcutMatchDegree.not(pointcutExpr.acceptsSubject(context, member)) + : PointcutMatchDegree.FALSE; } @Nonnull + @RequiredReadAction public Collection getInnerPatterns() { AopPatternContainer typeExpression = getInnerExpression(); if (typeExpression != null) return typeExpression.getPatterns(); @@ -51,14 +59,17 @@ public Collection getInnerPatterns() { } @Nonnull + @Override + @RequiredReadAction public Collection getPatterns() { return ContainerUtil.map2List(getInnerPatterns(), NotPattern::new); } + @Override + @RequiredReadAction public String getTypePattern() { - AopPatternContainer expression = getInnerExpression(); - if (expression instanceof AopTypeExpression) { - String pattern = ((AopTypeExpression)expression).getTypePattern(); + if (getInnerExpression() instanceof AopTypeExpression typeExpr) { + String pattern = typeExpr.getTypePattern(); if (pattern == null) return null; return "'_:[!is(\"" + pattern + "\")]"; diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopParameterList.java b/aop-common/src/main/java/com/intellij/aop/psi/AopParameterList.java index d3dc5aea..7f363444 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopParameterList.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopParameterList.java @@ -11,25 +11,27 @@ import jakarta.annotation.Nonnull; +import java.util.function.BiFunction; + /** * @author peter */ public class AopParameterList extends AopAbstractList { - public AopParameterList(@Nonnull ASTNode node) { super(node); } + @Override protected PsiType getPsiType(@Nonnull PsiParameter psiParameter) { return psiParameter.getType(); } + @Override public String toString() { return "AopParameterList"; } - public PointcutMatchDegree matches(PointcutContext context, PsiParameterList list, PairFunction matcher) { + public PointcutMatchDegree matches(PointcutContext context, PsiParameterList list, BiFunction matcher) { return accepts(context, list.getParameters(), matcher); } - } diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopParameterReferenceTarget.java b/aop-common/src/main/java/com/intellij/aop/psi/AopParameterReferenceTarget.java index 24663d4c..201bed71 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopParameterReferenceTarget.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopParameterReferenceTarget.java @@ -22,10 +22,12 @@ public AopParameterReferenceTarget(PsiParameter parameter) { } @Nonnull + @Override public String getQualifiedName() { return myParameter.getType().getCanonicalText(); } + @Override public PointcutMatchDegree canBeInstance(PsiClass psiClass, boolean allowPatterns) { PsiType type = myParameter.getType(); if (type instanceof PsiClassType) { @@ -40,20 +42,24 @@ public PointcutMatchDegree canBeInstance(PsiClass psiClass, boolean allowPattern return PointcutMatchDegree.FALSE; } + @Override public PointcutMatchDegree accepts(PsiType actualType) { return PointcutMatchDegree.valueOf(actualType.equals(myParameter.getType())); } + @Override public String getTypePattern() { throw new UnsupportedOperationException("Method getTypePattern is not yet implemented in " + getClass().getName()); } @Nullable + @Override public PsiClass findClass() { PsiType type = myParameter.getType(); return type instanceof PsiClassType ? ((PsiClassType)type).resolve() : null; } + @Override public boolean isAssignableFrom(PsiType type) { return myParameter.getType().isAssignableFrom(type); } diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopParenthesizedExpression.java b/aop-common/src/main/java/com/intellij/aop/psi/AopParenthesizedExpression.java index 400d8934..f4477ae7 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopParenthesizedExpression.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopParenthesizedExpression.java @@ -1,10 +1,10 @@ /* * Copyright (c) 2000-2007 JetBrains s.r.o. All Rights Reserved. */ - package com.intellij.aop.psi; import com.intellij.java.language.psi.PsiMember; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import jakarta.annotation.Nonnull; @@ -20,27 +20,34 @@ public AopParenthesizedExpression(@Nonnull ASTNode node) { super(node); } + @Override public String toString() { return "AopParenthesizedExpression"; } @Nullable + @RequiredReadAction public PsiPointcutExpression getInnerPointcutExpression() { return findChildByClass(PsiPointcutExpression.class); } @Nullable + @RequiredReadAction public AopTypeExpression getInnerTypeExpression() { return findChildByClass(AopTypeExpression.class); } @Nonnull + @Override + @RequiredReadAction public PointcutMatchDegree acceptsSubject(PointcutContext context, PsiMember member) { PsiPointcutExpression pointcutExpression = getInnerPointcutExpression(); return pointcutExpression != null ? pointcutExpression.acceptsSubject(context, member) : PointcutMatchDegree.FALSE; } @Nonnull + @Override + @RequiredReadAction public Collection getPatterns() { AopTypeExpression typeExpression = getInnerTypeExpression(); if (typeExpression != null) return typeExpression.getPatterns(); @@ -49,6 +56,8 @@ public Collection getPatterns() { return Collections.emptyList(); } + @Override + @RequiredReadAction public String getTypePattern() { AopTypeExpression expression = getInnerTypeExpression(); if (expression != null) { @@ -60,6 +69,7 @@ public String getTypePattern() { return null; } + @Override public AopReferenceExpression.Resolvability getResolvability() { return AopReferenceExpression.Resolvability.NONE; } diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutExpressionFile.java b/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutExpressionFile.java index e14b2a3c..0a5809f3 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutExpressionFile.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutExpressionFile.java @@ -8,6 +8,7 @@ import com.intellij.java.language.psi.PsiJavaPackage; import com.intellij.java.language.psi.PsiMethod; import com.intellij.java.language.psi.PsiParameter; +import consulo.annotation.access.RequiredReadAction; import consulo.language.file.FileViewProvider; import consulo.language.impl.psi.PsiFileBase; import consulo.language.impl.psi.PsiFileImpl; @@ -33,6 +34,7 @@ public AopPointcutExpressionFile(FileViewProvider fileView) { super(fileView, AopPointcutExpressionLanguage.getInstance()); } + @Override public boolean processDeclarations(@Nonnull PsiScopeProcessor processor, @Nonnull ResolveState state, PsiElement lastParent, @@ -57,25 +59,32 @@ public boolean processDeclarations(@Nonnull PsiScopeProcessor processor, return super.processDeclarations(processor, state, lastParent, place); } + @Override + @RequiredReadAction public String toString() { return "AopPointcutExpressionFile:" + getName(); } @Nonnull + @Override public FileType getFileType() { return AopPointcutExpressionFileType.INSTANCE; } + @Override public void accept(@Nonnull PsiElementVisitor visitor) { visitor.visitFile(this); } @Nullable + @RequiredReadAction public PsiPointcutExpression getPointcutExpression() { return findChildByClass(PsiPointcutExpression.class); } + @Override @SuppressWarnings({"CloneDoesntDeclareCloneNotSupportedException", "CloneDoesntCallSuperClone"}) + @RequiredReadAction protected PsiFileImpl clone() { PsiFileImpl file = super.clone(); file.putUserData(LOCAL_AOP_MODEL, getUserData(LOCAL_AOP_MODEL)); diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutExpressionFileType.java b/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutExpressionFileType.java index cd5b856b..f6d69925 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutExpressionFileType.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutExpressionFileType.java @@ -6,8 +6,6 @@ import consulo.language.file.LanguageFileType; import consulo.localize.LocalizeValue; import consulo.ui.image.Image; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -22,23 +20,25 @@ private AopPointcutExpressionFileType() { } @Nonnull - @NonNls - public String getId() { + public @Override + String getId() { return "Pointcut Expression"; } @Nonnull + @Override public LocalizeValue getDescription() { return LocalizeValue.localizeTODO("Pointcut Expression"); } @Nonnull - @NonNls + @Override public String getDefaultExtension() { return "pointcutExpression"; } @Nullable + @Override public Image getIcon() { return null; } diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutExpressionParserDefinition.java b/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutExpressionParserDefinition.java index a9eee8e7..40792ce5 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutExpressionParserDefinition.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutExpressionParserDefinition.java @@ -4,6 +4,7 @@ package com.intellij.aop.psi; import com.intellij.aop.lexer.AopLexer; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.Language; import consulo.language.ast.ASTNode; @@ -34,36 +35,44 @@ public Language getLanguage() { } @Nonnull + @Override public Lexer createLexer(@Nonnull LanguageVersion languageVersion) { return new AopLexer(); } @Nonnull + @Override public IFileElementType getFileNodeType() { return AOP_POINTCUT_EXPRESSION_FILE; } @Nonnull + @Override public TokenSet getWhitespaceTokens(@Nonnull LanguageVersion languageVersion) { return WHITE_SPACES; } @Nonnull + @Override public TokenSet getCommentTokens(@Nonnull LanguageVersion languageVersion) { return TokenSet.EMPTY; } @Nonnull + @Override public TokenSet getStringLiteralElements(@Nonnull LanguageVersion languageVersion) { return TokenSet.EMPTY; } @Nonnull + @Override public PsiParser createParser(@Nonnull LanguageVersion languageVersion) { return new AopPrattParser(); } @Nonnull + @Override + @RequiredReadAction public PsiElement createElement(ASTNode node) { IElementType elementType = node.getElementType(); if (elementType == AOP_ANNOTATION_EXPRESSION) return new AopAnnotationExpression(node); @@ -106,13 +115,14 @@ public String toString() { } @Nonnull + @Override public PsiFile createFile(@Nonnull FileViewProvider viewProvider) { return new AopPointcutExpressionFile(viewProvider); } @Nonnull + @Override public SpaceRequirements spaceExistanceTypeBetweenTokens(ASTNode left, ASTNode right) { return ParserDefinition.SpaceRequirements.MAY; } - } diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutTypes.java b/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutTypes.java index 034fa5eb..f3442b82 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutTypes.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutTypes.java @@ -4,14 +4,13 @@ */ package com.intellij.aop.psi; -import com.intellij.aop.AopBundle; +import consulo.aop.localize.AopLocalize; import consulo.language.ast.ASTNode; import consulo.language.ast.IElementType; import consulo.language.pratt.MutableMarker; import consulo.language.pratt.PathPattern; import consulo.language.pratt.PrattBuilder; import consulo.language.pratt.ReducingParser; -import org.jetbrains.annotations.NonNls; import java.util.Collection; import java.util.HashMap; @@ -24,8 +23,8 @@ * @author peter */ public class AopPointcutTypes { - private static final Map ourPointcutTokens = new HashMap(); - private static final Map ourPointcutDescriptors = new HashMap(); + private static final Map ourPointcutTokens = new HashMap<>(); + private static final Map ourPointcutDescriptors = new HashMap<>(); public static Map getPointcutTokens() { return ourPointcutTokens; @@ -38,172 +37,209 @@ public static boolean canContainModifiers(String tokenText) { static { registerPointcut(new MethodPointcutDescriptor("execution", false) { + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiExecutionExpression(node); } }); registerPointcut(new MethodPointcutDescriptor("call", false) { + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiCallExpression(node); } }); + //noinspection SpellCheckingInspection registerPointcut(new MethodPointcutDescriptor("withincode", false) { + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiWithinCodePointcutExpression(node); } }); registerPointcut(new MethodPointcutDescriptor("initialization", true) { + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiInitializationPointcutExpression(node, false); } }); + //noinspection SpellCheckingInspection registerPointcut(new MethodPointcutDescriptor("preinitialization", true) { + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiInitializationPointcutExpression(node, true); } }); registerPointcut(new FieldPointcutDescriptor("get") { + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new FieldPatternPointcut(node); } }); registerPointcut(new FieldPointcutDescriptor("set") { + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new FieldPatternPointcut(node); } }); - registerPointcut(new PointcutDescriptor("args") { + @Override public void parseToken(PrattBuilder builder) { - if (builder.assertToken(AOP_LEFT_PAR, AopBundle.message("error.0.expected", "("))) { - parseParameterList(builder, TYPE_PATTERN, AopBundle.message("error.method.args.pattern.expected")); - builder.assertToken(AOP_RIGHT_PAR, AopBundle.message("error.0.expected", ")")); + if (builder.assertToken(AOP_LEFT_PAR, AopLocalize.error0Expected("(").get())) { + parseParameterList(builder, TYPE_PATTERN, AopLocalize.errorMethodArgsPatternExpected().get()); + builder.assertToken(AOP_RIGHT_PAR, AopLocalize.error0Expected(")").get()); } } + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiArgsExpression(node); } }); registerPointcut(new PointcutDescriptor("@args") { + @Override public void parseToken(PrattBuilder builder) { - if (builder.assertToken(AOP_LEFT_PAR, AopBundle.message("error.0.expected", "("))) { - parseParameterList(builder, SIMPLE_TYPE, AopBundle.message("error.method.annotation.name.expected")); - builder.assertToken(AOP_RIGHT_PAR, AopBundle.message("error.0.expected", ")")); + if (builder.assertToken(AOP_LEFT_PAR, AopLocalize.error0Expected("(").get())) { + parseParameterList(builder, SIMPLE_TYPE, AopLocalize.errorMethodAnnotationNameExpected().get()); + builder.assertToken(AOP_RIGHT_PAR, AopLocalize.error0Expected(")").get()); } } + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiAtArgsExpression(node); } }); registerPointcut(new TypePatternPointcutDescriptor("within") { + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiWithinExpression(node); } }); registerPointcut(new TypePatternPointcutDescriptor("this") { + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiThisExpression(node); } }); registerPointcut(new TypePatternPointcutDescriptor("target") { + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiTargetExpression(node); } }); registerPointcut(new TypePatternPointcutDescriptor("handler") { + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiHandlerPointcutExpression(node); } }); + //noinspection SpellCheckingInspection registerPointcut(new TypePatternPointcutDescriptor("staticinitialization") { + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiStaticInitializationExpression(node); } }); registerPointcut(new AnnoPatternPointcutDescriptor("@this") { + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiAtThisExpression(node); } }); registerPointcut(new AnnoPatternPointcutDescriptor("@target") { + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiAtTargetExpression(node); } }); registerPointcut(new AnnoPatternPointcutDescriptor("@within") { + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiAtWithinExpression(node); } }); registerPointcut(new AnnoPatternPointcutDescriptor("@annotation") { + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiAtAnnotationExpression(node); } }); + //noinspection SpellCheckingInspection registerPointcut(new PointcutDescriptor("adviceexecution") { + @Override public void parseToken(PrattBuilder builder) { - builder.assertToken(AOP_LEFT_PAR, AopBundle.message("error.0.expected", "(")); - builder.assertToken(AOP_RIGHT_PAR, AopBundle.message("error.0.expected", ")")); + builder.assertToken(AOP_LEFT_PAR, AopLocalize.error0Expected("(").get()); + builder.assertToken(AOP_RIGHT_PAR, AopLocalize.error0Expected(")").get()); } + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiAdviceExecutionExpression(node); } }); registerPointcut(new PointcutDescriptor("lock") { + @Override public void parseToken(PrattBuilder builder) { - builder.assertToken(AOP_LEFT_PAR, AopBundle.message("error.0.expected", "(")); - builder.assertToken(AOP_RIGHT_PAR, AopBundle.message("error.0.expected", ")")); + builder.assertToken(AOP_LEFT_PAR, AopLocalize.error0Expected("(").get()); + builder.assertToken(AOP_RIGHT_PAR, AopLocalize.error0Expected(")").get()); } + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiMonitorPointcutExpression(node); } }); registerPointcut(new PointcutDescriptor("unlock") { + @Override public void parseToken(PrattBuilder builder) { - builder.assertToken(AOP_LEFT_PAR, AopBundle.message("error.0.expected", "(")); - builder.assertToken(AOP_RIGHT_PAR, AopBundle.message("error.0.expected", ")")); + builder.assertToken(AOP_LEFT_PAR, AopLocalize.error0Expected("(").get()); + builder.assertToken(AOP_RIGHT_PAR, AopLocalize.error0Expected(")").get()); } + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiMonitorPointcutExpression(node); } }); + //noinspection SpellCheckingInspection registerPointcut(new PointcutDescriptor("cflow") { + @Override public void parseToken(PrattBuilder builder) { - builder.assertToken(AOP_LEFT_PAR, AopBundle.message("error.0.expected", "(")); + builder.assertToken(AOP_LEFT_PAR, AopLocalize.error0Expected("(").get()); AopPrattParser.parsePointcut(builder, builder.createChildBuilder(0)); - builder.assertToken(AOP_RIGHT_PAR, AopBundle.message("error.0.expected", ")")); + builder.assertToken(AOP_RIGHT_PAR, AopLocalize.error0Expected(")").get()); } + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiControlFlowPointcutExpression(node); } }); + //noinspection SpellCheckingInspection registerPointcut(new PointcutDescriptor("cflowbelow") { + @Override public void parseToken(PrattBuilder builder) { - builder.assertToken(AOP_LEFT_PAR, AopBundle.message("error.0.expected", "(")); + builder.assertToken(AOP_LEFT_PAR, AopLocalize.error0Expected("(").get()); AopPrattParser.parsePointcut(builder, builder.createChildBuilder(0)); - builder.assertToken(AOP_RIGHT_PAR, AopBundle.message("error.0.expected", ")")); + builder.assertToken(AOP_RIGHT_PAR, AopLocalize.error0Expected(")").get()); } + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiControlFlowPointcutExpression(node); } }); registerPointcut(new PointcutDescriptor("if") { + @Override public void parseToken(PrattBuilder builder) { - if (builder.assertToken(AOP_LEFT_PAR, AopBundle.message("error.0.expected", "("))) { + if (builder.assertToken(AOP_LEFT_PAR, AopLocalize.error0Expected("(").get())) { builder.checkToken(AOP_BOOLEAN_LITERAL); - builder.assertToken(AOP_RIGHT_PAR, AopBundle.message("error.0.expected", ")")); + builder.assertToken(AOP_RIGHT_PAR, AopLocalize.error0Expected(")").get()); } } + @Override public PsiPointcutExpression createPsi(ASTNode node) { return new PsiIfPointcutExpression(node); } @@ -214,33 +250,33 @@ public PsiPointcutExpression createPsi(ASTNode node) { } private static abstract class TypePatternPointcutDescriptor extends PointcutDescriptor { - protected TypePatternPointcutDescriptor(@NonNls String tokenText) { + protected TypePatternPointcutDescriptor(String tokenText) { super(tokenText); } + @Override public void parseToken(PrattBuilder builder) { - parseTypePatternPointcut(builder, TYPE_PATTERN, AopBundle.message("error.type.name.pattern.expected")); + parseTypePatternPointcut(builder, TYPE_PATTERN, AopLocalize.errorTypeNamePatternExpected().get()); } - } private static abstract class AnnoPatternPointcutDescriptor extends PointcutDescriptor { - protected AnnoPatternPointcutDescriptor(@NonNls String tokenText) { + protected AnnoPatternPointcutDescriptor(String tokenText) { super(tokenText); } + @Override public void parseToken(PrattBuilder builder) { - parseTypePatternPointcut(builder, SIMPLE_TYPE, AopBundle.message("error.method.annotation.name.expected")); + parseTypePatternPointcut(builder, SIMPLE_TYPE, AopLocalize.errorMethodAnnotationNameExpected().get()); } - } private static void parseTypePatternPointcut(PrattBuilder builder, int level, String message) { - if (builder.assertToken(AOP_LEFT_PAR, AopBundle.message("error.0.expected", "("))) { + if (builder.assertToken(AOP_LEFT_PAR, AopLocalize.error0Expected("(").get())) { MutableMarker type = builder.mark(); builder.parseChildren(level, message); type.finish(AOP_REFERENCE_HOLDER); - builder.assertToken(AOP_RIGHT_PAR, AopBundle.message("error.0.expected", ")")); + builder.assertToken(AOP_RIGHT_PAR, AopLocalize.error0Expected(")").get()); } } @@ -266,16 +302,18 @@ public static void parseParameterList(PrattBuilder builder, int level, String ex public static void registerPointcut(final PointcutDescriptor descriptor) { String token = descriptor.getTokenText(); - @NonNls final String typeName = "AOP_" + (token.startsWith("@") ? "AT_" + token.substring(1).toUpperCase() : token.toUpperCase()); + final String typeName = "AOP_" + (token.startsWith("@") ? "AT_" + token.substring(1).toUpperCase() : token.toUpperCase()); AopElementType tokenType = new AopPointcutDesignatorTokenType(typeName); ourPointcutTokens.put(token, tokenType); ourPointcutDescriptors.put(token, descriptor); final AopPointcutElementType directiveType = new AopPointcutElementType(typeName + "_POINTCUT") { + @Override public PsiPointcutExpression createPsi(ASTNode node) { return descriptor.createPsi(node); } }; AopPrattParser.ourPrattRegistry.registerParser(tokenType, POINTCUT, PathPattern.path().up(), new ReducingParser() { + @Override public IElementType parseFurther(PrattBuilder builder) { descriptor.parseToken(builder); return directiveType; @@ -285,5 +323,4 @@ public IElementType parseFurther(PrattBuilder builder) { private AopPointcutTypes() { } - } diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopPrattParser.java b/aop-common/src/main/java/com/intellij/aop/psi/AopPrattParser.java index 312c3a8b..f5eb10fd 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopPrattParser.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopPrattParser.java @@ -4,13 +4,12 @@ */ package com.intellij.aop.psi; -import com.intellij.aop.AopBundle; import com.intellij.java.language.patterns.PsiJavaPatterns; +import consulo.aop.localize.AopLocalize; import consulo.language.ast.IElementType; import consulo.language.pattern.ElementPattern; import consulo.language.pattern.IElementTypePattern; import consulo.language.pratt.*; - import jakarta.annotation.Nullable; import static com.intellij.aop.psi.AopElementTypes.*; @@ -39,24 +38,26 @@ public class AopPrattParser extends PrattParser ourPrattRegistry.registerParser(AOP_IDENTIFIER, POINTCUT, path().up(), TokenParser.postfix(AOP_REFERENCE_EXPRESSION)); ourPrattRegistry.registerParser(AOP_DOT, POINTCUT, path().left(AOP_REFERENCE_EXPRESSION).up(), new ReducingParser() { + @Override public IElementType parseFurther(PrattBuilder builder) { - builder.assertToken(AOP_IDENTIFIER, AopBundle.message("error.id.expected")); + builder.assertToken(AOP_IDENTIFIER, AopLocalize.errorIdExpected().get()); return AOP_REFERENCE_EXPRESSION; } }); ourPrattRegistry.registerParser(AOP_LEFT_PAR, POINTCUT, path().left(AOP_REFERENCE_EXPRESSION).up(), new ReducingParser() { + @Override public IElementType parseFurther(PrattBuilder builder) { MutableMarker paramList = builder.mark(); if (!builder.isToken(AOP_RIGHT_PAR)) { while (true) { MutableMarker refHolder = builder.mark(); - builder.parseChildren(SIMPLE_TYPE, AopBundle.message("error.pointcut.arguments.expected")); + builder.parseChildren(SIMPLE_TYPE, AopLocalize.errorPointcutArgumentsExpected().get()); refHolder.finish(AOP_REFERENCE_HOLDER); if (!builder.checkToken(AOP_COMMA)) break; } } paramList.finish(AOP_PARAMETER_LIST); - builder.assertToken(AOP_RIGHT_PAR, AopBundle.message("error.0.expected", ")")); + builder.assertToken(AOP_RIGHT_PAR, AopLocalize.error0Expected(")").get()); return AOP_POINTCUT_REFERENCE; } }); @@ -66,18 +67,21 @@ public IElementType parseFurther(PrattBuilder builder) { } ourPrattRegistry.registerParser(AOP_IDENTIFIER, ATOM + 1, path().up(), new TokenParser() { + @Override public final boolean parseToken(PrattBuilder builder) { builder.reduce(parsePatternPart(builder)); return true; } }); ourPrattRegistry.registerParser(AOP_ASTERISK, ATOM + 1, path().up(), new TokenParser() { + @Override public final boolean parseToken(PrattBuilder builder) { builder.reduce(parsePatternPart(builder)); return true; } }); TokenParser pathSeparator = new TokenParser() { + @Override public final boolean parseToken(PrattBuilder builder) { builder.advance(); @@ -88,7 +92,7 @@ public final boolean parseToken(PrattBuilder builder) { } if (!builder.isToken(AOP_ASTERISK) && !builder.isToken(AOP_IDENTIFIER)) { - builder.error(AopBundle.message("error.id.expected")); + builder.error(AopLocalize.errorIdExpected().get()); return true; } builder.reduce(parsePatternPart(builder)); @@ -98,6 +102,7 @@ public final boolean parseToken(PrattBuilder builder) { ourPrattRegistry.registerParser(AOP_DOT, SIMPLE_TYPE + 1, path().left(REFERENCE_QUALIFIER).up(), pathSeparator); ourPrattRegistry.registerParser(AOP_DOT_DOT, SIMPLE_TYPE - 1, path().left(REFERENCE_QUALIFIER).up(), pathSeparator); ourPrattRegistry.registerParser(ANNO_WHITE_SPACE, Integer.MAX_VALUE, new TokenParser() { + @Override public boolean parseToken(PrattBuilder builder) { builder.advance(); return false; @@ -106,6 +111,7 @@ public boolean parseToken(PrattBuilder builder) { ourPrattRegistry.registerParser(AOP_OR, LOGIC + 1, path().left().up(), new ReducingParser() { @Nullable + @Override public IElementType parseFurther(PrattBuilder builder) { parsePointcut(builder, builder.createChildBuilder(LOGIC + 1)); return AOP_POINTCUT_BINARY_EXPRESSION; @@ -113,6 +119,7 @@ public IElementType parseFurther(PrattBuilder builder) { }); ourPrattRegistry.registerParser(AOP_AND, LOGIC + 2, path().left().up(), new ReducingParser() { @Nullable + @Override public IElementType parseFurther(PrattBuilder builder) { parsePointcut(builder, builder.createChildBuilder(LOGIC + 2)); return AOP_POINTCUT_BINARY_EXPRESSION; @@ -120,6 +127,7 @@ public IElementType parseFurther(PrattBuilder builder) { }); ourPrattRegistry.registerParser(AOP_NOT, LOGIC + 3, path().up(), new ReducingParser() { @Nullable + @Override public IElementType parseFurther(PrattBuilder builder) { parsePointcut(builder, builder.createChildBuilder(LOGIC + 2)); return AOP_POINTCUT_NOT_EXPRESSION; @@ -129,6 +137,7 @@ public IElementType parseFurther(PrattBuilder builder) { ourPrattRegistry.registerParser(AOP_OR, TYPE_PATTERN + 1, path().left(ANY_TYPE_PATTERN).up(), TokenParser.infix(TYPE_PATTERN + 1, AOP_BINARY_EXPRESSION)); ourPrattRegistry.registerParser(AOP_AND, TYPE_PATTERN + 2, path().left(ANY_TYPE_PATTERN).up(), TokenParser.infix(TYPE_PATTERN + 2, AOP_BINARY_EXPRESSION)); ourPrattRegistry.registerParser(AOP_NOT, TYPE_PATTERN + 3, path().up(), new TokenParser() { + @Override public boolean parseToken(PrattBuilder builder) { MutableMarker annotatedType = builder.mark(); MutableMarker not = builder.mark(); @@ -137,45 +146,49 @@ public boolean parseToken(PrattBuilder builder) { not.rollback(); parseAnnotations(builder); - builder.parseChildren(TYPE_PATTERN, AopBundle.message("error.type.name.pattern.expected")); + builder.parseChildren(TYPE_PATTERN, AopLocalize.errorTypeNamePatternExpected().get()); annotatedType.finish(AOP_ANNOTATED_TYPE_EXPRESSION); return true; } annotatedType.drop(); - builder.parseChildren(TYPE_PATTERN + 2, AopBundle.message("error.type.name.pattern.expected")); + builder.parseChildren(TYPE_PATTERN + 2, AopLocalize.errorTypeNamePatternExpected().get()); not.finish(AOP_NOT_EXPRESSION); return true; } }); ourPrattRegistry.registerParser(AOP_AT, TYPE_PATTERN + 5, path().up(), new TokenParser() { + @Override public boolean parseToken(PrattBuilder builder) { MutableMarker annotatedType = builder.mark(); parseAnnotations(builder); - builder.parseChildren(TYPE_PATTERN, AopBundle.message("error.type.name.pattern.expected")); + builder.parseChildren(TYPE_PATTERN, AopLocalize.errorTypeNamePatternExpected().get()); annotatedType.finish(AOP_ANNOTATED_TYPE_EXPRESSION); return true; } }); ourPrattRegistry.registerParser(AOP_LEFT_PAR, POINTCUT + 1, path().up(), new ReducingParser() { + @Override public IElementType parseFurther(PrattBuilder builder) { parsePointcut(builder, builder.createChildBuilder(0)); - builder.assertToken(AOP_RIGHT_PAR, AopBundle.message("error.0.expected", ")")); + builder.assertToken(AOP_RIGHT_PAR, AopLocalize.error0Expected(")").get()); return AOP_POINTCUT_PARENTHESIZED_EXPRESSION; } }); ourPrattRegistry.registerParser(AOP_LEFT_PAR, ATOM + 1, path().up(), new ReducingParser() { + @Override public IElementType parseFurther(PrattBuilder builder) { - builder.parseChildren(TYPE_PATTERN, AopBundle.message("error.type.name.pattern.expected")); - builder.assertToken(AOP_RIGHT_PAR, AopBundle.message("error.0.expected", ")")); + builder.parseChildren(TYPE_PATTERN, AopLocalize.errorTypeNamePatternExpected().get()); + builder.assertToken(AOP_RIGHT_PAR, AopLocalize.error0Expected(")").get()); return AOP_PARENTHESIZED_EXPRESSION; } }); ourPrattRegistry.registerParser(AOP_LT, TYPE_PATTERN + 11, path().left(REFERENCE_QUALIFIER).up(), new TokenParser() { + @Override public boolean parseToken(PrattBuilder builder) { MutableMarker typeParamList = builder.mark(); builder.advance(); @@ -184,18 +197,18 @@ public boolean parseToken(PrattBuilder builder) { MutableMarker wildcard = builder.mark(); if (builder.checkToken(AOP_QUESTION)) { if (builder.checkToken(AOP_EXTENDS) || builder.checkToken(AOP_SUPER)) { - builder.parseChildren(TYPE_PATTERN, AopBundle.message("error.type.name.pattern.expected")); + builder.parseChildren(TYPE_PATTERN, AopLocalize.errorTypeNamePatternExpected().get()); } wildcard.finish(AOP_WILDCARD_EXPRESSION); } else { - builder.parseChildren(TYPE_PATTERN, AopBundle.message("error.type.name.pattern.expected")); + builder.parseChildren(TYPE_PATTERN, AopLocalize.errorTypeNamePatternExpected().get()); wildcard.drop(); } holder.finish(AOP_REFERENCE_HOLDER); if (!builder.checkToken(AOP_COMMA)) break; } - builder.assertToken(AOP_GT, AopBundle.message("error.0.expected", ">")); + builder.assertToken(AOP_GT, AopLocalize.error0Expected(">").get()); typeParamList.finish(AOP_TYPE_PARAMETER_LIST); builder.reduce(AOP_GENERIC_TYPE_EXPRESSION); return true; @@ -242,7 +255,7 @@ private static void parseSingleAnnotation(PrattBuilder builder) { MutableMarker anno = builder.mark(); builder.advance(); MutableMarker refHolder = builder.mark(); - builder.parseChildren(SIMPLE_TYPE, AopBundle.message("error.anno.expected")); + builder.parseChildren(SIMPLE_TYPE, AopLocalize.errorAnnoExpected().get()); refHolder.finish(AOP_REFERENCE_HOLDER); if (builder.checkToken(AOP_LEFT_PAR) && !builder.checkToken(AOP_RIGHT_PAR)) { @@ -256,7 +269,7 @@ private static void parseSingleAnnotation(PrattBuilder builder) { else if (builder.isToken(AOP_RIGHT_BRACE)) depth--; } params.finish(AOP_ANNOTATION_VALUES); - builder.assertToken(AOP_RIGHT_PAR, AopBundle.message("error.0.expected", ")")); + builder.assertToken(AOP_RIGHT_PAR, AopLocalize.error0Expected(")").get()); } anno.finish(AOP_ANNOTATION_EXPRESSION); @@ -264,8 +277,8 @@ private static void parseSingleAnnotation(PrattBuilder builder) { static void parsePointcut(PrattBuilder builder, PrattBuilder child) { MutableMarker marker = builder.mark(); - if (child.expecting(AopBundle.message("error.pointcut.expression.expected")).parse() == AOP_REFERENCE_EXPRESSION) { - builder.error(AopBundle.message("error.0.expected", "(")); + if (child.expecting(AopLocalize.errorPointcutExpressionExpected().get()).parse() == AOP_REFERENCE_EXPRESSION) { + builder.error(AopLocalize.error0Expected("(").get()); marker.finish(AOP_POINTCUT_REFERENCE); return; } diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopPrimitiveTypeExpression.java b/aop-common/src/main/java/com/intellij/aop/psi/AopPrimitiveTypeExpression.java index e11d3e07..d4644a57 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopPrimitiveTypeExpression.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopPrimitiveTypeExpression.java @@ -1,11 +1,11 @@ /* * Copyright (c) 2000-2007 JetBrains s.r.o. All Rights Reserved. */ - package com.intellij.aop.psi; import com.intellij.java.language.psi.JavaPsiFacade; import com.intellij.java.language.psi.PsiPrimitiveType; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import jakarta.annotation.Nonnull; @@ -21,24 +21,29 @@ public AopPrimitiveTypeExpression(@Nonnull ASTNode node) { super(node); } + @Override public String toString() { return "AopPrimitiveTypeExpression"; } @Nonnull + @Override + @RequiredReadAction public Collection getPatterns() { PsiPrimitiveType psiType = getPsiType(); return psiType == null ? Collections.emptyList() : Collections.singletonList((AopPsiTypePattern) new PsiPrimitiveTypePattern(psiType)); } + @Override + @RequiredReadAction public String getTypePattern() { return getText(); } @Nullable + @RequiredReadAction public PsiPrimitiveType getPsiType() { return JavaPsiFacade.getInstance(getProject()).getElementFactory().createPrimitiveType(getText()); } - } \ No newline at end of file diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopPsiTypePatternsUtil.java b/aop-common/src/main/java/com/intellij/aop/psi/AopPsiTypePatternsUtil.java index 6689f4b7..8ad071e0 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopPsiTypePatternsUtil.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopPsiTypePatternsUtil.java @@ -3,63 +3,57 @@ */ package com.intellij.aop.psi; +import consulo.util.lang.Couple; import consulo.util.lang.Pair; import consulo.util.lang.function.PairFunction; import java.util.*; +import java.util.function.BiFunction; /** * @author peter */ public class AopPsiTypePatternsUtil { - private static final List, PairFunction>> ourAnders = new ArrayList, PairFunction>>(); + private static final List, BiFunction>> ourAnders = new ArrayList<>(); - private static void addAnder(Class first, Class second, PairFunction function) { - ourAnders.add(Pair.create(Pair.create((Class)first, (Class)second), (PairFunction)function)); + private static void addAnder(Class first, Class second, BiFunction function) { + ourAnders.add(Pair.create(Couple.of((Class) first, (Class) second), function)); } static { - addAnder(PsiPrimitiveTypePattern.class, PsiPrimitiveTypePattern.class, new PairFunction() { - public AopPsiTypePattern fun(PsiPrimitiveTypePattern psiPrimitiveTypePattern, - PsiPrimitiveTypePattern psiPrimitiveTypePattern1) { - return psiPrimitiveTypePattern.accepts(psiPrimitiveTypePattern1.getType()) - ? psiPrimitiveTypePattern : AopPsiTypePattern.FALSE; - } - }); - - addAnder(AopPsiTypePattern.class, AndPsiTypePattern.class, new PairFunction() { - public AopPsiTypePattern fun(AopPsiTypePattern aopPsiTypePattern, AndPsiTypePattern aopPsiTypePattern1) { - Set result = new HashSet(); - AopPsiTypePattern[] patterns = aopPsiTypePattern1.getPatterns(); - for (AopPsiTypePattern pattern : patterns) { - AopPsiTypePattern pattern1 = conjunctPatterns(pattern, aopPsiTypePattern); - if (pattern1 instanceof AndPsiTypePattern) { - result.addAll(Arrays.asList(((AndPsiTypePattern)pattern1).getPatterns())); - } else { - result.add(pattern1); - } + addAnder(PsiPrimitiveTypePattern.class, PsiPrimitiveTypePattern.class, + (psiPrimitiveTypePattern, psiPrimitiveTypePattern1) -> psiPrimitiveTypePattern.accepts(psiPrimitiveTypePattern1.getType()) + ? psiPrimitiveTypePattern : AopPsiTypePattern.FALSE + ); + + addAnder(AopPsiTypePattern.class, AndPsiTypePattern.class, (aopPsiTypePattern, aopPsiTypePattern1) -> { + Set result = new HashSet<>(); + AopPsiTypePattern[] patterns = aopPsiTypePattern1.getPatterns(); + for (AopPsiTypePattern pattern : patterns) { + AopPsiTypePattern pattern1 = conjunctPatterns(pattern, aopPsiTypePattern); + if (pattern1 instanceof AndPsiTypePattern andTypePattern) { + result.addAll(Arrays.asList(andTypePattern.getPatterns())); + } else { + result.add(pattern1); } - return new AndPsiTypePattern(result.toArray(new AopPsiTypePattern[result.size()])); } + return new AndPsiTypePattern(result.toArray(new AopPsiTypePattern[result.size()])); }); - addAnder(AopPsiTypePattern.class, AopPsiTypePattern.class, new PairFunction() { - public AopPsiTypePattern fun(AopPsiTypePattern aopPsiTypePattern, AopPsiTypePattern aopPsiTypePattern1) { - return new AndPsiTypePattern(aopPsiTypePattern, aopPsiTypePattern1); - } - }); + addAnder(AopPsiTypePattern.class, AopPsiTypePattern.class, + (aopPsiTypePattern, aopPsiTypePattern1) -> new AndPsiTypePattern(aopPsiTypePattern, aopPsiTypePattern1) + ); } - public static AopPsiTypePattern conjunctPatterns(AopPsiTypePattern pattern1, AopPsiTypePattern pattern2) { if (pattern1 == AopPsiTypePattern.FALSE || pattern2 == AopPsiTypePattern.FALSE) return AopPsiTypePattern.FALSE; if (pattern1 == AopPsiTypePattern.TRUE) return pattern2; if (pattern2 == AopPsiTypePattern.TRUE) return pattern1; - for (Pair, PairFunction> ander : ourAnders) { - Pair pair = ander.first; - if (pair.first.isInstance(pattern1) && pair.second.isInstance(pattern2)) return (AopPsiTypePattern)ander.second.fun(pattern1, pattern2); - if (pair.first.isInstance(pattern2) && pair.second.isInstance(pattern1)) return (AopPsiTypePattern)ander.second.fun(pattern2, pattern1); + for (Pair, BiFunction> ander : ourAnders) { + Couple pair = ander.first; + if (pair.first.isInstance(pattern1) && pair.second.isInstance(pattern2)) return (AopPsiTypePattern)ander.second.apply(pattern1, pattern2); + if (pair.first.isInstance(pattern2) && pair.second.isInstance(pattern1)) return (AopPsiTypePattern)ander.second.apply(pattern2, pattern1); } throw new AssertionError(); } diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopReferenceExpression.java b/aop-common/src/main/java/com/intellij/aop/psi/AopReferenceExpression.java index 9344a2a1..0c4d17f1 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopReferenceExpression.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopReferenceExpression.java @@ -12,6 +12,7 @@ import com.intellij.java.impl.psi.AbstractQualifiedReference; import com.intellij.java.language.psi.*; import com.intellij.java.language.psi.util.MethodSignature; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import consulo.language.editor.completion.lookup.LookupElement; import consulo.language.editor.completion.lookup.LookupElementBuilder; @@ -26,12 +27,11 @@ import consulo.language.psi.util.PsiTreeUtil; import consulo.language.util.IncorrectOperationException; import consulo.util.collection.ContainerUtil; -import consulo.util.lang.ObjectUtil; import consulo.util.lang.StringUtil; - import consulo.xml.language.psi.XmlElement; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; + import java.util.*; import java.util.function.Function; import java.util.regex.Pattern; @@ -45,6 +45,7 @@ public AopReferenceExpression(@Nonnull ASTNode node) { super(node); } + @Override public String toString() { return "AopReferenceExpression"; } @@ -62,6 +63,8 @@ public AopReferenceQualifier getGeneralizedQualifier() { @Nonnull + @Override + @RequiredReadAction public Resolvability getResolvability() { if (isDoubleDot()) return Resolvability.NONE; @@ -71,14 +74,17 @@ public Resolvability getResolvability() { return findChildByType(AopElementTypes.AOP_ASTERISK) != null ? (qualifier == null ? Resolvability.NONE : Resolvability.POLYVARIANT) : Resolvability.PLAIN; } + @RequiredReadAction public final boolean isDoubleDot() { return findChildByType(AopElementTypes.AOP_DOT_DOT) != null; } + @Override public AopPointcutExpressionFile getContainingFile() { return (AopPointcutExpressionFile)super.getContainingFile(); } + @RequiredReadAction private boolean isAcceptableTarget(PsiElement element) { if (element instanceof PsiParameter) return true; AopMemberReferenceExpression methodRef = PsiTreeUtil.getParentOfType(this, AopMemberReferenceExpression.class); @@ -87,18 +93,24 @@ private boolean isAcceptableTarget(PsiElement element) { } @Nonnull + @Override public AbstractQualifiedReference shortenReferences() { return this; } + @Override public PsiElement bindToElement(@Nonnull PsiElement element) throws IncorrectOperationException { CheckUtil.checkWritable(this); - return element instanceof PsiClass ? replaceReference(((PsiClass)element).getQualifiedName()) : super.bindToElement(element); + return element instanceof PsiClass psiClass ? replaceReference(psiClass.getQualifiedName()) : super.bindToElement(element); } + @Override + @RequiredReadAction protected ResolveResult[] resolveInner() { final Pattern regex = getRegex(); AbstractQualifiedReferenceResolvingProcessor processor = new AbstractQualifiedReferenceResolvingProcessor() { + @Override + @RequiredReadAction protected final void process(PsiElement element) { if (isAcceptableTarget(element)) { String name = ((PsiNamedElement)element).getName(); @@ -128,10 +140,14 @@ public AopPointcut resolvePointcut() { return results.length == 1 && results[0] instanceof AopPointcutResolveResult ? ((AopPointcutResolveResult)results[0]).getPointcut() : null; } + @Override + @RequiredReadAction protected boolean processVariantsInner(PsiScopeProcessor processor) { return getResolvability() == Resolvability.NONE || super.processVariantsInner(processor); } + @Override + @RequiredReadAction protected boolean processUnqualifiedVariants(PsiScopeProcessor processor) { ResolveState state = ResolveState.initial(); if (!getContainingFile().processDeclarations(processor, state, null, this)) return false; @@ -164,62 +180,68 @@ protected boolean processUnqualifiedVariants(PsiScopeProcessor processor) { return true; } + @Override + @RequiredReadAction protected PsiElement getReferenceNameElement() { return findChildByType(AopElementTypes.AOP_IDENTIFIER); } @Nonnull + @Override + @RequiredReadAction protected final AopReferenceExpression parseReference(String newText) { AopPointcutExpressionFile file = (AopPointcutExpressionFile)PsiFileFactory.getInstance(getProject()) - .createFileFromText("a", - AopPointcutExpressionFileType.INSTANCE, - newText + "()"); + .createFileFromText("a", AopPointcutExpressionFileType.INSTANCE, newText + "()"); PsiPointcutReferenceExpression pointcutExpression = (PsiPointcutReferenceExpression)file.getPointcutExpression(); - return ObjectUtil.assertNotNull(ObjectUtil.assertNotNull(pointcutExpression).getReferenceExpression()); + return Objects.requireNonNull(Objects.requireNonNull(pointcutExpression).getReferenceExpression()); } @Nullable + @Override + @RequiredReadAction protected PsiElement getSeparator() { return findChildByType(AopElementTypes.AOP_DOTS); } + @Override protected boolean isAccessible(PsiElement element) { - if (element instanceof PsiMethod) { - if (!((PsiMethod)element).hasModifierProperty(PsiModifier.PUBLIC) && getContainingFile().getContext() instanceof XmlElement) + if (element instanceof PsiMethod method) { + if (!method.isPublic() && getContainingFile().getContext() instanceof XmlElement) return false; } return super.isAccessible(element); } + @Override + @RequiredReadAction public LookupElement[] getVariants() { final Set signatures = new HashSet<>(); - final List list = new ArrayList(); + final List list = new ArrayList<>(); if (isPointcutReference()) { LocalAopModel model = getContainingFile().getAopModel(); final PsiMethod pointcutMethod = model.getPointcutMethod(); - final Set qnames = new HashSet(); + final Set qNames = new HashSet<>(); final String prefix = getText().substring(0, getRangeInElement().getStartOffset()); processVariantsInner(new BaseScopeProcessor() { + @Override + @RequiredReadAction public boolean execute(PsiElement element, ResolveState state) { - if (element instanceof PsiMethod && element != pointcutMethod && PsiUtilBase.getOriginalElement(element, - PsiMethod.class) != pointcutMethod && isAccessible( - element)) { - PsiMethod method = (PsiMethod)element; - if (method.getModifierList().findAnnotation(AopConstants.POINTCUT_ANNO) != null) { - String methodName = method.getName(); - list.add(LookupElementBuilder.create(prefix + methodName) - .withIcon(AopConstants.POINTCUT_ICON) - .withInsertHandler(new MethodParenthesesHandler(method, true))); - PsiClass aClass = method.getContainingClass(); - if (aClass != null && !(aClass instanceof PsiAnonymousClass)) { - PsiFile file = aClass.getContainingFile().getOriginalFile(); - if (file instanceof PsiJavaFile) { - PsiJavaFile javaFile = (PsiJavaFile)file; - String packageName = javaFile.getPackageName(); - String prefix = StringUtil.isEmpty(packageName) ? "" : packageName + "."; - qnames.add(prefix + aClass.getName() + "." + methodName); - } + if (element instanceof PsiMethod method + && element != pointcutMethod + && PsiUtilBase.getOriginalElement(element, PsiMethod.class) != pointcutMethod + && isAccessible(element) && method.getModifierList().findAnnotation(AopConstants.POINTCUT_ANNO) != null) { + String methodName = method.getName(); + list.add(LookupElementBuilder.create(prefix + methodName) + .withIcon(AopConstants.POINTCUT_ICON) + .withInsertHandler(new MethodParenthesesHandler(method, true))); + PsiClass aClass = method.getContainingClass(); + if (aClass != null && !(aClass instanceof PsiAnonymousClass)) { + PsiFile file = aClass.getContainingFile().getOriginalFile(); + if (file instanceof PsiJavaFile javaFile) { + String packageName = javaFile.getPackageName(); + String prefix = StringUtil.isEmpty(packageName) ? "" : packageName + "."; + qNames.add(prefix + aClass.getName() + "." + methodName); } } } @@ -234,10 +256,10 @@ public boolean execute(PsiElement element, ResolveState state) { if (method != pointcutMethod && PsiUtilBase.getOriginalElement(method, PsiMethod.class) != pointcutMethod && isAccessible(method)) { String qname = pointcut.getQualifiedName().getStringValue(); - if (qname != null && qname.startsWith(prefix) && !qnames.contains(qname)) { - list.add(LookupElementBuilder.create(qname). - withIcon(AopConstants.POINTCUT_ICON). - withInsertHandler(new MethodParenthesesHandler(method, false))); + if (qname != null && qname.startsWith(prefix) && !qNames.contains(qname)) { + list.add(LookupElementBuilder.create(qname) + .withIcon(AopConstants.POINTCUT_ICON) + .withInsertHandler(new MethodParenthesesHandler(method, false))); } } } @@ -245,6 +267,8 @@ public boolean execute(PsiElement element, ResolveState state) { } else { processVariantsInner(new BaseScopeProcessor() { + @Override + @RequiredReadAction public boolean execute(PsiElement element, ResolveState state) { if (isAcceptableTarget(element)) { PsiNamedElement namedElement = (PsiNamedElement)element; @@ -273,10 +297,12 @@ public boolean execute(PsiElement element, ResolveState state) { return list.toArray(new LookupElement[list.size()]); } + @RequiredReadAction public final boolean isPointcutReference() { return getParent() instanceof PsiPointcutReferenceExpression; } + @RequiredReadAction public final boolean isAnnotationReference() { PsiElement parent = getParent(); if (!(parent instanceof AopReferenceHolder)) return false; @@ -288,6 +314,8 @@ public final boolean isAnnotationReference() { } @Nonnull + @Override + @RequiredReadAction public Collection getPatterns() { String text = getText().trim(); if ("*".equals(text)) return Arrays.asList(AopPsiTypePattern.TRUE); @@ -318,32 +346,27 @@ else if (pattern == AopPsiTypePattern.TRUE) { AopPsiTypePattern rightPattern = "*".equals(ownText) ? PsiClassTypePattern.TRUE : new PsiClassTypePattern(ownText); - return ContainerUtil.map2List(patterns, - (Function)aopPsiTypePattern -> new ConcatenationPattern( - aopPsiTypePattern, - rightPattern, - doubleDot)); + return ContainerUtil.map2List( + patterns, + (Function)aopPsiTypePattern -> + new ConcatenationPattern(aopPsiTypePattern, rightPattern, doubleDot) + ); } - else { - PsiElement psiElement = resolve(); - if (psiElement instanceof PsiClass) { - String qualifiedName = ((PsiClass)psiElement).getQualifiedName(); - if (qualifiedName != null) { - return Arrays.asList((AopPsiTypePattern)new PsiClassTypePattern(qualifiedName)); - } + else if (resolve() instanceof PsiClass psiClass) { + String qualifiedName = psiClass.getQualifiedName(); + if (qualifiedName != null) { + return Arrays.asList((AopPsiTypePattern) new PsiClassTypePattern(qualifiedName)); } } return Arrays.asList((AopPsiTypePattern)new PsiClassTypePattern(text)); } + @Override public String getTypePattern() { - if (getGeneralizedQualifier() == null) { - PsiElement psiElement = resolve(); - if (psiElement instanceof PsiClass) { - String qualifiedName = ((PsiClass)psiElement).getQualifiedName(); - if (qualifiedName != null) { - return "'_:[regex(" + qualifiedName.replaceAll("\\.", "\\\\.") + ")]"; - } + if (getGeneralizedQualifier() == null && resolve() instanceof PsiClass psiClass) { + String qualifiedName = psiClass.getQualifiedName(); + if (qualifiedName != null) { + return "'_:[regex(" + qualifiedName.replaceAll("\\.", "\\\\.") + ")]"; } } @@ -360,6 +383,7 @@ public Pattern getRegex() { return Pattern.compile(getOwnText().replaceAll("\\*", ".*")); } + @RequiredReadAction private String getOwnText() { return getRangeInElement().substring(getText()); } @@ -369,7 +393,7 @@ private static class AopPointcutResolveResult extends PsiElementResolveResult { private final AopPointcut myPointcut; public AopPointcutResolveResult(@Nonnull AopPointcutImpl pointcut) { - super(ObjectUtil.assertNotNull(pointcut.getPsiElement())); + super(Objects.requireNonNull(pointcut.getPsiElement())); myPointcut = pointcut; } diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopSubtypeExpression.java b/aop-common/src/main/java/com/intellij/aop/psi/AopSubtypeExpression.java index 50e22969..a7bfdef0 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopSubtypeExpression.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopSubtypeExpression.java @@ -1,9 +1,9 @@ /* * Copyright (c) 2000-2007 JetBrains s.r.o. All Rights Reserved. */ - package com.intellij.aop.psi; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import consulo.util.collection.ContainerUtil; @@ -18,26 +18,31 @@ public AopSubtypeExpression(@Nonnull ASTNode node) { super(node); } + @Override public String toString() { return "AopSubtypeExpression"; } @Nonnull + @RequiredReadAction public AopTypeExpression getSupertypeExpression() { return findNotNullChildByClass(AopTypeExpression.class); } @Nonnull + @Override + @RequiredReadAction public Collection getPatterns() { return ContainerUtil.map2List(getSupertypeExpression().getPatterns(), SubtypePattern::new); } + @Override public String getTypePattern() { return "'_"; } + @Override public AopReferenceExpression.Resolvability getResolvability() { return AopReferenceExpression.Resolvability.NONE; } - } \ No newline at end of file diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopSyntaxHighlighter.java b/aop-common/src/main/java/com/intellij/aop/psi/AopSyntaxHighlighter.java index ae97ce3b..46f20256 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopSyntaxHighlighter.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopSyntaxHighlighter.java @@ -28,7 +28,7 @@ public class AopSyntaxHighlighter extends SyntaxHighlighterBase implements AopEl private static final Map ourMap; static { - ourMap = new HashMap(); + ourMap = new HashMap<>(); fillMap(ourMap, AOP_KEYWORD, AOP_THROWS); fillMap(ourMap, AOP_KEYWORD, AOP_NEW); fillMap(ourMap, AOP_KEYWORD, AOP_MODIFIER); @@ -45,11 +45,13 @@ public class AopSyntaxHighlighter extends SyntaxHighlighterBase implements AopEl } @Nonnull + @Override public Lexer getHighlightingLexer() { return new AopLexer(); } @Nonnull + @Override public TextAttributesKey[] getTokenHighlights(IElementType tokenType) { if (tokenType instanceof AopPointcutDesignatorTokenType) { return new TextAttributesKey[]{AOP_KEYWORD}; diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopThrowsList.java b/aop-common/src/main/java/com/intellij/aop/psi/AopThrowsList.java index 0fa93f9a..f92b633e 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopThrowsList.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopThrowsList.java @@ -6,6 +6,7 @@ import com.intellij.java.language.psi.PsiClassType; import com.intellij.java.language.psi.PsiReferenceList; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import consulo.util.lang.StringUtil; @@ -19,14 +20,17 @@ public AopThrowsList(@Nonnull ASTNode node) { super(node); } + @Override public String toString() { return "AopThrowsList"; } + @RequiredReadAction public AopReferenceHolder[] getExceptionPatterns() { return findChildrenByClass(AopReferenceHolder.class); } + @RequiredReadAction public boolean matches(PsiReferenceList list) { if (StringUtil.isEmpty(list.getText())) return false; diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopTypeExpression.java b/aop-common/src/main/java/com/intellij/aop/psi/AopTypeExpression.java index b5b25294..e0c57c93 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopTypeExpression.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopTypeExpression.java @@ -5,16 +5,13 @@ import jakarta.annotation.Nullable; -import org.jetbrains.annotations.NonNls; - /** * @author peter */ public interface AopTypeExpression extends AopPatternContainer { + @Override + AopPointcutExpressionFile getContainingFile(); - AopPointcutExpressionFile getContainingFile(); - - @Nullable - @NonNls - String getTypePattern(); + @Nullable + String getTypePattern(); } diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopTypeParameterList.java b/aop-common/src/main/java/com/intellij/aop/psi/AopTypeParameterList.java index abb9a047..07cdd014 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopTypeParameterList.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopTypeParameterList.java @@ -1,7 +1,6 @@ /* * Copyright (c) 2000-2007 JetBrains s.r.o. All Rights Reserved. */ - package com.intellij.aop.psi; import com.intellij.java.language.psi.PsiType; @@ -13,17 +12,17 @@ * @author peter */ public class AopTypeParameterList extends AopAbstractList { - public AopTypeParameterList(@Nonnull ASTNode node) { super(node); } + @Override protected PsiType getPsiType(@Nonnull PsiType psiType) { return psiType; } + @Override public String toString() { return "AopTypeParameterList"; } - } \ No newline at end of file diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopWildcardExpression.java b/aop-common/src/main/java/com/intellij/aop/psi/AopWildcardExpression.java index 6db2ca82..10331321 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/AopWildcardExpression.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/AopWildcardExpression.java @@ -1,9 +1,9 @@ /* * Copyright (c) 2000-2007 JetBrains s.r.o. All Rights Reserved. */ - package com.intellij.aop.psi; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import consulo.util.collection.ContainerUtil; @@ -20,16 +20,20 @@ public AopWildcardExpression(@Nonnull ASTNode node) { super(node); } + @Override public String toString() { return "AopWildcardExpression"; } @Nullable + @RequiredReadAction public AopTypeExpression getBound() { return findChildByClass(AopTypeExpression.class); } @Nonnull + @Override + @RequiredReadAction public Collection getPatterns() { AopTypeExpression bound = getBound(); boolean isSuper = isSuper(); @@ -38,14 +42,17 @@ public Collection getPatterns() { return ContainerUtil.map2List(bound.getPatterns(), aopPsiTypePattern -> new WildcardPattern(aopPsiTypePattern, isSuper)); } + @Override public String getTypePattern() { return "'_"; } + @RequiredReadAction public boolean isExtends() { return findChildByType(AopElementTypes.AOP_EXTENDS) != null; } + @RequiredReadAction public boolean isSuper() { return findChildByType(AopElementTypes.AOP_SUPER) != null; } diff --git a/aop-common/src/main/java/com/intellij/aop/psi/ArrayPattern.java b/aop-common/src/main/java/com/intellij/aop/psi/ArrayPattern.java index afd97f76..ee176b85 100644 --- a/aop-common/src/main/java/com/intellij/aop/psi/ArrayPattern.java +++ b/aop-common/src/main/java/com/intellij/aop/psi/ArrayPattern.java @@ -25,8 +25,10 @@ public boolean isVarargs() { return myVarargs; } + @Override public boolean accepts(@Nonnull PsiType type) { - return type instanceof PsiArrayType && myVarargs == type instanceof PsiEllipsisType && - myComponentPattern.accepts(((PsiArrayType)type).getComponentType()); + return type instanceof PsiArrayType arrayType + && myVarargs == type instanceof PsiEllipsisType + && myComponentPattern.accepts(arrayType.getComponentType()); } } diff --git a/aop-common/tests/com/intellij/aop/jam/AopModelTest.java b/aop-common/tests/com/intellij/aop/jam/AopModelTest.java index c9d4a9b4..1f65d80e 100644 --- a/aop-common/tests/com/intellij/aop/jam/AopModelTest.java +++ b/aop-common/tests/com/intellij/aop/jam/AopModelTest.java @@ -33,6 +33,7 @@ protected void setUp() throws Exception { super.setUp(); myRoot = myFixture.getTempDirFixture().getFile(""); new WriteCommandAction(getProject()) { + @Override protected void run(Result result) throws Throwable { PsiTestUtil.addSourceRoot(myModule, myRoot); } @@ -153,6 +154,7 @@ private JavaPsiFacade getJavaFacade() { private PsiJavaFile createFile(final String text) { VirtualFile file = new WriteCommandAction(getProject()) { + @Override protected void run(Result result) throws Throwable { VirtualFile file = myRoot.createChildData(this, "Aspects.java"); @@ -170,6 +172,7 @@ public void testPointcutExpression() throws Throwable { .createMethodFromText("@" + AopConstants.POINTCUT_ANNO + "(\"xxx\")\n" + "void foo(int a) {}", null); AopPointcut pointcut = new AopPointcutImpl() { @Nonnull + @Override public PsiMethod getPsiElement() { return method; } @@ -193,6 +196,7 @@ public boolean process(Processor processor) { "@" + AopConstants.AFTER_RETURNING_ANNO + "(pointcut=\"xxx\")\n" + "void foo(int a) {}" + "}").getMethods()[0]; AopAfterReturningAdviceImpl advice = new AopAfterReturningAdviceImpl() { + @Override public PsiMethod getPsiElement() { return method; } diff --git a/aop-common/tests/com/intellij/aop/psi/AopHighlightingTest.java b/aop-common/tests/com/intellij/aop/psi/AopHighlightingTest.java index 2c4ce57b..dbe009d4 100644 --- a/aop-common/tests/com/intellij/aop/psi/AopHighlightingTest.java +++ b/aop-common/tests/com/intellij/aop/psi/AopHighlightingTest.java @@ -44,6 +44,7 @@ protected void setUp() throws Exception { final PsiMethod method = contextClass.findMethodsByName("pointcut", false)[0]; final AopPointcutImpl pointcut = new AopPointcutImpl() { @Nonnull + @Override public PsiMethod getPsiElement() { return method; } diff --git a/aop-common/tests/com/intellij/aop/psi/AopInjectionTest.java b/aop-common/tests/com/intellij/aop/psi/AopInjectionTest.java index b6ca5755..27dab431 100644 --- a/aop-common/tests/com/intellij/aop/psi/AopInjectionTest.java +++ b/aop-common/tests/com/intellij/aop/psi/AopInjectionTest.java @@ -12,6 +12,7 @@ import com.intellij.aop.jam.AopConstants; import com.intellij.aop.jam.AopLanguageInjector; import com.intellij.testFramework.IdeaTestUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.language.Language; import consulo.language.inject.ConcatenationAwareInjector; import consulo.language.inject.MultiHostInjector; @@ -80,14 +81,16 @@ private static void checkIntoInjection(ConcatenationAwareInjector injector, fina final Ref visited = Ref.create(false); injector.getLanguagesToInject(new MultiHostRegistrar() { @Nonnull + @Override public /*this*/ MultiHostRegistrar startInjecting(@Nonnull Language language) { assertEquals(AopPointcutExpressionLanguage.getInstance(), language); return this; } @Nonnull - public /*this*/ MultiHostRegistrar addPlace(@NonNls @Nullable String prefix, @NonNls @Nullable String suffix, - @Nonnull PsiLanguageInjectionHost host, @Nonnull TextRange rangeInsideHost) { + @Override + public /*this*/ MultiHostRegistrar addPlace(@Nullable String prefix, @Nullable String suffix, + @Nonnull PsiLanguageInjectionHost host, @Nonnull TextRange rangeInsideHost) { assertFalse(visited.get()); visited.set(true); assertEquals(TextRange.from(1, attrValue.getTextLength() - 2), rangeInsideHost); @@ -96,8 +99,8 @@ private static void checkIntoInjection(ConcatenationAwareInjector injector, fina return this; } + @Override public void doneInjecting() { - } }, (PsiLanguageInjectionHost)attrValue); assertTrue(visited.get()); @@ -106,14 +109,17 @@ private static void checkIntoInjection(MultiHostInjector injector, final PsiElem final Ref visited = Ref.create(false); injector.getLanguagesToInject(new MultiHostRegistrar() { @Nonnull + @Override public /*this*/ MultiHostRegistrar startInjecting(@Nonnull Language language) { assertEquals(AopPointcutExpressionLanguage.getInstance(), language); return this; } @Nonnull - public /*this*/ MultiHostRegistrar addPlace(@NonNls @Nullable String prefix, @NonNls @Nullable String suffix, - @Nonnull PsiLanguageInjectionHost host, @Nonnull TextRange rangeInsideHost) { + @Override + @RequiredReadAction + public /*this*/ MultiHostRegistrar addPlace(@Nullable String prefix, @Nullable String suffix, + @Nonnull PsiLanguageInjectionHost host, @Nonnull TextRange rangeInsideHost) { assertFalse(visited.get()); visited.set(true); assertEquals(TextRange.from(1, attrValue.getTextLength() - 2), rangeInsideHost); @@ -122,8 +128,8 @@ private static void checkIntoInjection(MultiHostInjector injector, final PsiElem return this; } + @Override public void doneInjecting() { - } }, (PsiLanguageInjectionHost)attrValue); assertTrue(visited.get()); @@ -171,6 +177,7 @@ public void testAfterReturningAdviceInJava() throws Throwable { PsiAnnotation annotation = method.getModifierList().getAnnotations()[0]; PsiAnnotationMemberValue attrValue = annotation.findAttributeValue("value"); AopAfterReturningAdviceImpl advice = new AopAfterReturningAdviceImpl() { + @Override public PsiMethod getPsiElement() { return method; } @@ -191,6 +198,7 @@ public void testAfterThrowingAdviceInJava() throws Throwable { PsiAnnotation annotation = method.getModifierList().getAnnotations()[0]; PsiAnnotationMemberValue attrValue = annotation.findAttributeValue("value"); AopAfterThrowingAdviceImpl advice = new AopAfterThrowingAdviceImpl() { + @Override public PsiMethod getPsiElement() { return method; } @@ -223,14 +231,17 @@ private static void checkInjection(final PsiElement attrValue, ConcatenationAwar final Ref visited = Ref.create(false); injector.getLanguagesToInject(new MultiHostRegistrar() { @Nonnull + @Override public /*this*/ MultiHostRegistrar startInjecting(@Nonnull Language language) { assertEquals(AopPointcutExpressionLanguage.getInstance(), language); return this; } @Nonnull - public /*this*/ MultiHostRegistrar addPlace(@NonNls @Nullable String prefix, @NonNls @Nullable String suffix, - @Nonnull PsiLanguageInjectionHost host, @Nonnull TextRange rangeInsideHost) { + @Override + @RequiredReadAction + public /*this*/ MultiHostRegistrar addPlace(@Nullable String prefix, @Nullable String suffix, + @Nonnull PsiLanguageInjectionHost host, @Nonnull TextRange rangeInsideHost) { assertFalse(visited.get()); visited.set(true); assertEquals(TextRange.from(1, attrValue.getTextLength() - 2), rangeInsideHost); @@ -239,8 +250,8 @@ private static void checkInjection(final PsiElement attrValue, ConcatenationAwar return this; } + @Override public void doneInjecting() { - } }, (PsiLanguageInjectionHost)attrValue); assertTrue(visited.get()); @@ -249,14 +260,17 @@ private static void checkInjection(final PsiElement attrValue, MultiHostInjector final Ref visited = Ref.create(false); injector.getLanguagesToInject(new MultiHostRegistrar() { @Nonnull + @Override public /*this*/ MultiHostRegistrar startInjecting(@Nonnull Language language) { assertEquals(AopPointcutExpressionLanguage.getInstance(), language); return this; } @Nonnull - public /*this*/ MultiHostRegistrar addPlace(@NonNls @Nullable String prefix, @NonNls @Nullable String suffix, - @Nonnull PsiLanguageInjectionHost host, @Nonnull TextRange rangeInsideHost) { + @Override + @RequiredReadAction + public /*this*/ MultiHostRegistrar addPlace(@Nullable String prefix, @Nullable String suffix, + @Nonnull PsiLanguageInjectionHost host, @Nonnull TextRange rangeInsideHost) { assertFalse(visited.get()); visited.set(true); assertEquals(TextRange.from(1, attrValue.getTextLength() - 2), rangeInsideHost); @@ -265,8 +279,8 @@ private static void checkInjection(final PsiElement attrValue, MultiHostInjector return this; } + @Override public void doneInjecting() { - } }, (PsiLanguageInjectionHost)attrValue); assertTrue(visited.get()); @@ -297,20 +311,22 @@ public void testSpringAopRegexPointcut() throws Throwable { XmlAttributeValue attrValue = expression.getXmlAttributeValue(); new SpringAopInjector().getLanguagesToInject(new MultiHostRegistrar() { @Nonnull + @Override public /*this*/ MultiHostRegistrar startInjecting(@Nonnull Language language) { fail(); return null; } @Nonnull - public /*this*/ MultiHostRegistrar addPlace(@NonNls @Nullable String prefix, @NonNls @Nullable String suffix, - @Nonnull PsiLanguageInjectionHost host, @Nonnull TextRange rangeInsideHost) { + @Override + public /*this*/ MultiHostRegistrar addPlace(@Nullable String prefix, @Nullable String suffix, + @Nonnull PsiLanguageInjectionHost host, @Nonnull TextRange rangeInsideHost) { return null; } + @Override public void doneInjecting() { - } }, (PsiLanguageInjectionHost)attrValue); } diff --git a/aop-common/tests/com/intellij/aop/psi/AopJavaHighlightingTest.java b/aop-common/tests/com/intellij/aop/psi/AopJavaHighlightingTest.java index bbd1ad64..813c1897 100644 --- a/aop-common/tests/com/intellij/aop/psi/AopJavaHighlightingTest.java +++ b/aop-common/tests/com/intellij/aop/psi/AopJavaHighlightingTest.java @@ -29,6 +29,7 @@ protected void setUp() throws Exception { private void doTest(LocalInspectionTool... tools) throws Throwable { new WriteCommandAction(getProject()) { + @Override protected void run(Result result) throws Throwable { FacetManager.getInstance(myModule).addFacet(SpringFacetType.INSTANCE, SpringFacetType.INSTANCE.getPresentableName(), null); } diff --git a/aop-common/tests/com/intellij/aop/psi/AopQuickFixesTest.java b/aop-common/tests/com/intellij/aop/psi/AopQuickFixesTest.java index 91eeb877..bf4b9f11 100644 --- a/aop-common/tests/com/intellij/aop/psi/AopQuickFixesTest.java +++ b/aop-common/tests/com/intellij/aop/psi/AopQuickFixesTest.java @@ -38,7 +38,6 @@ * @author peter */ public class AopQuickFixesTest extends JavaCodeInsightFixtureTestCase { - protected void setUp() throws Exception { super.setUp(); @@ -102,6 +101,7 @@ private void checkDefineFix(String textBefore, String textAfter) { PsiAnnotation annotation = method.getModifierList().getAnnotations()[0]; final ArgNamesManipulator manipulator = new JavaArgNamesManipulator(getAdvice(method)); new WriteCommandAction(getProject()) { + @Override protected void run(Result result) throws Throwable { new SetArgNamesQuickFix("", true, manipulator, method) .applyFix(myFixture.getProject(), new MockProblemDescriptor(manipulator.getArgNamesProblemElement(), "", null)); @@ -135,6 +135,7 @@ public void testSpringArgNamesManipulator() throws Throwable { assertEquals(pointcutTag.getAttribute("arg-names").getValueElement(), manipulator.getArgNamesProblemElement()); new WriteCommandAction(getProject()) { + @Override protected void run(Result result) throws Throwable { manipulator.setArgNames("a,b,c"); } @@ -143,6 +144,7 @@ protected void run(Result result) throws Throwable { assertEquals(pointcutTag.getAttribute("arg-names").getValueElement(), manipulator.getArgNamesProblemElement()); new WriteCommandAction(getProject()) { + @Override protected void run(Result result) throws Throwable { manipulator.setArgNames(null); } @@ -187,6 +189,7 @@ private void checkAddAspectjAutoproxy() throws Throwable { myFixture.enableInspections(new SpringApplicationComponent()); myFixture.configureByFiles("AddAspectjAutoproxyQuickFix.java", getTestName(false) + ".xml"); new WriteCommandAction(getProject()) { + @Override protected void run(Result result) throws Throwable { SpringFacet facet = FacetManager.getInstance(myModule).addFacet(SpringFacetType.INSTANCE, "s", null); SpringFileSet fileSet = new SpringFileSet("a", "a", facet.getConfiguration()); @@ -213,5 +216,4 @@ public void testDeclareParentsImplementInterface() throws Throwable { myFixture.launchAction(myFixture.findSingleIntention("Create Interface foo.Intf")); myFixture.checkResultByFile("foo/Intf.java", getTestName(false) + "_after.java", true); } - } diff --git a/aop-common/tests/com/intellij/aop/psi/AopReferencesTest.java b/aop-common/tests/com/intellij/aop/psi/AopReferencesTest.java index c08cf75f..6944e026 100644 --- a/aop-common/tests/com/intellij/aop/psi/AopReferencesTest.java +++ b/aop-common/tests/com/intellij/aop/psi/AopReferencesTest.java @@ -237,25 +237,27 @@ public void testBindToElement() throws Throwable { @Nullable public PsiMetaData getMetaData() { return new PsiMetaData() { - + @Override public PsiElement getDeclaration() { throw new UnsupportedOperationException("Method getDeclaration is not yet implemented in " + getClass().getName()); } - @NonNls + @Override public String getName(PsiElement context) { return "fubar.xxx"; } - @NonNls + @Override public String getName() { throw new UnsupportedOperationException("Method getName is not yet implemented in " + getClass().getName()); } + @Override public void init(PsiElement element) { throw new UnsupportedOperationException("Method init is not yet implemented in " + getClass().getName()); } + @Override public Object[] getDependences() { throw new UnsupportedOperationException("Method getDependences is not yet implemented in " + getClass().getName()); } diff --git a/aop-common/tests/com/intellij/aop/psi/AopSpringJavaHighlightingTest.java b/aop-common/tests/com/intellij/aop/psi/AopSpringJavaHighlightingTest.java index ac3f1bce..516f5acd 100644 --- a/aop-common/tests/com/intellij/aop/psi/AopSpringJavaHighlightingTest.java +++ b/aop-common/tests/com/intellij/aop/psi/AopSpringJavaHighlightingTest.java @@ -60,6 +60,7 @@ private void doTest(String path, LocalInspectionTool... tools) throws Throwable public void testAddAspectJAutoproxy() throws Throwable { new WriteCommandAction(getProject()) { + @Override protected void run(Result result) throws Throwable { FacetManager.getInstance(myModule).addFacet(SpringFacetType.INSTANCE, "z", null); } diff --git a/plugin/src/main/java/com/intellij/spring/impl/ide/model/xml/aop/AfterReturningAdvice.java b/plugin/src/main/java/com/intellij/spring/impl/ide/model/xml/aop/AfterReturningAdvice.java index f1f5124d..60aed5d6 100644 --- a/plugin/src/main/java/com/intellij/spring/impl/ide/model/xml/aop/AfterReturningAdvice.java +++ b/plugin/src/main/java/com/intellij/spring/impl/ide/model/xml/aop/AfterReturningAdvice.java @@ -47,7 +47,6 @@ public interface AfterReturningAdvice extends DomElement, BasicAdvice, AopAfterR @Override GenericAttributeValue getPointcut(); - /** * Returns the value of the pointcut-ref child. *
@@ -73,10 +72,10 @@ public interface AfterReturningAdvice extends DomElement, BasicAdvice, AopAfterR
      * @return the value of the method child.
      */
     @Nonnull
+    @Override
     @Required
     GenericAttributeValue getMethod();
 
-
     /**
      * Returns the value of the arg-names child.
      * 
diff --git a/plugin/src/main/java/com/intellij/spring/impl/ide/model/xml/aop/AopConfig.java b/plugin/src/main/java/com/intellij/spring/impl/ide/model/xml/aop/AopConfig.java
index 3b6712f4..a61a7542 100644
--- a/plugin/src/main/java/com/intellij/spring/impl/ide/model/xml/aop/AopConfig.java
+++ b/plugin/src/main/java/com/intellij/spring/impl/ide/model/xml/aop/AopConfig.java
@@ -1,6 +1,5 @@
 // Generated on Thu Nov 09 17:15:14 MSK 2006
 // DTD/Schema  :    http://www.springframework.org/schema/aop
-
 package com.intellij.spring.impl.ide.model.xml.aop;
 
 import consulo.xml.dom.GenericAttributeValue;
@@ -13,7 +12,6 @@
  * http://www.springframework.org/schema/aop:configElemType interface.
  */
 public interface AopConfig extends SpringAopElement, AopModel {
-
 	/**
 	 * Returns the value of the proxy-target-class child.
 	 * 
@@ -27,7 +25,6 @@ public interface AopConfig extends SpringAopElement, AopModel {
 	@Nonnull
 	GenericAttributeValue getProxyTargetClass();
 
-
 	/**
 	 * Returns the list of pointcut children.
 	 * 
@@ -38,14 +35,15 @@ public interface AopConfig extends SpringAopElement, AopModel {
 	 * @return the list of pointcut children.
 	 */
 	@Nonnull
+    @Override
 	List getPointcuts();
+
 	/**
 	 * Adds new child to the list of pointcut children.
 	 * @return created child
 	 */
 	SpringPointcut addPointcut();
 
-
 	/**
 	 * Returns the list of advisor children.
 	 * 
@@ -57,13 +55,13 @@ public interface AopConfig extends SpringAopElement, AopModel {
 	 */
 	@Nonnull
 	List getAdvisors();
+
 	/**
 	 * Adds new child to the list of advisor children.
 	 * @return created child
 	 */
 	Advisor addAdvisor();
 
-
 	/**
 	 * Returns the list of aspect children.
 	 * 
@@ -74,12 +72,12 @@ public interface AopConfig extends SpringAopElement, AopModel {
 	 * @return the list of aspect children.
 	 */
 	@Nonnull
+    @Override
 	List getAspects();
+
 	/**
 	 * Adds new child to the list of aspect children.
 	 * @return created child
 	 */
 	SpringAspect addAspect();
-
-
 }
diff --git a/plugin/src/main/java/com/intellij/spring/impl/ide/model/xml/aop/AopPointcutConverter.java b/plugin/src/main/java/com/intellij/spring/impl/ide/model/xml/aop/AopPointcutConverter.java
index dabc8dd6..ed978819 100644
--- a/plugin/src/main/java/com/intellij/spring/impl/ide/model/xml/aop/AopPointcutConverter.java
+++ b/plugin/src/main/java/com/intellij/spring/impl/ide/model/xml/aop/AopPointcutConverter.java
@@ -5,7 +5,7 @@
 
 import com.intellij.aop.AopPointcut;
 import com.intellij.aop.jam.AopModuleService;
-import consulo.language.util.ModuleUtilCore;
+import consulo.annotation.access.RequiredReadAction;
 import consulo.util.collection.ContainerUtil;
 import consulo.util.lang.function.Condition;
 import consulo.xml.language.psi.XmlElement;
@@ -23,21 +23,22 @@
  */
 public class AopPointcutConverter extends ResolvingConverter {
   @Nonnull
+  @Override
+  @RequiredReadAction
   public Collection getVariants(ConvertContext context) {
     XmlElement element = context.getXmlElement();
     if (element == null) return Collections.emptyList();
 
-    return AopModuleService.getAopModel(ModuleUtilCore.findModuleForPsiElement(element)).getPointcuts();
+    return AopModuleService.getAopModel(element.getModule()).getPointcuts();
   }
 
-  public AopPointcut fromString(@Nullable @NonNls final String s, ConvertContext context) {
-    return s == null ? null : ContainerUtil.find(getVariants(context), new Condition() {
-      public boolean value(AopPointcut o) {
-        return s.equals(o.getQualifiedName().getStringValue());
-      }
-    });
+  @Override
+  @RequiredReadAction
+  public AopPointcut fromString(@Nullable String s, ConvertContext context) {
+    return s == null ? null : ContainerUtil.find(getVariants(context), o -> s.equals(o.getQualifiedName().getStringValue()));
   }
 
+  @Override
   public String toString(@Nullable AopPointcut aopPointcut, ConvertContext context) {
     return aopPointcut == null ? null : aopPointcut.getQualifiedName().getStringValue();
   }
diff --git a/plugin/src/main/java/com/intellij/spring/impl/ide/model/xml/context/AspectjWeaving.java b/plugin/src/main/java/com/intellij/spring/impl/ide/model/xml/context/AspectjWeaving.java
index cf20aef8..be8487f9 100644
--- a/plugin/src/main/java/com/intellij/spring/impl/ide/model/xml/context/AspectjWeaving.java
+++ b/plugin/src/main/java/com/intellij/spring/impl/ide/model/xml/context/AspectjWeaving.java
@@ -1,18 +1,23 @@
 // Generated on Wed Oct 17 15:28:10 MSD 2007
 // DTD/Schema  :    http://www.springframework.org/schema/context
-
 package com.intellij.spring.impl.ide.model.xml.context;
 
 /**
  * http://www.springframework.org/schema/context:aspectj-weavingAttrType enumeration.
  */
 public enum AspectjWeaving implements consulo.xml.dom.NamedEnum {
-	AUTODETECT ("autodetect"),
-	OFF ("off"),
-	ON ("on");
+    AUTODETECT("autodetect"),
+    OFF("off"),
+    ON("on");
+
+    private final String value;
 
-	private final String value;
-	private AspectjWeaving(String value) { this.value = value; }
-	public String getValue() { return value; }
+    private AspectjWeaving(String value) {
+        this.value = value;
+    }
 
+    @Override
+    public String getValue() {
+        return value;
+    }
 }
diff --git a/plugin/src/main/java/com/intellij/spring/impl/model/aop/AspectjAutoproxyImpl.java b/plugin/src/main/java/com/intellij/spring/impl/model/aop/AspectjAutoproxyImpl.java
index ac83feaf..8a0225c4 100644
--- a/plugin/src/main/java/com/intellij/spring/impl/model/aop/AspectjAutoproxyImpl.java
+++ b/plugin/src/main/java/com/intellij/spring/impl/model/aop/AspectjAutoproxyImpl.java
@@ -11,6 +11,7 @@
  * @author peter
  */
 public abstract class AspectjAutoproxyImpl extends DomSpringBeanImpl implements AspectjAutoproxy {
+  @Override
   public String getClassName() {
     return SpringConstants.ASPECTJ_AUTOPROXY_BEAN_CLASS;
   }

From a15a94160760dba9c20501be9e3c37fc8ddbdaab Mon Sep 17 00:00:00 2001
From: UNV 
Date: Sat, 25 Jul 2026 10:27:05 +0300
Subject: [PATCH 2/2] Fixes.

---
 .../intellij/aop/psi/AopParameterList.java    |  2 -
 .../psi/AopPointcutExpressionFileType.java    |  4 +-
 .../aop/psi/AopPsiTypePatternsUtil.java       |  1 -
 .../aop/psi/AopReferenceExpression.java       | 38 ++++++++++---------
 4 files changed, 22 insertions(+), 23 deletions(-)

diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopParameterList.java b/aop-common/src/main/java/com/intellij/aop/psi/AopParameterList.java
index 7f363444..c657b05a 100644
--- a/aop-common/src/main/java/com/intellij/aop/psi/AopParameterList.java
+++ b/aop-common/src/main/java/com/intellij/aop/psi/AopParameterList.java
@@ -7,8 +7,6 @@
 import com.intellij.java.language.psi.PsiParameterList;
 import com.intellij.java.language.psi.PsiType;
 import consulo.language.ast.ASTNode;
-import consulo.util.lang.function.PairFunction;
-
 import jakarta.annotation.Nonnull;
 
 import java.util.function.BiFunction;
diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutExpressionFileType.java b/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutExpressionFileType.java
index f6d69925..8b615ed0 100644
--- a/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutExpressionFileType.java
+++ b/aop-common/src/main/java/com/intellij/aop/psi/AopPointcutExpressionFileType.java
@@ -20,8 +20,8 @@ private AopPointcutExpressionFileType() {
   }
 
   @Nonnull
-  public   @Override
-  String getId() {
+  @Override
+  public String getId() {
     return "Pointcut Expression";
   }
 
diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopPsiTypePatternsUtil.java b/aop-common/src/main/java/com/intellij/aop/psi/AopPsiTypePatternsUtil.java
index 8ad071e0..549b9426 100644
--- a/aop-common/src/main/java/com/intellij/aop/psi/AopPsiTypePatternsUtil.java
+++ b/aop-common/src/main/java/com/intellij/aop/psi/AopPsiTypePatternsUtil.java
@@ -5,7 +5,6 @@
 
 import consulo.util.lang.Couple;
 import consulo.util.lang.Pair;
-import consulo.util.lang.function.PairFunction;
 
 import java.util.*;
 import java.util.function.BiFunction;
diff --git a/aop-common/src/main/java/com/intellij/aop/psi/AopReferenceExpression.java b/aop-common/src/main/java/com/intellij/aop/psi/AopReferenceExpression.java
index 0c4d17f1..52f6afe6 100644
--- a/aop-common/src/main/java/com/intellij/aop/psi/AopReferenceExpression.java
+++ b/aop-common/src/main/java/com/intellij/aop/psi/AopReferenceExpression.java
@@ -40,7 +40,6 @@
  * @author peter
  */
 public class AopReferenceExpression extends AbstractQualifiedReference implements AopReferenceQualifier {
-
   public AopReferenceExpression(@Nonnull ASTNode node) {
     super(node);
   }
@@ -57,11 +56,11 @@ enum Resolvability {
   }
 
   @Nullable
+  @RequiredReadAction
   public AopReferenceQualifier getGeneralizedQualifier() {
     return findChildByClass(AopReferenceQualifier.class);
   }
 
-
   @Nonnull
   @Override
   @RequiredReadAction
@@ -71,7 +70,9 @@ public Resolvability getResolvability() {
     AopReferenceQualifier qualifier = getGeneralizedQualifier();
     if (qualifier != null && qualifier.getResolvability() != Resolvability.PLAIN) return Resolvability.NONE;
 
-    return findChildByType(AopElementTypes.AOP_ASTERISK) != null ? (qualifier == null ? Resolvability.NONE : Resolvability.POLYVARIANT) : Resolvability.PLAIN;
+    return findChildByType(AopElementTypes.AOP_ASTERISK) != null
+      ? (qualifier == null ? Resolvability.NONE : Resolvability.POLYVARIANT)
+      : Resolvability.PLAIN;
   }
 
   @RequiredReadAction
@@ -249,15 +250,15 @@ && isAccessible(element) && method.getModifierList().findAnnotation(AopConstants
         }
       });
       for (AopPointcut pointcut : model.getPointcuts()) {
-        PsiElement element = pointcut.getIdentifyingPsiElement();
-        if ((element instanceof PsiAnnotation)) {
-          PsiMethod method = PsiTreeUtil.getParentOfType(element, PsiMethod.class);
+        if (pointcut.getIdentifyingPsiElement() instanceof PsiAnnotation annotation) {
+          PsiMethod method = PsiTreeUtil.getParentOfType(annotation, PsiMethod.class);
           assert method != null;
-          if (method != pointcutMethod && PsiUtilBase.getOriginalElement(method,
-                                                                         PsiMethod.class) != pointcutMethod && isAccessible(method)) {
-            String qname = pointcut.getQualifiedName().getStringValue();
-            if (qname != null && qname.startsWith(prefix) && !qNames.contains(qname)) {
-              list.add(LookupElementBuilder.create(qname)
+          if (method != pointcutMethod
+            && PsiUtilBase.getOriginalElement(method, PsiMethod.class) != pointcutMethod
+            && isAccessible(method)) {
+            String qName = pointcut.getQualifiedName().getStringValue();
+            if (qName != null && qName.startsWith(prefix) && !qNames.contains(qName)) {
+              list.add(LookupElementBuilder.create(qName)
                 .withIcon(AopConstants.POINTCUT_ICON)
                 .withInsertHandler(new MethodParenthesesHandler(method, false)));
             }
@@ -275,12 +276,12 @@ public boolean execute(PsiElement element, ResolveState state) {
             String name = namedElement.getName();
             assert name != null;
             LookupElementBuilder item = LookupElementBuilder.create(namedElement, name);
-            if (element instanceof PsiMethod) {
-              if (!signatures.add(((PsiMethod)element).getSignature(state.get(PsiSubstitutor.KEY)))) {
+            if (element instanceof PsiMethod method) {
+              if (!signatures.add(method.getSignature(state.get(PsiSubstitutor.KEY)))) {
                 return true;
               }
 
-              item = item.setInsertHandler(new MethodParenthesesHandler((PsiMethod)element, true));
+              item = item.setInsertHandler(new MethodParenthesesHandler(method, true));
             }
             if (element instanceof PsiPackage) {
               list.add(TailTypeDecorator.withTail(item, TailType.DOT));
@@ -330,8 +331,8 @@ public Collection getPatterns() {
       if (patterns.size() == 1) {
         AopPsiTypePattern pattern = patterns.iterator().next();
         String prefix;
-        if (pattern instanceof PsiClassTypePattern) {
-          prefix = ((PsiClassTypePattern)pattern).getText();
+        if (pattern instanceof PsiClassTypePattern classTypePattern) {
+          prefix = classTypePattern.getText();
         }
         else if (pattern == AopPsiTypePattern.TRUE) {
           prefix = "*";
@@ -344,7 +345,6 @@ else if (pattern == AopPsiTypePattern.TRUE) {
         }
       }
 
-
       AopPsiTypePattern rightPattern = "*".equals(ownText) ? PsiClassTypePattern.TRUE : new PsiClassTypePattern(ownText);
       return ContainerUtil.map2List(
         patterns,
@@ -355,13 +355,14 @@ else if (pattern == AopPsiTypePattern.TRUE) {
     else if (resolve() instanceof PsiClass psiClass) {
       String qualifiedName = psiClass.getQualifiedName();
       if (qualifiedName != null) {
-          return Arrays.asList((AopPsiTypePattern) new PsiClassTypePattern(qualifiedName));
+        return Arrays.asList((AopPsiTypePattern) new PsiClassTypePattern(qualifiedName));
       }
     }
     return Arrays.asList((AopPsiTypePattern)new PsiClassTypePattern(text));
   }
 
   @Override
+  @RequiredReadAction
   public String getTypePattern() {
     if (getGeneralizedQualifier() == null && resolve() instanceof PsiClass psiClass) {
       String qualifiedName = psiClass.getQualifiedName();
@@ -379,6 +380,7 @@ public String getTypePattern() {
     return "'_:[regex(" + regex + ")]";
   }
 
+  @RequiredReadAction
   public Pattern getRegex() {
     return Pattern.compile(getOwnText().replaceAll("\\*", ".*"));
   }