1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.cms.filters;
35
36 import info.magnolia.cms.util.RequestHeaderUtil;
37 import info.magnolia.voting.Voter;
38 import info.magnolia.voting.Voting;
39
40 import java.io.IOException;
41
42 import javax.servlet.FilterChain;
43 import javax.servlet.FilterConfig;
44 import javax.servlet.ServletException;
45 import javax.servlet.ServletRequest;
46 import javax.servlet.ServletResponse;
47 import javax.servlet.http.HttpServletRequest;
48 import javax.servlet.http.HttpServletResponse;
49
50 import org.apache.commons.lang.ArrayUtils;
51
52
53
54
55
56
57
58 public abstract class AbstractMgnlFilter implements MgnlFilter {
59
60 private String name;
61
62 private Voter[] bypasses = new Voter[0];
63
64 private boolean enabled = true;
65
66 public void init(FilterConfig filterConfig) throws ServletException {
67 }
68
69 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
70 doFilter((HttpServletRequest) request, (HttpServletResponse) response, chain);
71 }
72
73 public abstract void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException;
74
75 public boolean bypasses(HttpServletRequest request) {
76 if(!isEnabled()){
77 return true;
78 }
79 Voting voting = Voting.Factory.getDefaultVoting();
80 return voting.vote(bypasses, request) > 0;
81 }
82
83 public void destroy() {
84
85 }
86
87 public Voter[] getBypasses() {
88 return this.bypasses;
89 }
90
91 public void addBypass(Voter voter) {
92 this.bypasses = (Voter[]) ArrayUtils.add(this.bypasses, voter);
93 }
94
95 public String getName() {
96 return this.name;
97 }
98
99 public void setName(String name) {
100 this.name = name;
101 }
102
103
104 public boolean isEnabled() {
105 return this.enabled;
106 }
107
108
109 public void setEnabled(boolean enabled) {
110 this.enabled = enabled;
111 }
112
113
114 protected boolean acceptsGzipEncoding(HttpServletRequest request) {
115 return RequestHeaderUtil.acceptsGzipEncoding(request);
116 }
117
118 protected boolean acceptsEncoding(final HttpServletRequest request, final String name) {
119 return RequestHeaderUtil.acceptsEncoding(request, name);
120 }
121
122 protected boolean headerContains(final HttpServletRequest request, final String header, final String value) {
123 return RequestHeaderUtil.headerContains(request, header, value);
124 }
125
126 protected void addAndVerifyHeader(HttpServletResponse response, String name, String value) {
127 RequestHeaderUtil.addAndVerifyHeader(response, name, value);
128 }
129 }