Cleanup: NotNull/Nullable
[idea/community.git] / java / java-psi-api / src / com / intellij / patterns / PsiMemberPattern.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.psi.PsiClass;
5 import com.intellij.psi.PsiMember;
6 import com.intellij.util.PairProcessor;
7 import com.intellij.util.ProcessingContext;
8 import org.jetbrains.annotations.NonNls;
9 import org.jetbrains.annotations.NotNull;
10 import org.jetbrains.annotations.Nullable;
11
12 /**
13  * @author peter
14  */
15 public class PsiMemberPattern<T extends PsiMember, Self extends PsiMemberPattern<T,Self>> extends PsiModifierListOwnerPattern<T,Self> {
16   public PsiMemberPattern(@NotNull final InitialPatternCondition<T> condition) {
17     super(condition);
18   }
19
20   protected PsiMemberPattern(final Class<T> aClass) {
21     super(aClass);
22   }
23
24   @NotNull
25   public Self inClass(final @NonNls String qname) {
26     return inClass(PsiJavaPatterns.psiClass().withQualifiedName(qname));
27   }
28
29   @NotNull
30   public Self inClass(final ElementPattern pattern) {
31     return with(new PatternConditionPlus<T, PsiClass>("inClass", pattern) {
32       @Override
33       public boolean processValues(T t, ProcessingContext context, PairProcessor<PsiClass, ProcessingContext> processor) {
34         return processor.process(t.getContainingClass(), context);
35       }
36     });
37   }
38
39   public static class Capture extends PsiMemberPattern<PsiMember, Capture> {
40
41     protected Capture() {
42       super(new InitialPatternCondition<PsiMember>(PsiMember.class) {
43         @Override
44         public boolean accepts(@Nullable final Object o, final ProcessingContext context) {
45           return o instanceof PsiMember;
46         }
47       });
48     }
49   }
50 }