1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package com.acme;
20
21 import java.util.EnumSet;
22 import java.util.HashMap;
23 import java.util.Map;
24 import java.util.Set;
25
26 import javax.annotation.PostConstruct;
27 import javax.annotation.PreDestroy;
28 import javax.servlet.DispatcherType;
29 import javax.servlet.FilterRegistration;
30 import javax.servlet.HttpConstraintElement;
31 import javax.servlet.ServletContextAttributeEvent;
32 import javax.servlet.ServletContextAttributeListener;
33 import javax.servlet.ServletContextEvent;
34 import javax.servlet.ServletContextListener;
35 import javax.servlet.ServletRegistration;
36 import javax.servlet.ServletRequestAttributeEvent;
37 import javax.servlet.ServletRequestAttributeListener;
38 import javax.servlet.ServletRequestEvent;
39 import javax.servlet.ServletRequestListener;
40 import javax.servlet.ServletSecurityElement;
41 import javax.servlet.annotation.ServletSecurity;
42 import javax.servlet.http.HttpServletRequest;
43 import javax.servlet.http.HttpSessionActivationListener;
44 import javax.servlet.http.HttpSessionAttributeListener;
45 import javax.servlet.http.HttpSessionBindingEvent;
46 import javax.servlet.http.HttpSessionEvent;
47 import javax.servlet.http.HttpSessionListener;
48
49 public class TestListener implements HttpSessionListener, HttpSessionAttributeListener, HttpSessionActivationListener, ServletContextListener, ServletContextAttributeListener, ServletRequestListener, ServletRequestAttributeListener
50 {
51 Map<String,Throwable> _called=new HashMap<>();
52
53 public TestListener()
54 {
55 _called.put("TestListener",new Throwable());
56 }
57
58 @PostConstruct
59 public void postConstruct()
60 {
61 _called.put("postConstruct",new Throwable());
62 }
63
64 @PreDestroy
65 public void preDestroy()
66 {
67 _called.put("preDestroy",new Throwable());
68 }
69
70 @Override
71 public void attributeAdded(HttpSessionBindingEvent se)
72 {
73
74
75 _called.put("attributeAdded",new Throwable());
76 }
77
78 @Override
79 public void attributeRemoved(HttpSessionBindingEvent se)
80 {
81
82 _called.put("attributeRemoved",new Throwable());
83 }
84
85 @Override
86 public void attributeReplaced(HttpSessionBindingEvent se)
87 {
88
89 _called.put("attributeReplaced",new Throwable());
90 }
91
92 @Override
93 public void sessionWillPassivate(HttpSessionEvent se)
94 {
95
96 _called.put("sessionWillPassivate",new Throwable());
97 }
98
99 @Override
100 public void sessionDidActivate(HttpSessionEvent se)
101 {
102
103 _called.put("sessionDidActivate",new Throwable());
104 }
105
106 @Override
107 public void contextInitialized(ServletContextEvent sce)
108 {
109
110 _called.put("contextInitialized",new Throwable());
111
112
113 ServletRegistration.Dynamic rego = sce.getServletContext().addServlet("RegoTest", RegTest.class.getName());
114 rego.addMapping("/rego/*");
115 HttpConstraintElement constraintElement = new HttpConstraintElement(ServletSecurity.EmptyRoleSemantic.PERMIT,
116 ServletSecurity.TransportGuarantee.NONE, new String[]{"admin"});
117 ServletSecurityElement securityElement = new ServletSecurityElement(constraintElement, null);
118 Set<String> unchanged = rego.setServletSecurity(securityElement);
119
120
121
122 ServletRegistration.Dynamic rego2 = sce.getServletContext().addServlet("RegoTest2", RegTest.class.getName());
123 rego2.addMapping("/rego2/*");
124 securityElement = new ServletSecurityElement(constraintElement, null);
125 unchanged = rego2.setServletSecurity(securityElement);
126
127
128
129 FilterRegistration registration = sce.getServletContext().addFilter("TestFilter",TestFilter.class.getName());
130 if (registration != null)
131 {
132 ((FilterRegistration.Dynamic)registration).setAsyncSupported(true);
133 }
134 else
135 {
136 registration=sce.getServletContext().getFilterRegistration("TestFilter");
137 }
138 registration.setInitParameter("remote", "false");
139 registration.addMappingForUrlPatterns(
140 EnumSet.of(DispatcherType.ERROR,DispatcherType.ASYNC,DispatcherType.FORWARD,DispatcherType.INCLUDE,DispatcherType.REQUEST),
141 true,
142 new String[]{"/*"});
143 }
144
145 @Override
146 public void contextDestroyed(ServletContextEvent sce)
147 {
148 _called.put("contextDestroyed",new Throwable());
149
150 }
151
152 @Override
153 public void attributeAdded(ServletContextAttributeEvent scab)
154 {
155 _called.put("attributeAdded",new Throwable());
156
157 }
158
159 @Override
160 public void attributeRemoved(ServletContextAttributeEvent scab)
161 {
162 _called.put("attributeRemoved",new Throwable());
163
164 }
165
166 @Override
167 public void attributeReplaced(ServletContextAttributeEvent scab)
168 {
169 _called.put("attributeReplaced",new Throwable());
170
171 }
172
173 @Override
174 public void requestDestroyed(ServletRequestEvent sre)
175 {
176 _called.put("requestDestroyed",new Throwable());
177 ((HttpServletRequest)sre.getServletRequest()).getSession(false);
178 sre.getServletRequest().setAttribute("requestInitialized",null);
179
180 }
181
182 @Override
183 public void requestInitialized(ServletRequestEvent sre)
184 {
185 _called.put("requestInitialized",new Throwable());
186 sre.getServletRequest().setAttribute("requestInitialized","'"+sre.getServletContext().getContextPath()+"'");
187
188 }
189
190 @Override
191 public void attributeAdded(ServletRequestAttributeEvent srae)
192 {
193 _called.put("attributeAdded",new Throwable());
194
195 }
196
197 @Override
198 public void attributeRemoved(ServletRequestAttributeEvent srae)
199 {
200 _called.put("attributeRemoved",new Throwable());
201
202 }
203
204 @Override
205 public void attributeReplaced(ServletRequestAttributeEvent srae)
206 {
207 _called.put("attributeReplaced",new Throwable());
208
209 }
210
211 @Override
212 public void sessionCreated(HttpSessionEvent se)
213 {
214 _called.put("sessionCreated",new Throwable());
215
216 }
217
218 @Override
219 public void sessionDestroyed(HttpSessionEvent se)
220 {
221 _called.put("sessionDestroyed",new Throwable());
222
223 }
224
225
226 }