1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mortbay.jetty.plus.annotation;
17
18 import javax.servlet.Servlet;
19 import javax.servlet.ServletException;
20
21 import org.mortbay.jetty.servlet.ServletHolder;
22
23
24
25
26
27
28 public class RunAs
29 {
30 private Class _targetClass;
31 private String _roleName;
32
33 public RunAs()
34 {}
35
36
37 public void setTargetClass (Class clazz)
38 {
39 _targetClass=clazz;
40 }
41
42 public Class getTargetClass ()
43 {
44 return _targetClass;
45 }
46
47 public void setRoleName (String roleName)
48 {
49 _roleName = roleName;
50 }
51
52 public String getRoleName ()
53 {
54 return _roleName;
55 }
56
57
58 public void setRunAs (ServletHolder holder)
59 throws ServletException
60 {
61 if (holder==null)
62 return;
63 String className = getServletClassNameForHolder(holder);
64
65 if (className.equals(_targetClass.getName()))
66 holder.setRunAs(_roleName);
67 }
68
69 public static String getServletClassNameForHolder (ServletHolder holder)
70 throws ServletException
71 {
72 if (PojoServlet.class.getName().equals(holder.getClassName()))
73 return ((PojoWrapper)holder.getServlet()).getPojo().getClass().getName();
74 return holder.getClassName();
75 }
76
77 }