1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.annotations;
20
21 import javax.servlet.ServletContextAttributeListener;
22 import javax.servlet.ServletContextListener;
23 import javax.servlet.ServletRequestAttributeListener;
24 import javax.servlet.ServletRequestListener;
25 import javax.servlet.http.HttpSessionAttributeListener;
26 import javax.servlet.http.HttpSessionIdListener;
27 import javax.servlet.http.HttpSessionListener;
28
29 import org.eclipse.jetty.util.log.Log;
30 import org.eclipse.jetty.util.log.Logger;
31 import org.eclipse.jetty.util.resource.Resource;
32 import org.eclipse.jetty.webapp.DiscoveredAnnotation;
33 import org.eclipse.jetty.webapp.MetaData;
34 import org.eclipse.jetty.webapp.Origin;
35 import org.eclipse.jetty.webapp.WebAppContext;
36
37
38
39
40
41
42 public class WebListenerAnnotation extends DiscoveredAnnotation
43 {
44 private static final Logger LOG = Log.getLogger(WebListenerAnnotation.class);
45
46
47
48
49
50 public WebListenerAnnotation(WebAppContext context, String className)
51 {
52 super(context, className);
53 }
54
55 public WebListenerAnnotation(WebAppContext context, String className, Resource resource)
56 {
57 super(context, className, resource);
58 }
59
60
61
62
63 public void apply()
64 {
65
66
67 Class clazz = getTargetClass();
68
69 if (clazz == null)
70 {
71 LOG.warn(_className+" cannot be loaded");
72 return;
73 }
74
75 try
76 {
77 if (ServletContextListener.class.isAssignableFrom(clazz) ||
78 ServletContextAttributeListener.class.isAssignableFrom(clazz) ||
79 ServletRequestListener.class.isAssignableFrom(clazz) ||
80 ServletRequestAttributeListener.class.isAssignableFrom(clazz) ||
81 HttpSessionListener.class.isAssignableFrom(clazz) ||
82 HttpSessionAttributeListener.class.isAssignableFrom(clazz) ||
83 HttpSessionIdListener.class.isAssignableFrom(clazz))
84 {
85 java.util.EventListener listener = (java.util.EventListener)clazz.newInstance();
86 MetaData metaData = _context.getMetaData();
87 if (metaData.getOrigin(clazz.getName()+".listener") == Origin.NotSet)
88 _context.addEventListener(listener);
89 }
90 else
91 LOG.warn(clazz.getName()+" does not implement one of the servlet listener interfaces");
92 }
93 catch (Exception e)
94 {
95 LOG.warn(e);
96 }
97 }
98 }