View Javadoc

1   //
2   //  ========================================================================
3   //  Copyright (c) 1995-2016 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.test;
20  import java.util.EventListener;
21  
22  import javax.annotation.Resource;
23  import javax.servlet.ServletContextAttributeEvent;
24  import javax.servlet.ServletContextAttributeListener;
25  import javax.servlet.ServletContextEvent;
26  import javax.servlet.ServletContextListener;
27  import javax.servlet.ServletRequestAttributeEvent;
28  import javax.servlet.ServletRequestAttributeListener;
29  import javax.servlet.ServletRequestEvent;
30  import javax.servlet.ServletRequestListener;
31  import javax.servlet.annotation.WebListener;
32  import javax.servlet.http.HttpSessionActivationListener;
33  import javax.servlet.http.HttpSessionAttributeListener;
34  import javax.servlet.http.HttpSessionBindingEvent;
35  import javax.servlet.http.HttpSessionEvent;
36  import javax.servlet.http.HttpSessionIdListener;
37  import javax.servlet.http.HttpSessionListener;
38  
39  
40  @com.acme.initializer.Foo(1)
41  @WebListener
42  public class TestListener implements HttpSessionListener,  HttpSessionAttributeListener, HttpSessionActivationListener, ServletContextListener, ServletContextAttributeListener, ServletRequestListener, ServletRequestAttributeListener
43  {
44      public static class NaughtyServletContextListener implements ServletContextListener
45      {
46  
47          @Override
48          public void contextInitialized(ServletContextEvent sce)
49          {
50              throw new IllegalStateException("Should not call NaughtServletContextListener.contextInitialized");
51          }
52  
53          @Override
54          public void contextDestroyed(ServletContextEvent sce)
55          {
56              throw new IllegalStateException("Should not call NaughtServletContextListener.contextDestroyed");
57          }
58      }
59      
60      public static class InvalidListener implements EventListener
61      {
62          public InvalidListener()
63          {}
64      }
65      
66      public static class ValidListener implements HttpSessionIdListener
67      {
68          @Resource(mappedName="maxAmount")
69          private Double maxAmount;
70          
71          public ValidListener()
72          {}
73          
74          @Override
75          public void sessionIdChanged(HttpSessionEvent event, String oldSessionId)
76          {
77             
78          }
79          
80      }
81  
82      @Resource(mappedName="maxAmount")
83      private Double maxAmount;
84      
85  
86  
87      public void attributeAdded(HttpSessionBindingEvent se)
88      {
89          // System.err.println("attributedAdded "+se);
90      }
91  
92      public void attributeRemoved(HttpSessionBindingEvent se)
93      {
94          // System.err.println("attributeRemoved "+se);
95      }
96  
97      public void attributeReplaced(HttpSessionBindingEvent se)
98      {
99          // System.err.println("attributeReplaced "+se);
100     }
101 
102     public void sessionWillPassivate(HttpSessionEvent se)
103     {
104         // System.err.println("sessionWillPassivate "+se);
105     }
106 
107     public void sessionDidActivate(HttpSessionEvent se)
108     {
109         // System.err.println("sessionDidActivate "+se);
110     }
111 
112     public void contextInitialized(ServletContextEvent sce)
113     {
114         sce.getServletContext().setAttribute("com.acme.AnnotationTest.sclInjectTest", Boolean.valueOf(maxAmount != null));
115         
116         //Can't add a ServletContextListener from a ServletContextListener even if it is declared in web.xml
117         try
118         {
119             sce.getServletContext().addListener(new NaughtyServletContextListener());
120             sce.getServletContext().setAttribute("com.acme.AnnotationTest.sclFromSclRegoTest", Boolean.FALSE);
121         }
122         catch (IllegalArgumentException e)
123         {
124             sce.getServletContext().setAttribute("com.acme.AnnotationTest.sclFromSclRegoTest", Boolean.TRUE);
125         }
126         catch (Exception e)
127         {
128             sce.getServletContext().setAttribute("com.acme.AnnotationTest.sclFromSclRegoTest", Boolean.FALSE);
129         }
130         
131         
132         //Can't add an EventListener not part of the specified list for addListener()
133         try
134         {
135             sce.getServletContext().addListener(new InvalidListener());
136             sce.getServletContext().setAttribute("com.acme.AnnotationTest.invalidListenerRegoTest", Boolean.FALSE);
137         }
138         catch (IllegalArgumentException e)
139         {
140             sce.getServletContext().setAttribute("com.acme.AnnotationTest.invalidListenerRegoTest", Boolean.TRUE);
141         }
142         catch (Exception e)
143         {
144             sce.getServletContext().setAttribute("com.acme.AnnotationTest.invalidListenerRegoTest", Boolean.FALSE);
145         } 
146         
147         //Programmatically add a listener and make sure its injected
148         try
149         {
150             ValidListener l = sce.getServletContext().createListener(ValidListener.class);
151             sce.getServletContext().setAttribute("com.acme.AnnotationTest.programListenerInjectTest", Boolean.valueOf(l != null && l.maxAmount != null));
152         }   
153         catch (Exception e)
154         {
155             sce.getServletContext().setAttribute("com.acme.AnnotationTest.programListenerInjectTest", Boolean.FALSE);
156         }
157     }
158 
159     public void contextDestroyed(ServletContextEvent sce)
160     {
161         // System.err.println("contextDestroyed "+sce);
162     }
163 
164     public void attributeAdded(ServletContextAttributeEvent scab)
165     {
166         // System.err.println("attributeAdded "+scab);
167     }
168 
169     public void attributeRemoved(ServletContextAttributeEvent scab)
170     {
171         // System.err.println("attributeRemoved "+scab);
172     }
173 
174     public void attributeReplaced(ServletContextAttributeEvent scab)
175     {
176         // System.err.println("attributeReplaced "+scab);
177     }
178 
179     public void requestDestroyed(ServletRequestEvent sre)
180     {
181         // System.err.println("requestDestroyed "+sre);
182     }
183 
184     public void requestInitialized(ServletRequestEvent sre)
185     {
186         // System.err.println("requestInitialized "+sre);
187     }
188 
189     public void attributeAdded(ServletRequestAttributeEvent srae)
190     {
191         // System.err.println("attributeAdded "+srae);
192     }
193 
194     public void attributeRemoved(ServletRequestAttributeEvent srae)
195     {
196         // System.err.println("attributeRemoved "+srae);
197     }
198 
199     public void attributeReplaced(ServletRequestAttributeEvent srae)
200     {
201         // System.err.println("attributeReplaced "+srae);
202     }
203 
204     public void sessionCreated(HttpSessionEvent se)
205     {
206         // System.err.println("sessionCreated "+se);
207     }
208 
209     public void sessionDestroyed(HttpSessionEvent se)
210     {
211         // System.err.println("sessionDestroyed "+se);
212     }
213 
214     public void requestCompleted(ServletRequestEvent rre)
215     {
216         // TODO Auto-generated method stub
217         
218     }
219 
220     public void requestResumed(ServletRequestEvent rre)
221     {
222         // TODO Auto-generated method stub
223         
224     }
225 
226     public void requestSuspended(ServletRequestEvent rre)
227     {
228         // TODO Auto-generated method stub
229         
230     }
231 
232 }