View Javadoc

1   //
2   //  ========================================================================
3   //  Copyright (c) 1995-2012 Mort Bay Consulting Pty. Ltd.
4   //  ------------------------------------------------------------------------
5   //  All rights reserved. This program and the accompanying materials
6   //  are made available under the terms of the Eclipse Public License v1.0
7   //  and Apache License v2.0 which accompanies this distribution.
8   //
9   //      The Eclipse Public License is available at
10  //      http://www.eclipse.org/legal/epl-v10.html
11  //
12  //      The Apache License v2.0 is available at
13  //      http://www.opensource.org/licenses/apache2.0.php
14  //
15  //  You may elect to redistribute this code under either of these licenses.
16  //  ========================================================================
17  //
18  
19  package com.acme;
20  
21  import javax.servlet.DispatcherType;
22  import javax.servlet.ServletContextAttributeEvent;
23  import javax.servlet.ServletContextAttributeListener;
24  import javax.servlet.ServletContextEvent;
25  import javax.servlet.ServletContextListener;
26  import javax.servlet.ServletRequestAttributeEvent;
27  import javax.servlet.ServletRequestAttributeListener;
28  import javax.servlet.ServletRequestEvent;
29  import javax.servlet.ServletRequestListener;
30  import javax.servlet.ServletRegistration;
31  import javax.servlet.FilterRegistration;
32  import javax.servlet.ServletSecurityElement;
33  import javax.servlet.HttpConstraintElement;
34  import javax.servlet.HttpMethodConstraintElement;
35  import javax.servlet.annotation.ServletSecurity;
36  import javax.servlet.http.HttpServletRequest;
37  import javax.servlet.http.HttpSessionActivationListener;
38  import javax.servlet.http.HttpSessionAttributeListener;
39  import javax.servlet.http.HttpSessionBindingEvent;
40  import javax.servlet.http.HttpSessionEvent;
41  import javax.servlet.http.HttpSessionListener;
42  
43  import java.util.EnumSet;
44  import java.util.Set;
45  
46  public class TestListener implements HttpSessionListener,  HttpSessionAttributeListener, HttpSessionActivationListener, ServletContextListener, ServletContextAttributeListener, ServletRequestListener, ServletRequestAttributeListener
47  {
48      public void attributeAdded(HttpSessionBindingEvent se)
49      {
50          // System.err.println("attributedAdded "+se);
51      }
52  
53      public void attributeRemoved(HttpSessionBindingEvent se)
54      {
55          // System.err.println("attributeRemoved "+se);
56      }
57  
58      public void attributeReplaced(HttpSessionBindingEvent se)
59      {
60          // System.err.println("attributeReplaced "+se);
61      }
62  
63      public void sessionWillPassivate(HttpSessionEvent se)
64      {
65          // System.err.println("sessionWillPassivate "+se);
66      }
67  
68      public void sessionDidActivate(HttpSessionEvent se)
69      {
70          // System.err.println("sessionDidActivate "+se);
71      }
72  
73      public void contextInitialized(ServletContextEvent sce)
74      {	
75          //configure programmatic security
76          ServletRegistration.Dynamic rego = sce.getServletContext().addServlet("RegoTest", RegTest.class.getName());
77          rego.addMapping("/rego/*");
78          HttpConstraintElement constraintElement = new HttpConstraintElement(ServletSecurity.EmptyRoleSemantic.PERMIT, 
79                                                                              ServletSecurity.TransportGuarantee.NONE, new String[]{"admin"});
80          ServletSecurityElement securityElement = new ServletSecurityElement(constraintElement, null);
81          Set<String> unchanged = rego.setServletSecurity(securityElement);
82          System.err.println("Security constraints registered: "+unchanged.isEmpty());
83  
84          //Test that a security constraint from web.xml can't be overridden programmatically
85          ServletRegistration.Dynamic rego2 = sce.getServletContext().addServlet("RegoTest2", RegTest.class.getName());
86          rego2.addMapping("/rego2/*");
87          securityElement = new ServletSecurityElement(constraintElement, null);
88          unchanged = rego2.setServletSecurity(securityElement);
89          System.err.println("Overridding web.xml constraints not possible:" +!unchanged.isEmpty());
90  
91      	/* For servlet 3.0 */
92      	FilterRegistration.Dynamic registration = sce.getServletContext().addFilter("TestFilter",TestFilter.class.getName());
93      	registration.setInitParameter("remote", "false");
94      	registration.setAsyncSupported(true);
95      	registration.addMappingForUrlPatterns(
96      	        EnumSet.of(DispatcherType.ERROR,DispatcherType.ASYNC,DispatcherType.FORWARD,DispatcherType.INCLUDE,DispatcherType.REQUEST),
97      	        true, 
98      	        new String[]{"/*"});
99      }
100 
101     public void contextDestroyed(ServletContextEvent sce)
102     {
103         // System.err.println("contextDestroyed "+sce);
104     }
105 
106     public void attributeAdded(ServletContextAttributeEvent scab)
107     {
108         // System.err.println("attributeAdded "+scab);
109     }
110 
111     public void attributeRemoved(ServletContextAttributeEvent scab)
112     {
113         // System.err.println("attributeRemoved "+scab);
114     }
115 
116     public void attributeReplaced(ServletContextAttributeEvent scab)
117     {
118         // System.err.println("attributeReplaced "+scab);
119     }
120 
121     public void requestDestroyed(ServletRequestEvent sre)
122     {
123         ((HttpServletRequest)sre.getServletRequest()).getSession(false);
124         sre.getServletRequest().setAttribute("requestInitialized",null);
125         // System.err.println("requestDestroyed "+sre);
126     }
127 
128     public void requestInitialized(ServletRequestEvent sre)
129     {
130         sre.getServletRequest().setAttribute("requestInitialized","'"+sre.getServletContext().getContextPath()+"'");
131         // System.err.println("requestInitialized "+sre);
132     }
133 
134     public void attributeAdded(ServletRequestAttributeEvent srae)
135     {
136         // System.err.println("attributeAdded "+srae);
137     }
138 
139     public void attributeRemoved(ServletRequestAttributeEvent srae)
140     {
141         // System.err.println("attributeRemoved "+srae);
142     }
143 
144     public void attributeReplaced(ServletRequestAttributeEvent srae)
145     {
146         // System.err.println("attributeReplaced "+srae);
147     }
148 
149     public void sessionCreated(HttpSessionEvent se)
150     {
151         // System.err.println("sessionCreated "+se);
152     }
153 
154     public void sessionDestroyed(HttpSessionEvent se)
155     {
156         // System.err.println("sessionDestroyed "+se);
157     }
158 
159     public void requestCompleted(ServletRequestEvent rre)
160     {
161         // TODO Auto-generated method stub
162         
163     }
164 
165     public void requestResumed(ServletRequestEvent rre)
166     {
167         // TODO Auto-generated method stub
168         
169     }
170 
171     public void requestSuspended(ServletRequestEvent rre)
172     {
173         // TODO Auto-generated method stub
174         
175     }
176 
177 }