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 java.io.IOException;
37 import java.util.Enumeration;
38 import java.util.HashMap;
39 import java.util.Hashtable;
40 import java.util.Map;
41
42 import javax.servlet.Filter;
43 import javax.servlet.FilterChain;
44 import javax.servlet.FilterConfig;
45 import javax.servlet.ServletContext;
46 import javax.servlet.ServletException;
47 import javax.servlet.http.HttpServletRequest;
48 import javax.servlet.http.HttpServletResponse;
49
50 import org.slf4j.Logger;
51 import org.slf4j.LoggerFactory;
52
53
54
55
56
57
58
59 public class FilterDecorator extends AbstractMgnlFilter {
60
61
62
63
64 private Filter decoratedFilter;
65
66
67
68
69 private Map config;
70
71
72
73
74 private static Logger log = LoggerFactory.getLogger(FilterDecorator.class);
75
76 public void init(FilterConfig filterConfig) throws ServletException {
77 this.decoratedFilter.init(new CustomFilterConfig(filterConfig, config));
78 }
79
80 public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException{
81 this.decoratedFilter.doFilter(request, response, chain);
82 }
83
84 public void destroy() {
85 this.decoratedFilter.destroy();
86 }
87
88 public Map getConfig() {
89 return this.config;
90 }
91
92 public void setConfig(Map config) {
93 this.config = config;
94 }
95
96 public Filter getDecoratedFilter() {
97 return this.decoratedFilter;
98 }
99
100 public void setDecoratedFilter(Filter decoratedFilter) {
101 this.decoratedFilter = decoratedFilter;
102 }
103
104 public static class CustomFilterConfig implements FilterConfig {
105
106 private Map parameters;
107
108 private FilterConfig parent;
109
110
111
112
113 public CustomFilterConfig(FilterConfig parent, Map parameters) {
114 super();
115 this.parent = parent;
116 if (parameters != null) {
117 this.parameters = parameters;
118 }
119 else {
120 this.parameters = new HashMap();
121 }
122 }
123
124
125
126
127 public String getFilterName() {
128 return parent.getFilterName();
129 }
130
131
132
133
134 public String getInitParameter(String name) {
135 return (String) parameters.get(name);
136 }
137
138
139
140
141 public Enumeration getInitParameterNames() {
142 return new Hashtable(parameters).keys();
143 }
144
145
146
147
148 public ServletContext getServletContext() {
149 return parent.getServletContext();
150 }
151
152
153
154
155 public Object getInitParameterObject(String name) {
156 return parameters.get(name);
157 }
158 }
159 }