View Javadoc

1   //
2   //  ========================================================================
3   //  Copyright (c) 1995-2013 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          if (registration != null) //otherwise it was configured in web.xml
94          {
95      	    registration.setInitParameter("remote", "false");
96      	    registration.setAsyncSupported(true);
97      	    registration.addMappingForUrlPatterns(
98      	        EnumSet.of(DispatcherType.ERROR,DispatcherType.ASYNC,DispatcherType.FORWARD,DispatcherType.INCLUDE,DispatcherType.REQUEST),
99      	        true, 
100     	        new String[]{"/*"});
101         }
102     }
103 
104     public void contextDestroyed(ServletContextEvent sce)
105     {
106         // System.err.println("contextDestroyed "+sce);
107     }
108 
109     public void attributeAdded(ServletContextAttributeEvent scab)
110     {
111         // System.err.println("attributeAdded "+scab);
112     }
113 
114     public void attributeRemoved(ServletContextAttributeEvent scab)
115     {
116         // System.err.println("attributeRemoved "+scab);
117     }
118 
119     public void attributeReplaced(ServletContextAttributeEvent scab)
120     {
121         // System.err.println("attributeReplaced "+scab);
122     }
123 
124     public void requestDestroyed(ServletRequestEvent sre)
125     {
126         ((HttpServletRequest)sre.getServletRequest()).getSession(false);
127         sre.getServletRequest().setAttribute("requestInitialized",null);
128         // System.err.println("requestDestroyed "+sre);
129     }
130 
131     public void requestInitialized(ServletRequestEvent sre)
132     {
133         sre.getServletRequest().setAttribute("requestInitialized","'"+sre.getServletContext().getContextPath()+"'");
134         // System.err.println("requestInitialized "+sre);
135     }
136 
137     public void attributeAdded(ServletRequestAttributeEvent srae)
138     {
139         // System.err.println("attributeAdded "+srae);
140     }
141 
142     public void attributeRemoved(ServletRequestAttributeEvent srae)
143     {
144         // System.err.println("attributeRemoved "+srae);
145     }
146 
147     public void attributeReplaced(ServletRequestAttributeEvent srae)
148     {
149         // System.err.println("attributeReplaced "+srae);
150     }
151 
152     public void sessionCreated(HttpSessionEvent se)
153     {
154         // System.err.println("sessionCreated "+se);
155     }
156 
157     public void sessionDestroyed(HttpSessionEvent se)
158     {
159         // System.err.println("sessionDestroyed "+se);
160     }
161 
162     public void requestCompleted(ServletRequestEvent rre)
163     {
164         // TODO Auto-generated method stub
165         
166     }
167 
168     public void requestResumed(ServletRequestEvent rre)
169     {
170         // TODO Auto-generated method stub
171         
172     }
173 
174     public void requestSuspended(ServletRequestEvent rre)
175     {
176         // TODO Auto-generated method stub
177         
178     }
179 
180 }