Mercurial Hosting > luan
comparison src/org/eclipse/jetty/server/handler/ContextHandler.java @ 988:13beba0c127f
remove ContextHandler._attributes
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 17 Oct 2016 05:22:25 -0600 |
parents | d35b0a3a7a4a |
children | 900e5b8ccd19 |
comparison
equal
deleted
inserted
replaced
987:af8742d31bca | 988:13beba0c127f |
---|---|
67 import org.eclipse.jetty.server.AbstractHttpConnection; | 67 import org.eclipse.jetty.server.AbstractHttpConnection; |
68 import org.eclipse.jetty.server.Handler; | 68 import org.eclipse.jetty.server.Handler; |
69 import org.eclipse.jetty.server.HandlerContainer; | 69 import org.eclipse.jetty.server.HandlerContainer; |
70 import org.eclipse.jetty.server.Request; | 70 import org.eclipse.jetty.server.Request; |
71 import org.eclipse.jetty.server.Server; | 71 import org.eclipse.jetty.server.Server; |
72 import org.eclipse.jetty.util.Attributes; | |
73 import org.eclipse.jetty.util.AttributesMap; | 72 import org.eclipse.jetty.util.AttributesMap; |
74 import org.eclipse.jetty.util.LazyList; | 73 import org.eclipse.jetty.util.LazyList; |
75 import org.eclipse.jetty.util.StringUtil; | 74 import org.eclipse.jetty.util.StringUtil; |
76 import org.eclipse.jetty.util.TypeUtil; | 75 import org.eclipse.jetty.util.TypeUtil; |
77 import org.eclipse.jetty.util.URIUtil; | 76 import org.eclipse.jetty.util.URIUtil; |
94 * The maximum size of a form that can be processed by this context is controlled by the system properties org.eclipse.jetty.server.Request.maxFormKeys | 93 * The maximum size of a form that can be processed by this context is controlled by the system properties org.eclipse.jetty.server.Request.maxFormKeys |
95 * and org.eclipse.jetty.server.Request.maxFormContentSize. These can also be configured with {@link #setMaxFormContentSize(int)} and {@link #setMaxFormKeys(int)} | 94 * and org.eclipse.jetty.server.Request.maxFormContentSize. These can also be configured with {@link #setMaxFormContentSize(int)} and {@link #setMaxFormKeys(int)} |
96 * | 95 * |
97 * @org.apache.xbean.XBean description="Creates a basic HTTP context" | 96 * @org.apache.xbean.XBean description="Creates a basic HTTP context" |
98 */ | 97 */ |
99 public class ContextHandler extends ScopedHandler implements Attributes, Server.Graceful | 98 public final class ContextHandler extends ScopedHandler implements Server.Graceful |
100 { | 99 { |
101 private static final Logger LOG = LoggerFactory.getLogger(ContextHandler.class); | 100 private static final Logger LOG = LoggerFactory.getLogger(ContextHandler.class); |
102 | 101 |
103 private static final ThreadLocal<Context> __context = new ThreadLocal<Context>(); | 102 private static final ThreadLocal<Context> __context = new ThreadLocal<Context>(); |
104 | 103 |
120 return __context.get(); | 119 return __context.get(); |
121 } | 120 } |
122 | 121 |
123 protected Context _scontext; | 122 protected Context _scontext; |
124 | 123 |
125 private final AttributesMap _attributes; | |
126 private final AttributesMap _contextAttributes; | 124 private final AttributesMap _contextAttributes; |
127 private final Map<String, String> _initParams; | 125 private final Map<String, String> _initParams; |
128 private ClassLoader _classLoader; | 126 private ClassLoader _classLoader; |
129 private String _contextPath = "/"; | 127 private String _contextPath = "/"; |
130 private String _displayName; | 128 private String _displayName; |
162 */ | 160 */ |
163 public ContextHandler() | 161 public ContextHandler() |
164 { | 162 { |
165 super(); | 163 super(); |
166 _scontext = new Context(); | 164 _scontext = new Context(); |
167 _attributes = new AttributesMap(); | |
168 _contextAttributes = new AttributesMap(); | |
169 _initParams = new HashMap<String, String>(); | |
170 addAliasCheck(new ApproveNonExistentDirectoryAliases()); | |
171 } | |
172 | |
173 /* ------------------------------------------------------------ */ | |
174 /** | |
175 * | |
176 */ | |
177 protected ContextHandler(Context context) | |
178 { | |
179 super(); | |
180 _scontext = context; | |
181 _attributes = new AttributesMap(); | |
182 _contextAttributes = new AttributesMap(); | 165 _contextAttributes = new AttributesMap(); |
183 _initParams = new HashMap<String, String>(); | 166 _initParams = new HashMap<String, String>(); |
184 addAliasCheck(new ApproveNonExistentDirectoryAliases()); | 167 addAliasCheck(new ApproveNonExistentDirectoryAliases()); |
185 } | 168 } |
186 | 169 |
212 @Override | 195 @Override |
213 public void dump(Appendable out, String indent) throws IOException | 196 public void dump(Appendable out, String indent) throws IOException |
214 { | 197 { |
215 dumpThis(out); | 198 dumpThis(out); |
216 dump(out,indent,Collections.singletonList(new CLDump(getClassLoader())),TypeUtil.asList(getHandlers()),getBeans(),_initParams.entrySet(), | 199 dump(out,indent,Collections.singletonList(new CLDump(getClassLoader())),TypeUtil.asList(getHandlers()),getBeans(),_initParams.entrySet(), |
217 _attributes.getAttributeEntrySet(),_contextAttributes.getAttributeEntrySet()); | 200 _contextAttributes.getAttributeEntrySet()); |
218 } | 201 } |
219 | 202 |
220 /* ------------------------------------------------------------ */ | 203 /* ------------------------------------------------------------ */ |
221 public Context getServletContext() | 204 public Context getServletContext() |
222 { | 205 { |
355 * representation of IP addresses. Host names may start with '*.' to wildcard one level of names. | 338 * representation of IP addresses. Host names may start with '*.' to wildcard one level of names. |
356 */ | 339 */ |
357 public String[] getVirtualHosts() | 340 public String[] getVirtualHosts() |
358 { | 341 { |
359 return _vhosts; | 342 return _vhosts; |
360 } | |
361 | |
362 /* ------------------------------------------------------------ */ | |
363 /* | |
364 * @see javax.servlet.ServletContext#getAttribute(java.lang.String) | |
365 */ | |
366 public Object getAttribute(String name) | |
367 { | |
368 return _attributes.getAttribute(name); | |
369 } | |
370 | |
371 /* ------------------------------------------------------------ */ | |
372 /* | |
373 * @see javax.servlet.ServletContext#getAttributeNames() | |
374 */ | |
375 @SuppressWarnings("unchecked") | |
376 public Enumeration getAttributeNames() | |
377 { | |
378 return AttributesMap.getAttributeNamesCopy(_attributes); | |
379 } | |
380 | |
381 /* ------------------------------------------------------------ */ | |
382 /** | |
383 * @return Returns the attributes. | |
384 */ | |
385 public Attributes getAttributes() | |
386 { | |
387 return _attributes; | |
388 } | 343 } |
389 | 344 |
390 /* ------------------------------------------------------------ */ | 345 /* ------------------------------------------------------------ */ |
391 /** | 346 /** |
392 * @return Returns the classLoader. | 347 * @return Returns the classLoader. |
1128 String[] tmp = new String[_protectedTargets.length]; | 1083 String[] tmp = new String[_protectedTargets.length]; |
1129 System.arraycopy(_protectedTargets, 0, tmp, 0, _protectedTargets.length); | 1084 System.arraycopy(_protectedTargets, 0, tmp, 0, _protectedTargets.length); |
1130 return tmp; | 1085 return tmp; |
1131 } | 1086 } |
1132 | 1087 |
1133 | |
1134 /* ------------------------------------------------------------ */ | |
1135 /* | |
1136 * @see javax.servlet.ServletContext#removeAttribute(java.lang.String) | |
1137 */ | |
1138 public void removeAttribute(String name) | |
1139 { | |
1140 checkManagedAttribute(name,null); | |
1141 _attributes.removeAttribute(name); | |
1142 } | |
1143 | |
1144 /* ------------------------------------------------------------ */ | |
1145 /* | |
1146 * Set a context attribute. Attributes set via this API cannot be overriden by the ServletContext.setAttribute API. Their lifecycle spans the stop/start of | |
1147 * a context. No attribute listener events are triggered by this API. | |
1148 * | |
1149 * @see javax.servlet.ServletContext#setAttribute(java.lang.String, java.lang.Object) | |
1150 */ | |
1151 public void setAttribute(String name, Object value) | |
1152 { | |
1153 checkManagedAttribute(name,value); | |
1154 _attributes.setAttribute(name,value); | |
1155 } | |
1156 | |
1157 /* ------------------------------------------------------------ */ | |
1158 /** | |
1159 * @param attributes | |
1160 * The attributes to set. | |
1161 */ | |
1162 public void setAttributes(Attributes attributes) | |
1163 { | |
1164 _attributes.clearAttributes(); | |
1165 _attributes.addAll(attributes); | |
1166 Enumeration e = _attributes.getAttributeNames(); | |
1167 while (e.hasMoreElements()) | |
1168 { | |
1169 String name = (String)e.nextElement(); | |
1170 checkManagedAttribute(name,attributes.getAttribute(name)); | |
1171 } | |
1172 } | |
1173 | |
1174 /* ------------------------------------------------------------ */ | |
1175 public void clearAttributes() | |
1176 { | |
1177 Enumeration e = _attributes.getAttributeNames(); | |
1178 while (e.hasMoreElements()) | |
1179 { | |
1180 String name = (String)e.nextElement(); | |
1181 checkManagedAttribute(name,null); | |
1182 } | |
1183 _attributes.clearAttributes(); | |
1184 } | |
1185 | 1088 |
1186 /* ------------------------------------------------------------ */ | 1089 /* ------------------------------------------------------------ */ |
1187 public void checkManagedAttribute(String name, Object value) | 1090 public void checkManagedAttribute(String name, Object value) |
1188 { | 1091 { |
1189 if (_managedAttributes != null && _managedAttributes.containsKey(name)) | 1092 if (_managedAttributes != null && _managedAttributes.containsKey(name)) |
1939 * @see javax.servlet.ServletContext#getAttribute(java.lang.String) | 1842 * @see javax.servlet.ServletContext#getAttribute(java.lang.String) |
1940 */ | 1843 */ |
1941 @Override | 1844 @Override |
1942 public synchronized Object getAttribute(String name) | 1845 public synchronized Object getAttribute(String name) |
1943 { | 1846 { |
1944 Object o = ContextHandler.this.getAttribute(name); | 1847 if (_contextAttributes != null) |
1945 if (o == null && _contextAttributes != null) | 1848 return _contextAttributes.getAttribute(name); |
1946 o = _contextAttributes.getAttribute(name); | 1849 return null; |
1947 return o; | |
1948 } | 1850 } |
1949 | 1851 |
1950 /* ------------------------------------------------------------ */ | 1852 /* ------------------------------------------------------------ */ |
1951 /* | 1853 /* |
1952 * @see javax.servlet.ServletContext#getAttributeNames() | 1854 * @see javax.servlet.ServletContext#getAttributeNames() |
1960 { | 1862 { |
1961 Enumeration<String> e = _contextAttributes.getAttributeNames(); | 1863 Enumeration<String> e = _contextAttributes.getAttributeNames(); |
1962 while (e.hasMoreElements()) | 1864 while (e.hasMoreElements()) |
1963 set.add(e.nextElement()); | 1865 set.add(e.nextElement()); |
1964 } | 1866 } |
1965 Enumeration<String> e = _attributes.getAttributeNames(); | |
1966 while (e.hasMoreElements()) | |
1967 set.add(e.nextElement()); | |
1968 | 1867 |
1969 return Collections.enumeration(set); | 1868 return Collections.enumeration(set); |
1970 } | 1869 } |
1971 | 1870 |
1972 /* ------------------------------------------------------------ */ | 1871 /* ------------------------------------------------------------ */ |
2012 checkManagedAttribute(name,null); | 1911 checkManagedAttribute(name,null); |
2013 | 1912 |
2014 if (_contextAttributes == null) | 1913 if (_contextAttributes == null) |
2015 { | 1914 { |
2016 // Set it on the handler | 1915 // Set it on the handler |
2017 _attributes.removeAttribute(name); | |
2018 return; | 1916 return; |
2019 } | 1917 } |
2020 | 1918 |
2021 Object old_value = _contextAttributes.getAttribute(name); | 1919 Object old_value = _contextAttributes.getAttribute(name); |
2022 _contextAttributes.removeAttribute(name); | 1920 _contextAttributes.removeAttribute(name); |