[maven] remove unfinished quick fix
[idea/community.git] / java / java-psi-api / src / com / intellij / patterns / PsiModifierListOwnerPattern.java
1 // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.patterns;
3
4 import com.intellij.codeInsight.AnnotationUtil;
5 import com.intellij.psi.PsiModifierList;
6 import com.intellij.psi.PsiModifierListOwner;
7 import com.intellij.util.ProcessingContext;
8 import com.intellij.util.containers.ContainerUtil;
9 import org.jetbrains.annotations.NonNls;
10 import org.jetbrains.annotations.NotNull;
11
12 /**
13  * @author peter
14  */
15 public class PsiModifierListOwnerPattern<T extends PsiModifierListOwner, Self extends PsiModifierListOwnerPattern<T,Self>> extends PsiElementPattern<T,Self> {
16   public PsiModifierListOwnerPattern(@NotNull final InitialPatternCondition<T> condition) {
17     super(condition);
18   }
19
20   protected PsiModifierListOwnerPattern(final Class<T> aClass) {
21     super(aClass);
22   }
23
24   public Self withModifiers(final String... modifiers) {
25     return with(new PatternCondition<T>("withModifiers") {
26       @Override
27       public boolean accepts(@NotNull final T t, final ProcessingContext context) {
28         return ContainerUtil.and(modifiers, s -> t.hasModifierProperty(s));
29       }
30     });
31   }
32
33   public Self withoutModifiers(final String... modifiers) {
34     return with(new PatternCondition<T>("withoutModifiers") {
35       @Override
36       public boolean accepts(@NotNull final T t, final ProcessingContext context) {
37         return ContainerUtil.and(modifiers, s -> !t.hasModifierProperty(s));
38       }
39     });
40   }
41
42   public Self withAnnotation(@NonNls final String qualifiedName) {
43     return with(new PatternCondition<T>("withAnnotation") {
44       @Override
45       public boolean accepts(@NotNull final T t, final ProcessingContext context) {
46         final PsiModifierList modifierList = t.getModifierList();
47         return modifierList != null && modifierList.hasAnnotation(qualifiedName);
48       }
49     });
50   }
51
52   public Self withAnnotations(@NonNls final String... qualifiedNames) {
53     return with(new PatternCondition<T>("withAnnotations") {
54       @Override
55       public boolean accepts(@NotNull final T t, final ProcessingContext context) {
56         return AnnotationUtil.findAnnotation(t, qualifiedNames) != null;
57       }
58     });
59   }
60
61   public static class Capture<T extends PsiModifierListOwner> extends PsiModifierListOwnerPattern<T, Capture<T>> {
62     public Capture(@NotNull InitialPatternCondition<T> condition) {
63       super(condition);
64     }
65   }
66 }