1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.puppycrawl.tools.checkstyle.filters;
21
22 import java.util.Collections;
23 import java.util.Set;
24
25 import com.puppycrawl.tools.checkstyle.api.AuditEvent;
26 import com.puppycrawl.tools.checkstyle.api.AutomaticBean;
27 import com.puppycrawl.tools.checkstyle.api.CheckstyleException;
28 import com.puppycrawl.tools.checkstyle.api.ExternalResourceHolder;
29 import com.puppycrawl.tools.checkstyle.api.Filter;
30 import com.puppycrawl.tools.checkstyle.api.FilterSet;
31 import com.puppycrawl.tools.checkstyle.utils.FilterUtil;
32
33
34
35
36
37
38
39 public class SuppressionFilter extends AutomaticBean implements Filter, ExternalResourceHolder {
40
41
42 private String file;
43
44 private boolean optional;
45
46 private FilterSet filters = new FilterSet();
47
48
49
50
51
52 public void setFile(String fileName) {
53 file = fileName;
54 }
55
56
57
58
59
60 public void setOptional(boolean optional) {
61 this.optional = optional;
62 }
63
64 @Override
65 public boolean accept(AuditEvent event) {
66 return filters.accept(event);
67 }
68
69 @Override
70 protected void finishLocalSetup() throws CheckstyleException {
71 if (file != null) {
72 if (optional) {
73 if (FilterUtil.isFileExists(file)) {
74 filters = SuppressionsLoader.loadSuppressions(file);
75 }
76 else {
77 filters = new FilterSet();
78 }
79 }
80 else {
81 filters = SuppressionsLoader.loadSuppressions(file);
82 }
83 }
84 }
85
86 @Override
87 public Set<String> getExternalResourceLocations() {
88 return Collections.singleton(file);
89 }
90
91 }