1 21 package proguard.classfile.attribute.annotation.visitor; 22 23 import proguard.classfile.*; 24 import proguard.classfile.attribute.annotation.Annotation; 25 import proguard.classfile.util.SimplifiedVisitor; 26 import proguard.util.*; 27 28 35 public class AnnotationTypeFilter 36 extends SimplifiedVisitor 37 implements AnnotationVisitor 38 { 39 private StringMatcher regularExpressionMatcher; 40 private AnnotationVisitor annotationVisitor; 41 42 43 50 public AnnotationTypeFilter(String regularExpression, 51 AnnotationVisitor annotationVisitor) 52 { 53 this.regularExpressionMatcher = new ClassNameListMatcher(regularExpression); 54 this.annotationVisitor = annotationVisitor; 55 } 56 57 58 60 public void visitAnnotation(Clazz clazz, Annotation annotation) 61 { 62 if (accepted(annotation.getType(clazz))) 63 { 64 annotationVisitor.visitAnnotation(clazz, annotation); 65 } 66 } 67 68 69 public void visitAnnotation(Clazz clazz, Field field, Annotation annotation) 70 { 71 if (accepted(annotation.getType(clazz))) 72 { 73 annotationVisitor.visitAnnotation(clazz, field, annotation); 74 } 75 } 76 77 78 public void visitAnnotation(Clazz clazz, Method method, Annotation annotation) 79 { 80 if (accepted(annotation.getType(clazz))) 81 { 82 annotationVisitor.visitAnnotation(clazz, method, annotation); 83 } 84 } 85 86 87 public void visitAnnotation(Clazz clazz, Method method, int parameterIndex, Annotation annotation) 88 { 89 if (accepted(annotation.getType(clazz))) 90 { 91 annotationVisitor.visitAnnotation(clazz, method, parameterIndex, annotation); 92 } 93 } 94 95 96 98 private boolean accepted(String name) 99 { 100 return regularExpressionMatcher.matches(name); 101 } 102 } 103 | Popular Tags |