1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.struts2.tiles;
21
22
23 import javax.servlet.RequestDispatcher;
24 import javax.servlet.Servlet;
25 import javax.servlet.ServletContext;
26 import javax.servlet.ServletException;
27 import java.io.InputStream;
28 import java.net.MalformedURLException;
29 import java.net.URL;
30 import java.util.*;
31
32 /***
33 * ServletContext implementation which allows Struts
34 * to inject initialization parameters into the context
35 * in order to reduce the amount of configuration required
36 * within web.xml for using Tiles.
37 *
38 * The specified init parameters are only utilized if
39 * they are not explicitaly defined in the web.xml
40 *
41 * @version $Rev: 478625 $
42 * @since Struts 2.0.1
43 */
44 @SuppressWarnings("deprecation")
45 public class ConfiguredServletContext implements ServletContext {
46
47 private ServletContext rootContext;
48 private Map<String, String> initParameters;
49
50
51 public ConfiguredServletContext(ServletContext context, Map<String, String> initParameters) {
52 this.rootContext = context;
53 this.initParameters = initParameters;
54 }
55
56 public ServletContext getContext(String string) {
57 return rootContext.getContext(string);
58 }
59
60 public int getMajorVersion() {
61 return rootContext.getMajorVersion();
62 }
63
64 public int getMinorVersion() {
65 return rootContext.getMinorVersion();
66 }
67
68 public String getMimeType(String string) {
69 return rootContext.getMimeType(string);
70 }
71
72 public Set getResourcePaths(String string) {
73 return rootContext.getResourcePaths(string);
74 }
75
76 public URL getResource(String string) throws MalformedURLException {
77 return rootContext.getResource(string);
78 }
79
80 public InputStream getResourceAsStream(String string) {
81 return rootContext.getResourceAsStream(string);
82 }
83
84 public RequestDispatcher getRequestDispatcher(String string) {
85 return rootContext.getRequestDispatcher(string);
86 }
87
88 public RequestDispatcher getNamedDispatcher(String string) {
89 return rootContext.getNamedDispatcher(string);
90 }
91
92 @SuppressWarnings("deprecation")
93 public Servlet getServlet(String string) throws ServletException {
94 return rootContext.getServlet(string);
95 }
96
97 @SuppressWarnings("deprecation")
98 public Enumeration getServlets() {
99 return rootContext.getServlets();
100 }
101
102 @SuppressWarnings("deprecation")
103 public Enumeration getServletNames() {
104 return rootContext.getServletNames();
105 }
106
107 public void log(String string) {
108 rootContext.log(string);
109 }
110
111 @SuppressWarnings("deprecation")
112 public void log(Exception exception, String string) {
113 rootContext.log(exception, string);
114 }
115
116 public void log(String string, Throwable throwable) {
117 rootContext.log(string, throwable);
118 }
119
120 public String getRealPath(String string) {
121 return rootContext.getRealPath(string);
122 }
123
124 public String getServerInfo() {
125 return rootContext.getServerInfo();
126 }
127
128 public String getInitParameter(String string) {
129 String parm = rootContext.getInitParameter(string);
130 if (parm == null) {
131 return initParameters.get(string);
132 }
133 return parm;
134 }
135
136 public Enumeration getInitParameterNames() {
137 return new CompositeEnumeration(
138 rootContext.getInitParameterNames(),
139 initParameters.keySet().iterator());
140 }
141
142 public Object getAttribute(String string) {
143 return rootContext.getAttribute(string);
144 }
145
146 public Enumeration getAttributeNames() {
147 return rootContext.getAttributeNames();
148 }
149
150 public void setAttribute(String string, Object object) {
151 rootContext.setAttribute(string, object);
152 }
153
154 public void removeAttribute(String string) {
155 rootContext.removeAttribute(string);
156 }
157
158 public String getServletContextName() {
159 return rootContext.getServletContextName();
160 }
161
162 class CompositeEnumeration implements Enumeration {
163
164 private Enumeration first;
165 private Iterator second;
166
167
168 public CompositeEnumeration(Enumeration first, Iterator second) {
169 this.first = first;
170 this.second = second;
171 }
172
173 public boolean hasMoreElements() {
174 return first.hasMoreElements() || second.hasNext();
175 }
176
177 public Object nextElement() {
178 if (first.hasMoreElements()) {
179 return first.nextElement();
180 }
181
182 return second.next();
183 }
184 }
185 }