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 java.util.HashMap;
19
20 import javax.servlet.ServletException;
21
22 import org.mortbay.jetty.servlet.ServletHolder;
23 import org.mortbay.log.Log;
24
25
26
27
28
29
30
31 public class RunAsCollection
32 {
33 private HashMap _runAsMap = new HashMap();
34
35
36 public void add (RunAs runAs)
37 {
38 if ((runAs==null) || (runAs.getTargetClass()==null))
39 return;
40
41 if (Log.isDebugEnabled())
42 Log.debug("Adding run-as for class="+runAs.getTargetClass());
43 _runAsMap.put(runAs.getTargetClass().getName(), runAs);
44 }
45
46 public RunAs getRunAs (Object o)
47 throws ServletException
48 {
49 if (o==null)
50 return null;
51
52 if (!(o instanceof ServletHolder))
53 return null;
54
55 ServletHolder holder = (ServletHolder)o;
56
57 String className = RunAs.getServletClassNameForHolder(holder);
58 return (RunAs)_runAsMap.get(className);
59 }
60
61 public void setRunAs (Object o)
62 throws ServletException
63 {
64 if (o==null)
65 return;
66
67 if (!(o instanceof ServletHolder))
68 return;
69
70 ServletHolder holder = (ServletHolder)o;
71
72 String className = RunAs.getServletClassNameForHolder(holder);
73 RunAs runAs = (RunAs)_runAsMap.get(className);
74 if (runAs == null)
75 return;
76
77 runAs.setRunAs(holder);
78 }
79
80 }