Mercurial Hosting > luan
changeset 994:4e9d373bf6e9
remove ContextHandler.Context
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 18 Oct 2016 16:34:18 -0600 |
parents | d9d95acded81 |
children | 0eba8f555c19 |
files | src/org/eclipse/jetty/server/Request.java src/org/eclipse/jetty/server/handler/ContextHandler.java src/org/eclipse/jetty/server/handler/ResourceHandler.java |
diffstat | 3 files changed, 22 insertions(+), 737 deletions(-) [+] |
line wrap: on
line diff
--- a/src/org/eclipse/jetty/server/Request.java Tue Oct 18 15:54:54 2016 -0600 +++ b/src/org/eclipse/jetty/server/Request.java Tue Oct 18 16:34:18 2016 -0600 @@ -79,7 +79,6 @@ import org.eclipse.jetty.io.nio.IndirectNIOBuffer; import org.eclipse.jetty.io.nio.NIOBuffer; import org.eclipse.jetty.server.handler.ContextHandler; -import org.eclipse.jetty.server.handler.ContextHandler.Context; import org.eclipse.jetty.util.Attributes; import org.eclipse.jetty.util.AttributesMap; import org.eclipse.jetty.util.IO; @@ -136,7 +135,7 @@ private MultiMap<String> _baseParameters; private String _characterEncoding; protected AbstractHttpConnection _connection; - private ContextHandler.Context _context; + public ContextHandler _contextHandler = null; private String _contextPath; private CookieCutter _cookies; private boolean _cookiesExtracted = false; @@ -391,15 +390,6 @@ } /* ------------------------------------------------------------ */ - /** - * @return The current {@link Context context} used for this request, or <code>null</code> if {@link #setContext} has not yet been called. - */ - public Context getContext() - { - return _context; - } - - /* ------------------------------------------------------------ */ /* * @see javax.servlet.http.HttpServletRequest#getContextPath() */ @@ -1204,7 +1194,7 @@ } _handled = false; - if (_context != null) + if (_contextHandler != null) throw new IllegalStateException("Request in context!"); if (_attributes != null) _attributes.clearAttributes(); @@ -1213,7 +1203,6 @@ if (_cookies != null) _cookies.reset(); _cookiesExtracted = false; - _context = null; _serverName = null; _method = null; _pathInfo = null; @@ -1305,18 +1294,6 @@ /* ------------------------------------------------------------ */ /** - * Set request context - * - * @param context - * context object - */ - public void setContext(Context context) - { - _context = context; - } - - /* ------------------------------------------------------------ */ - /** * Sets the "context path" for this request * * @see HttpServletRequest#getContextPath()
--- a/src/org/eclipse/jetty/server/handler/ContextHandler.java Tue Oct 18 15:54:54 2016 -0600 +++ b/src/org/eclipse/jetty/server/handler/ContextHandler.java Tue Oct 18 16:34:18 2016 -0600 @@ -82,38 +82,13 @@ /** * ContextHandler. * - * This handler wraps a call to handle by setting the context and servlet path, plus setting the context classloader. + * This handler wraps a call to handle by setting the context and servlet path. * - * <p> - * If the context init parameter "org.eclipse.jetty.server.context.ManagedAttributes" is set to a comma separated list of names, then they are treated as - * context attribute names, which if set as attributes are passed to the servers Container so that they may be managed with JMX. - * <p> - * 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 - * and org.eclipse.jetty.server.Request.maxFormContentSize. These can also be configured with {@link #setMaxFormContentSize(int)} and {@link #setMaxFormKeys(int)} - * - * @org.apache.xbean.XBean description="Creates a basic HTTP context" */ public final class ContextHandler extends HandlerWrapper implements Server.Graceful { private static final Logger LOG = LoggerFactory.getLogger(ContextHandler.class); - private static final ThreadLocal<Context> __context = new ThreadLocal<Context>(); - - /* ------------------------------------------------------------ */ - /** - * Get the current ServletContext implementation. - * - * @return ServletContext implementation - */ - public static ContextHandler getCurrentContext() - { - Context context = __context.get(); - return context==null ? null : context.getContextHandler(); - } - - private Context _scontext; - - private final AttributesMap _contextAttributes; private String _contextPath = "/"; private Resource _baseResource; private Logger _logger; @@ -126,8 +101,6 @@ public ContextHandler() { super(); - _scontext = new Context(); - _contextAttributes = new AttributesMap(); } public ContextHandler(String contextPath) @@ -150,13 +123,7 @@ public void dump(Appendable out, String indent) throws IOException { dumpThis(out); - dump(out,indent,TypeUtil.asList(getHandlers()),getBeans(), - _contextAttributes.getAttributeEntrySet()); - } - - public Context getServletContext() - { - return _scontext; + dump(out,indent,TypeUtil.asList(getHandlers()),getBeans()); } public String getContextPath() @@ -182,18 +149,6 @@ } /* ------------------------------------------------------------ */ - public Logger getLogger() - { - return _logger; - } - - /* ------------------------------------------------------------ */ - public void setLogger(Logger logger) - { - _logger = logger; - } - - /* ------------------------------------------------------------ */ /* * @see org.eclipse.thread.AbstractLifeCycle#doStart() */ @@ -206,25 +161,12 @@ throw new IllegalStateException("Null contextPath"); _logger = LoggerFactory.getLogger(getContextPath()); - ClassLoader old_classloader = null; - Thread current_thread = null; - Context old_context = null; - try - { - old_context = __context.get(); - __context.set(_scontext); + super.doStart(); - super.doStart(); - - synchronized(this) - { - _availability = _shutdown?__SHUTDOWN:__AVAILABLE; - } - } - finally + synchronized(this) { - __context.set(old_context); + _availability = _shutdown?__SHUTDOWN:__AVAILABLE; } } @@ -237,22 +179,8 @@ { _availability = __STOPPED; - ClassLoader old_classloader = null; - Thread current_thread = null; - - Context old_context = __context.get(); - __context.set(_scontext); - try - { - super.doStop(); - } - finally - { - LOG.info("stopped {}",this); - __context.set(old_context); - } - - _contextAttributes.clearAttributes(); + super.doStop(); + LOG.info("stopped {}",this); } private boolean checkContext(final String target, final Request baseRequest, final HttpServletResponse response) throws IOException, ServletException @@ -298,18 +226,15 @@ if (LOG.isDebugEnabled()) LOG.debug("scope {}|{}|{} @ {}",baseRequest.getContextPath(),baseRequest.getServletPath(),baseRequest.getPathInfo(),this); - Context old_context = null; String old_context_path = null; String old_servlet_path = null; String old_path_info = null; - ClassLoader old_classloader = null; - Thread current_thread = null; String pathInfo = target; - old_context = baseRequest.getContext(); + ContextHandler oldContextHandler = baseRequest._contextHandler; // Are we already in this context? - if (old_context != _scontext) + if (oldContextHandler != this) { if (!checkContext(target,baseRequest,response)) return; @@ -339,8 +264,7 @@ old_path_info = baseRequest.getPathInfo(); // Update the paths - baseRequest.setContext(_scontext); - __context.set(_scontext); + baseRequest._contextHandler = this; if (target.startsWith("/")) { if (_contextPath.length() == 1) @@ -367,11 +291,10 @@ } finally { - if (old_context != _scontext) + if (oldContextHandler != this) { // reset the context and servlet path. - baseRequest.setContext(old_context); - __context.set(old_context); + baseRequest._contextHandler = oldContextHandler; baseRequest.setContextPath(old_context_path); baseRequest.setServletPath(old_servlet_path); baseRequest.setPathInfo(old_path_info); @@ -386,19 +309,11 @@ _contextPath = contextPath; } - /* ------------------------------------------------------------ */ - /** - * @return Returns the resourceBase. - */ public Resource getBaseResource() { return _baseResource; } - /* ------------------------------------------------------------ */ - /** - * @return Returns the base resource as a string. - */ public String getResourceBase() { if (_baseResource == null) @@ -406,21 +321,11 @@ return _baseResource.toString(); } - /* ------------------------------------------------------------ */ - /** - * @param base - * The resourceBase to set. - */ public void setBaseResource(Resource base) { _baseResource = base; } - /* ------------------------------------------------------------ */ - /** - * @param resourceBase - * The base resource as a string. - */ public void setResourceBase(String resourceBase) { try @@ -459,9 +364,6 @@ return b.toString(); } - /* ------------------------------------------------------------ */ - /* - */ public Resource getResource(String path) throws MalformedURLException { if (path == null || !path.startsWith(URIUtil.SLASH)) @@ -515,592 +417,4 @@ } return Collections.emptySet(); } - - /* ------------------------------------------------------------ */ - /** - * Context. - * <p> - * A partial implementation of {@link javax.servlet.ServletContext}. A complete implementation is provided by the derived {@link ContextHandler}. - * </p> - * - * - */ - public final class Context implements ServletContext - { - protected int _majorVersion = 3; - protected int _minorVersion = 0; - - /* ------------------------------------------------------------ */ - protected Context() - { - } - - /* ------------------------------------------------------------ */ - public ContextHandler getContextHandler() - { - // TODO reduce visibility of this method - return ContextHandler.this; - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getContext(java.lang.String) - */ - @Override - public ServletContext getContext(String uripath) - { - List<ContextHandler> contexts = new ArrayList<ContextHandler>(); - Handler[] handlers = getServer().getChildHandlersByClass(ContextHandler.class); - String matched_path = null; - - for (Handler handler : handlers) - { - if (handler == null) - continue; - ContextHandler ch = (ContextHandler)handler; - String context_path = ch.getContextPath(); - - if (uripath.equals(context_path) || (uripath.startsWith(context_path) && uripath.charAt(context_path.length()) == '/') - || "/".equals(context_path)) - { - if (matched_path == null || context_path.length() > matched_path.length()) - { - contexts.clear(); - matched_path = context_path; - } - - if (matched_path.equals(context_path)) - contexts.add(ch); - } - } - - if (contexts.size() > 0) - return contexts.get(0)._scontext; - - // try again ignoring virtual hosts - matched_path = null; - for (Handler handler : handlers) - { - if (handler == null) - continue; - ContextHandler ch = (ContextHandler)handler; - String context_path = ch.getContextPath(); - - if (uripath.equals(context_path) || (uripath.startsWith(context_path) && uripath.charAt(context_path.length()) == '/') - || "/".equals(context_path)) - { - if (matched_path == null || context_path.length() > matched_path.length()) - { - contexts.clear(); - matched_path = context_path; - } - - if (matched_path.equals(context_path)) - contexts.add(ch); - } - } - - if (contexts.size() > 0) - return contexts.get(0)._scontext; - return null; - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getMajorVersion() - */ - @Override - public int getMajorVersion() - { - return 3; - } - - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getMimeType(java.lang.String) - */ - @Override - public String getMimeType(String file) - { - return null; - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getMinorVersion() - */ - @Override - public int getMinorVersion() - { - return 0; - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getNamedDispatcher(java.lang.String) - */ - @Override - public RequestDispatcher getNamedDispatcher(String name) - { - throw new UnsupportedOperationException(); - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getRequestDispatcher(java.lang.String) - */ - @Override - public RequestDispatcher getRequestDispatcher(String uriInContext) - { - throw new UnsupportedOperationException(); - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getRealPath(java.lang.String) - */ - @Override - public String getRealPath(String path) - { - if (path == null) - return null; - if (path.length() == 0) - path = URIUtil.SLASH; - else if (path.charAt(0) != '/') - path = URIUtil.SLASH + path; - - try - { - Resource resource = ContextHandler.this.getResource(path); - if (resource != null) - { - File file = resource.getFile(); - if (file != null) - return file.getCanonicalPath(); - } - } - catch (Exception e) - { - LOG.trace("",e); - } - - return null; - } - - /* ------------------------------------------------------------ */ - @Override - public URL getResource(String path) throws MalformedURLException - { - Resource resource = ContextHandler.this.getResource(path); - if (resource != null && resource.exists()) - return resource.getURL(); - return null; - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getResourceAsStream(java.lang.String) - */ - @Override - public InputStream getResourceAsStream(String path) - { - try - { - URL url = getResource(path); - if (url == null) - return null; - Resource r = Resource.newResource(url); - return r.getInputStream(); - } - catch (Exception e) - { - LOG.trace("",e); - return null; - } - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getResourcePaths(java.lang.String) - */ - @Override - public Set getResourcePaths(String path) - { - return ContextHandler.this.getResourcePaths(path); - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getServerInfo() - */ - @Override - public String getServerInfo() - { - return "jetty/" + Server.version; - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getServlet(java.lang.String) - */ - @Override - @Deprecated - public Servlet getServlet(String name) throws ServletException - { - throw new UnsupportedOperationException(); - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getServletNames() - */ - @SuppressWarnings("unchecked") - @Override - @Deprecated - public Enumeration getServletNames() - { - throw new UnsupportedOperationException(); - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getServlets() - */ - @SuppressWarnings("unchecked") - @Override - @Deprecated - public Enumeration getServlets() - { - throw new UnsupportedOperationException(); - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#log(java.lang.Exception, java.lang.String) - */ - @Override - public void log(Exception exception, String msg) - { - _logger.warn(msg,exception); - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#log(java.lang.String) - */ - @Override - public void log(String msg) - { - _logger.info(msg); - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#log(java.lang.String, java.lang.Throwable) - */ - @Override - public void log(String message, Throwable throwable) - { - _logger.warn(message,throwable); - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getInitParameter(java.lang.String) - */ - @Override - public String getInitParameter(String name) - { - return null; - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getInitParameterNames() - */ - @SuppressWarnings("unchecked") - @Override - public Enumeration getInitParameterNames() - { - return null; - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getAttribute(java.lang.String) - */ - @Override - public synchronized Object getAttribute(String name) - { - if (_contextAttributes != null) - return _contextAttributes.getAttribute(name); - return null; - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getAttributeNames() - */ - @SuppressWarnings("unchecked") - @Override - public synchronized Enumeration getAttributeNames() - { - HashSet<String> set = new HashSet<String>(); - if (_contextAttributes != null) - { - Enumeration<String> e = _contextAttributes.getAttributeNames(); - while (e.hasMoreElements()) - set.add(e.nextElement()); - } - - return Collections.enumeration(set); - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#setAttribute(java.lang.String, java.lang.Object) - */ - @Override - public synchronized void setAttribute(String name, Object value) - { - Object old_value = _contextAttributes.getAttribute(name); - - if (value == null) - _contextAttributes.removeAttribute(name); - else - _contextAttributes.setAttribute(name,value); - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#removeAttribute(java.lang.String) - */ - @Override - public synchronized void removeAttribute(String name) - { - if (_contextAttributes == null) - { - // Set it on the handler - return; - } - - _contextAttributes.removeAttribute(name); - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.ServletContext#getServletContextName() - */ - @Override - public String getServletContextName() - { - return ContextHandler.this.getContextPath(); - } - - /* ------------------------------------------------------------ */ - @Override - public String getContextPath() - { - if ((_contextPath != null) && _contextPath.equals(URIUtil.SLASH)) - return ""; - - return _contextPath; - } - - /* ------------------------------------------------------------ */ - @Override - public String toString() - { - return "ServletContext@" + ContextHandler.this.toString(); - } - - /* ------------------------------------------------------------ */ - @Override - public boolean setInitParameter(String name, String value) - { - return false; - } - - /* ------------------------------------------------------------ */ - final private static String __unimplmented="Unimplemented - use org.eclipse.jetty.servlet.ServletContextHandler"; - - @Override - public Dynamic addFilter(String filterName, Class<? extends Filter> filterClass) - { - throw new UnsupportedOperationException(); - } - - @Override - public Dynamic addFilter(String filterName, Filter filter) - { - throw new UnsupportedOperationException(); - } - - @Override - public Dynamic addFilter(String filterName, String className) - { - throw new UnsupportedOperationException(); - } - - @Override - public javax.servlet.ServletRegistration.Dynamic addServlet(String servletName, Class<? extends Servlet> servletClass) - { - throw new UnsupportedOperationException(); - } - - @Override - public javax.servlet.ServletRegistration.Dynamic addServlet(String servletName, Servlet servlet) - { - throw new UnsupportedOperationException(); - } - - @Override - public javax.servlet.ServletRegistration.Dynamic addServlet(String servletName, String className) - { - throw new UnsupportedOperationException(); - } - - @Override - public <T extends Filter> T createFilter(Class<T> c) throws ServletException - { - throw new UnsupportedOperationException(); - } - - @Override - public <T extends Servlet> T createServlet(Class<T> c) throws ServletException - { - throw new UnsupportedOperationException(); - } - - @Override - public Set<SessionTrackingMode> getDefaultSessionTrackingModes() - { - throw new UnsupportedOperationException(); - } - - @Override - public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() - { - throw new UnsupportedOperationException(); - } - - @Override - public FilterRegistration getFilterRegistration(String filterName) - { - throw new UnsupportedOperationException(); - } - - @Override - public Map<String, ? extends FilterRegistration> getFilterRegistrations() - { - throw new UnsupportedOperationException(); - } - - @Override - public ServletRegistration getServletRegistration(String servletName) - { - throw new UnsupportedOperationException(); - } - - @Override - public Map<String, ? extends ServletRegistration> getServletRegistrations() - { - throw new UnsupportedOperationException(); - } - - @Override - public SessionCookieConfig getSessionCookieConfig() - { - throw new UnsupportedOperationException(); - } - - @Override - public void setSessionTrackingModes(Set<SessionTrackingMode> sessionTrackingModes) - { - throw new UnsupportedOperationException(); - } - - @Override - public void addListener(String className) - { - throw new UnsupportedOperationException(); - } - - @Override - public <T extends EventListener> void addListener(T t) - { - throw new UnsupportedOperationException(); - } - - @Override - public void addListener(Class<? extends EventListener> listenerClass) - { - throw new UnsupportedOperationException(); - } - - @Override - public <T extends EventListener> T createListener(Class<T> clazz) throws ServletException - { - try - { - return clazz.newInstance(); - } - catch (InstantiationException e) - { - throw new ServletException(e); - } - catch (IllegalAccessException e) - { - throw new ServletException(e); - } - } - - @Override - public ClassLoader getClassLoader() - { - AccessController.checkPermission(new RuntimePermission("getClassLoader")); - return null; - } - - @Override - public int getEffectiveMajorVersion() - { - return _majorVersion; - } - - @Override - public int getEffectiveMinorVersion() - { - return _minorVersion; - } - - public void setEffectiveMajorVersion (int v) - { - _majorVersion = v; - } - - public void setEffectiveMinorVersion (int v) - { - _minorVersion = v; - } - - @Override - public JspConfigDescriptor getJspConfigDescriptor() - { - throw new UnsupportedOperationException(); - } - - public void setJspConfigDescriptor(JspConfigDescriptor d) - { - throw new UnsupportedOperationException(); - } - - @Override - public void declareRoles(String... roleNames) - { - throw new UnsupportedOperationException(); - } - } - }
--- a/src/org/eclipse/jetty/server/handler/ResourceHandler.java Tue Oct 18 15:54:54 2016 -0600 +++ b/src/org/eclipse/jetty/server/handler/ResourceHandler.java Tue Oct 18 16:34:18 2016 -0600 @@ -59,7 +59,6 @@ { private static final Logger LOG = LoggerFactory.getLogger(ResourceHandler.class); - ContextHandler _context; Resource _baseResource; Resource _defaultStylesheet; Resource _stylesheet; @@ -132,8 +131,6 @@ public void doStart() throws Exception { - _context = ContextHandler.getCurrentContext(); - if (!_aliases && !FileResource.getCheckAliases()) throw new IllegalStateException("Alias checking disabled"); @@ -190,11 +187,7 @@ } } - /* ------------------------------------------------------------ */ - /** - * @return Returns the stylesheet as a Resource. - */ - public Resource getStylesheet() + private Resource getStylesheet() { if(_stylesheet != null) { @@ -259,7 +252,7 @@ _cacheControl=cacheControl==null?null:new ByteArrayBuffer(cacheControl); } - private Resource getResource(String path) throws MalformedURLException + private Resource getResource(Request request,String path) throws MalformedURLException { if (path==null || !path.startsWith("/")) throw new MalformedURLException(path); @@ -267,9 +260,10 @@ Resource base = _baseResource; if (base==null) { - if (_context==null) + ContextHandler ch = request._contextHandler; + if (ch==null) return null; - base = _context.getBaseResource(); + base = ch.getBaseResource(); if (base==null) return null; } @@ -287,7 +281,7 @@ return null; } - private Resource getResource(HttpServletRequest request) throws MalformedURLException + private Resource getResource(Request request) throws MalformedURLException { String servletPath; String pathInfo; @@ -310,7 +304,7 @@ } String pathInContext = URIUtil.addPaths(servletPath,pathInfo); - return getResource(pathInContext); + return getResource(request,pathInContext); } @@ -361,7 +355,7 @@ skipContentBody = true; } - Resource resource = getResource(request); + Resource resource = getResource(baseRequest); if (resource==null || !resource.exists()) {