diff options
author | Greg Wilkins | 2012-10-12 10:19:21 +0000 |
---|---|---|
committer | Greg Wilkins | 2012-10-12 10:19:21 +0000 |
commit | fac580c374127acd8fc9b955f415cedd8b5ec6dc (patch) | |
tree | abfe7aec8f782c512c47f8e7a71a319322ca39de /jetty-server/src/main/java | |
parent | 6c011025b67635004e3c3471a5315f2429755852 (diff) | |
parent | 7625f0b8b3a1ceced86b46f8e4c5722430323468 (diff) | |
download | org.eclipse.jetty.project-fac580c374127acd8fc9b955f415cedd8b5ec6dc.tar.gz org.eclipse.jetty.project-fac580c374127acd8fc9b955f415cedd8b5ec6dc.tar.xz org.eclipse.jetty.project-fac580c374127acd8fc9b955f415cedd8b5ec6dc.zip |
Merge remote-tracking branch 'origin/jetty-8' into jetty-9
Conflicts:
VERSION.txt
example-async-rest/async-rest-jar/pom.xml
example-async-rest/async-rest-webapp/pom.xml
example-async-rest/pom.xml
example-jetty-embedded/pom.xml
jetty-aggregate/jetty-all-server/pom.xml
jetty-aggregate/jetty-all/pom.xml
jetty-aggregate/jetty-client/pom.xml
jetty-aggregate/jetty-server/pom.xml
jetty-aggregate/jetty-servlet/pom.xml
jetty-aggregate/jetty-webapp/pom.xml
jetty-aggregate/jetty-websocket/pom.xml
jetty-aggregate/pom.xml
jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Generator.java
jetty-annotations/pom.xml
jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AbstractDiscoverableAnnotationHandler.java
jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java
jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java
jetty-annotations/src/main/java/org/eclipse/jetty/annotations/ServletContainerInitializerListener.java
jetty-annotations/src/main/java/org/eclipse/jetty/annotations/ServletSecurityAnnotationHandler.java
jetty-annotations/src/main/java/org/eclipse/jetty/annotations/WebServletAnnotation.java
jetty-annotations/src/main/java/org/eclipse/jetty/annotations/WebServletAnnotationHandler.java
jetty-client/pom.xml
jetty-continuation/pom.xml
jetty-deploy/pom.xml
jetty-distribution/pom.xml
jetty-http-spi/pom.xml
jetty-http/pom.xml
jetty-http/src/main/java/org/eclipse/jetty/http/Generator.java
jetty-http/src/main/java/org/eclipse/jetty/http/HttpFields.java
jetty-http/src/main/java/org/eclipse/jetty/http/HttpGenerator.java
jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java
jetty-http/src/main/java/org/eclipse/jetty/http/MimeTypes.java
jetty-http/src/test/java/org/eclipse/jetty/http/HttpFieldsTest.java
jetty-io/pom.xml
jetty-io/src/main/java/org/eclipse/jetty/io/AbstractBuffer.java
jetty-io/src/main/java/org/eclipse/jetty/io/Buffer.java
jetty-io/src/main/java/org/eclipse/jetty/io/BufferUtil.java
jetty-jaspi/pom.xml
jetty-jmx/pom.xml
jetty-jndi/pom.xml
jetty-jndi/src/main/java/org/eclipse/jetty/jndi/ContextFactory.java
jetty-jndi/src/test/java/org/eclipse/jetty/jndi/java/TestJNDI.java
jetty-jsp/pom.xml
jetty-monitor/pom.xml
jetty-nested/pom.xml
jetty-nosql/pom.xml
jetty-osgi/jetty-osgi-boot-jsp/pom.xml
jetty-osgi/jetty-osgi-boot-warurl/pom.xml
jetty-osgi/jetty-osgi-boot/pom.xml
jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/OSGiDeployer.java
jetty-osgi/jetty-osgi-httpservice/pom.xml
jetty-osgi/pom.xml
jetty-osgi/test-jetty-osgi-context/pom.xml
jetty-osgi/test-jetty-osgi-webapp/pom.xml
jetty-osgi/test-jetty-osgi/pom.xml
jetty-overlay-deployer/pom.xml
jetty-plus/pom.xml
jetty-policy/pom.xml
jetty-rewrite/pom.xml
jetty-runner/pom.xml
jetty-security/pom.xml
jetty-security/src/main/java/org/eclipse/jetty/security/ConstraintSecurityHandler.java
jetty-security/src/main/java/org/eclipse/jetty/security/authentication/FormAuthenticator.java
jetty-security/src/main/java/org/eclipse/jetty/security/authentication/LoginAuthenticator.java
jetty-security/src/test/java/org/eclipse/jetty/security/ConstraintTest.java
jetty-server/pom.xml
jetty-server/src/main/java/org/eclipse/jetty/server/AbstractHttpConnection.java
jetty-server/src/main/java/org/eclipse/jetty/server/AsyncHttpConnection.java
jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java
jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java
jetty-server/src/main/java/org/eclipse/jetty/server/Request.java
jetty-server/src/main/java/org/eclipse/jetty/server/Response.java
jetty-server/src/main/java/org/eclipse/jetty/server/bio/SocketConnector.java
jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionHandler.java
jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java
jetty-server/src/test/java/org/eclipse/jetty/server/HttpURITest.java
jetty-server/src/test/java/org/eclipse/jetty/server/ResponseTest.java
jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SelectChannelServerSslTest.java
jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslSocketServerTest.java
jetty-server/src/test/resources/jetty-logging.properties
jetty-servlet/pom.xml
jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java
jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletContextHandler.java
jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHolder.java
jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DispatcherTest.java
jetty-servlets/pom.xml
jetty-servlets/src/main/java/org/eclipse/jetty/servlets/GzipFilter.java
jetty-servlets/src/main/java/org/eclipse/jetty/servlets/MultiPartFilter.java
jetty-servlets/src/test/java/org/eclipse/jetty/servlets/MultipartFilterTest.java
jetty-servlets/src/test/java/org/eclipse/jetty/servlets/gzip/GzipTester.java
jetty-spdy/pom.xml
jetty-spdy/spdy-client/pom.xml
jetty-spdy/spdy-core/pom.xml
jetty-spdy/spdy-example-webapp/pom.xml
jetty-spdy/spdy-http-server/pom.xml
jetty-spdy/spdy-jetty-http/src/main/java/org/eclipse/jetty/spdy/http/ServerHTTPSPDYAsyncConnection.java
jetty-start/pom.xml
jetty-start/src/test/java/org/eclipse/jetty/start/CommandLineBuilderTest.java
jetty-start/src/test/java/org/eclipse/jetty/start/MainTest.java
jetty-util-ajax/pom.xml
jetty-util/pom.xml
jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStream.java
jetty-util/src/main/java/org/eclipse/jetty/util/log/StdErrLog.java
jetty-util/src/test/java/org/eclipse/jetty/util/MultiPartInputStreamTest.java
jetty-webapp/pom.xml
jetty-webapp/src/main/java/org/eclipse/jetty/webapp/StandardDescriptorProcessor.java
jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java
jetty-websocket/pom.xml
jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketServletRFCTest.java
jetty-websocket/src/test/java/org/eclipse/jetty/websocket/helper/MessageSender.java
jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/UnitGenerator.java
jetty-xml/pom.xml
pom.xml
test-continuation/pom.xml
test-jetty-nested/pom.xml
test-jetty-servlet/pom.xml
test-jetty-webapp/pom.xml
test-jetty-webapp/src/main/webapp/WEB-INF/web.xml
tests/pom.xml
tests/test-integration/pom.xml
tests/test-loginservice/pom.xml
tests/test-sessions/pom.xml
tests/test-sessions/test-hash-sessions/pom.xml
tests/test-sessions/test-jdbc-sessions/pom.xml
tests/test-sessions/test-mongodb-sessions/pom.xml
tests/test-sessions/test-sessions-common/pom.xml
tests/test-webapps/pom.xml
tests/test-webapps/test-webapp-rfc2616/pom.xml
Diffstat (limited to 'jetty-server/src/main/java')
7 files changed, 180 insertions, 83 deletions
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java index 98a86b8a01..5484a62253 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java @@ -73,9 +73,9 @@ public abstract class HttpInput<T> extends ServletInputStream @Override public int read() throws IOException { - byte[] oneByte = new byte[1]; - int len = read(oneByte, 0, 1); - return len < 0 ? len : 0xFF & oneByte[0]; + byte[] bytes = new byte[1]; + int read = read(bytes, 0, 1); + return read < 0 ? -1 : 0xff & bytes[0]; } @Override @@ -127,7 +127,6 @@ public abstract class HttpInput<T> extends ServletInputStream } return get(item, b, off, len); } - protected abstract int remaining(T item); protected abstract int get(T item, byte[] buffer, int offset, int length); diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java index 7c6c19fa63..8cbc9d0f6f 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java @@ -173,6 +173,7 @@ public class HttpOutput extends ServletOutputStream _channel.write(_aggregate, false); } + @Override public void write(int b) throws IOException { @@ -181,7 +182,7 @@ public class HttpOutput extends ServletOutputStream if (_aggregate == null) _aggregate = _channel.getByteBufferPool().acquire(getBufferSize(), false); - + BufferUtil.append(_aggregate, (byte)b); _written++; diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java index 4975a2c600..e203a3f4d4 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java @@ -49,6 +49,8 @@ import javax.servlet.ServletInputStream; import javax.servlet.ServletRequest; import javax.servlet.ServletRequestAttributeEvent; import javax.servlet.ServletRequestAttributeListener; +import javax.servlet.ServletRequestEvent; +import javax.servlet.ServletRequestListener; import javax.servlet.ServletResponse; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; @@ -71,6 +73,7 @@ import org.eclipse.jetty.server.handler.ContextHandler.Context; import org.eclipse.jetty.server.session.AbstractSessionManager; import org.eclipse.jetty.util.Attributes; import org.eclipse.jetty.util.AttributesMap; +import org.eclipse.jetty.util.MultiException; import org.eclipse.jetty.util.MultiMap; import org.eclipse.jetty.util.MultiPartInputStream; import org.eclipse.jetty.util.StringUtil; @@ -114,6 +117,8 @@ import org.eclipse.jetty.util.log.Logger; public class Request implements HttpServletRequest { public static final String __MULTIPART_CONFIG_ELEMENT = "org.eclipse.multipartConfig"; + public static final String __MULTIPART_INPUT_STREAM = "org.eclipse.multiPartInputStream"; + public static final String __MULTIPART_CONTEXT = "org.eclipse.multiPartContext"; private static final Logger LOG = Log.getLogger(Request.class); private static final Collection<Locale> __defaultLocale = Collections.singleton(Locale.getDefault()); @@ -123,6 +128,42 @@ public class Request implements HttpServletRequest private final HttpFields _fields=new HttpFields(); private final List<ServletRequestAttributeListener> _requestAttributeListeners=new ArrayList<>(); private final HttpInput<?> _input; + + public static class MultiPartCleanerListener implements ServletRequestListener + { + @Override + public void requestDestroyed(ServletRequestEvent sre) + { + //Clean up any tmp files created by MultiPartInputStream + MultiPartInputStream mpis = (MultiPartInputStream)sre.getServletRequest().getAttribute(__MULTIPART_INPUT_STREAM); + if (mpis != null) + { + ContextHandler.Context context = (ContextHandler.Context)sre.getServletRequest().getAttribute(__MULTIPART_CONTEXT); + + //Only do the cleanup if we are exiting from the context in which a servlet parsed the multipart files + if (context == sre.getServletContext()) + { + try + { + mpis.deleteParts(); + } + catch (MultiException e) + { + sre.getServletContext().log("Errors deleting multipart tmp files", e); + } + } + } + } + + @Override + public void requestInitialized(ServletRequestEvent sre) + { + //nothing to do, multipart config set up by ServletHolder.handle() + } + + } + + private boolean _secure; private boolean _asyncSupported = true; @@ -1763,6 +1804,7 @@ public class Request implements HttpServletRequest public void setQueryString(String queryString) { _queryString = queryString; + _queryEncoding = null; //assume utf-8 } /* ------------------------------------------------------------ */ @@ -1950,9 +1992,16 @@ public class Request implements HttpServletRequest if (_multiPartInputStream == null) { + MultipartConfigElement config = (MultipartConfigElement)getAttribute(__MULTIPART_CONFIG_ELEMENT); + + if (config == null) + throw new IllegalStateException("No multipart config for servlet"); + _multiPartInputStream = new MultiPartInputStream(getInputStream(), - getContentType(),(MultipartConfigElement)getAttribute(__MULTIPART_CONFIG_ELEMENT), + getContentType(),config, (_context != null?(File)_context.getAttribute("javax.servlet.context.tempdir"):null)); + setAttribute(__MULTIPART_INPUT_STREAM, _multiPartInputStream); + setAttribute(__MULTIPART_CONTEXT, _context); Collection<Part> parts = _multiPartInputStream.getParts(); //causes parsing for (Part p:parts) { @@ -1982,9 +2031,17 @@ public class Request implements HttpServletRequest if (_multiPartInputStream == null) { + MultipartConfigElement config = (MultipartConfigElement)getAttribute(__MULTIPART_CONFIG_ELEMENT); + + if (config == null) + throw new IllegalStateException("No multipart config for servlet"); + _multiPartInputStream = new MultiPartInputStream(getInputStream(), - getContentType(),(MultipartConfigElement)getAttribute(__MULTIPART_CONFIG_ELEMENT), + getContentType(), config, (_context != null?(File)_context.getAttribute("javax.servlet.context.tempdir"):null)); + + setAttribute(__MULTIPART_INPUT_STREAM, _multiPartInputStream); + setAttribute(__MULTIPART_CONTEXT, _context); Collection<Part> parts = _multiPartInputStream.getParts(); //causes parsing for (Part p:parts) { @@ -2042,7 +2099,7 @@ public class Request implements HttpServletRequest { // extract parameters from dispatch query MultiMap<String> parameters = new MultiMap<>(); - UrlEncoded.decodeTo(query,parameters,getCharacterEncoding()); + UrlEncoded.decodeTo(query,parameters, StringUtil.__UTF8); //have to assume UTF-8 because we can't know otherwise boolean merge_old_query = false; @@ -2063,10 +2120,11 @@ public class Request implements HttpServletRequest { StringBuilder overridden_query_string = new StringBuilder(); MultiMap<String> overridden_old_query = new MultiMap<>(); - UrlEncoded.decodeTo(_queryString,overridden_old_query,getCharacterEncoding()); - + UrlEncoded.decodeTo(_queryString,overridden_old_query,getQueryEncoding());//decode using any queryencoding set for the request + + MultiMap<String> overridden_new_query = new MultiMap<>(); - UrlEncoded.decodeTo(query,overridden_new_query,getCharacterEncoding()); + UrlEncoded.decodeTo(query,overridden_new_query,StringUtil.__UTF8); //have to assume utf8 as we cannot know otherwise for(String name: overridden_old_query.keySet()) { diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java index 6294d4a3d1..4cc8a885cc 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java @@ -22,7 +22,9 @@ import java.io.IOException; import java.io.PrintWriter; import java.nio.channels.IllegalSelectorException; import java.util.Collection; +import java.util.ArrayList; import java.util.Collections; +import java.util.Enumeration; import java.util.Locale; import java.util.concurrent.atomic.AtomicInteger; import javax.servlet.RequestDispatcher; @@ -58,6 +60,15 @@ public class Response implements HttpServletResponse { private static final Logger LOG = Log.getLogger(Response.class); + /* ------------------------------------------------------------ */ + public static Response getResponse(HttpServletResponse response) + { + if (response instanceof Response) + return (Response)response; + return HttpChannel.getCurrentHttpChannel().getResponse(); + } + + public enum OutputType { NONE, STREAM, WRITER @@ -76,7 +87,7 @@ public class Response implements HttpServletResponse */ public final static String HTTP_ONLY_COMMENT = "__HTTP_ONLY__"; - private final HttpChannel _channel; + private final HttpChannel<?> _channel; private final HttpOutput _out; private final HttpFields _fields = new HttpFields(); private final AtomicInteger _include = new AtomicInteger(); @@ -905,6 +916,22 @@ public class Response implements HttpServletResponse } } + public void reset(boolean preserveCookies) + { + if (!preserveCookies) + reset(); + else + { + ArrayList<String> cookieValues = new ArrayList<String>(5); + Enumeration<String> vals = _fields.getValues(HttpHeader.SET_COOKIE.asString()); + while (vals.hasMoreElements()) + cookieValues.add(vals.nextElement()); + reset(); + for (String v:cookieValues) + _fields.add(HttpHeader.SET_COOKIE, v); + } + } + public void resetForForward() { resetBuffer(); diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java index 767ea8fa03..564e01b1dc 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java @@ -443,7 +443,7 @@ public class Server extends HandlerWrapper implements Attributes baseRequest.setRequestURI(null); baseRequest.setPathInfo(baseRequest.getRequestURI()); if (uri.getQuery()!=null) - baseRequest.mergeQueryString(uri.getQuery()); + baseRequest.mergeQueryString(uri.getQuery()); //we have to assume dispatch path and query are UTF8 } final String target=baseRequest.getPathInfo(); diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ShutdownHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ShutdownHandler.java index 3ddfad8b2f..c4f07a5d52 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ShutdownHandler.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ShutdownHandler.java @@ -50,7 +50,7 @@ import org.eclipse.jetty.util.log.Logger; <pre> public static void attemptShutdown(int port, String shutdownCookie) { try { - URL url = new URL("http://localhost:" + port + "/shutdown?cookie=" + shutdownCookie); + URL url = new URL("http://localhost:" + port + "/shutdown?token=" + shutdownCookie); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("POST"); connection.getResponseCode(); diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionHandler.java index c277db35ab..4d34ef78b9 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionHandler.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionHandler.java @@ -21,7 +21,6 @@ package org.eclipse.jetty.server.session; import java.io.IOException; import java.util.EnumSet; import java.util.EventListener; - import javax.servlet.DispatcherType; import javax.servlet.ServletException; import javax.servlet.SessionTrackingMode; @@ -39,7 +38,8 @@ import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; /* ------------------------------------------------------------ */ -/** SessionHandler. +/** + * SessionHandler. */ public class SessionHandler extends ScopedHandler { @@ -52,9 +52,8 @@ public class SessionHandler extends ScopedHandler private SessionManager _sessionManager; /* ------------------------------------------------------------ */ - /** Constructor. - * Construct a SessionHandler witha a HashSessionManager with a standard - * java.util.Random generator is created. + /** + * Constructor. Construct a SessionHandler witha a HashSessionManager with a standard java.util.Random generator is created. */ public SessionHandler() { @@ -63,7 +62,8 @@ public class SessionHandler extends ScopedHandler /* ------------------------------------------------------------ */ /** - * @param manager The session manager + * @param manager + * The session manager */ public SessionHandler(SessionManager manager) { @@ -81,13 +81,14 @@ public class SessionHandler extends ScopedHandler /* ------------------------------------------------------------ */ /** - * @param sessionManager The sessionManager to set. + * @param sessionManager + * The sessionManager to set. */ public void setSessionManager(SessionManager sessionManager) { if (isStarted()) throw new IllegalStateException(); - if (sessionManager!=null) + if (sessionManager != null) sessionManager.setSessionHandler(this); updateBean(_sessionManager,sessionManager); _sessionManager=sessionManager; @@ -104,6 +105,7 @@ public class SessionHandler extends ScopedHandler setSessionManager(new HashSessionManager()); super.doStart(); } + /* ------------------------------------------------------------ */ /* * @see org.eclipse.thread.AbstractLifeCycle#doStop() @@ -121,12 +123,11 @@ public class SessionHandler extends ScopedHandler * @see org.eclipse.jetty.server.Handler#handle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, int) */ @Override - public void doScope(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) - throws IOException, ServletException + public void doScope(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - SessionManager old_session_manager=null; - HttpSession old_session=null; - HttpSession access=null; + SessionManager old_session_manager = null; + HttpSession old_session = null; + HttpSession access = null; try { old_session_manager = baseRequest.getSessionManager(); @@ -141,54 +142,54 @@ public class SessionHandler extends ScopedHandler } // access any existing session - HttpSession session=null; - if (_sessionManager!=null) + HttpSession session = null; + if (_sessionManager != null) { - session=baseRequest.getSession(false); - if (session!=null) + session = baseRequest.getSession(false); + if (session != null) { - if(session!=old_session) + if (session != old_session) { - access=session; + access = session; HttpCookie cookie = _sessionManager.access(session,request.isSecure()); - if (cookie!=null ) // Handle changed ID or max-age refresh + if (cookie != null) // Handle changed ID or max-age refresh baseRequest.getResponse().addCookie(cookie); } } else { - session=baseRequest.recoverNewSession(_sessionManager); - if (session!=null) + session = baseRequest.recoverNewSession(_sessionManager); + if (session != null) baseRequest.setSession(session); } } - if(LOG.isDebugEnabled()) + if (LOG.isDebugEnabled()) { - LOG.debug("sessionManager="+_sessionManager); - LOG.debug("session="+session); + LOG.debug("sessionManager=" + _sessionManager); + LOG.debug("session=" + session); } // start manual inline of nextScope(target,baseRequest,request,response); - if (_nextScope!=null) - _nextScope.doScope(target,baseRequest,request, response); - else if (_outerScope!=null) - _outerScope.doHandle(target,baseRequest,request, response); + if (_nextScope != null) + _nextScope.doScope(target,baseRequest,request,response); + else if (_outerScope != null) + _outerScope.doHandle(target,baseRequest,request,response); else - doHandle(target,baseRequest,request, response); + doHandle(target,baseRequest,request,response); // end manual inline (pathentic attempt to reduce stack depth) } finally { - if (access!=null) + if (access != null) _sessionManager.complete(access); HttpSession session = baseRequest.getSession(false); - if (session!=null && old_session==null && session!=access) + if (session != null && old_session == null && session != access) _sessionManager.complete(session); - if (old_session_manager!=null && old_session_manager != _sessionManager) + if (old_session_manager != null && old_session_manager != _sessionManager) { baseRequest.setSessionManager(old_session_manager); baseRequest.setSession(old_session); @@ -201,91 +202,102 @@ public class SessionHandler extends ScopedHandler * @see org.eclipse.jetty.server.Handler#handle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, int) */ @Override - public void doHandle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) - throws IOException, ServletException + public void doHandle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { // start manual inline of nextHandle(target,baseRequest,request,response); if (never()) nextHandle(target,baseRequest,request,response); - else if (_nextScope!=null && _nextScope==_handler) - _nextScope.doHandle(target,baseRequest,request, response); - else if (_handler!=null) - _handler.handle(target,baseRequest, request, response); + else if (_nextScope != null && _nextScope == _handler) + _nextScope.doHandle(target,baseRequest,request,response); + else if (_handler != null) + _handler.handle(target,baseRequest,request,response); // end manual inline } /* ------------------------------------------------------------ */ - /** Look for a requested session ID in cookies and URI parameters + /** + * Look for a requested session ID in cookies and URI parameters + * * @param baseRequest * @param request */ protected void checkRequestedSessionId(Request baseRequest, HttpServletRequest request) { - String requested_session_id=request.getRequestedSessionId(); + String requested_session_id = request.getRequestedSessionId(); SessionManager sessionManager = getSessionManager(); - if (requested_session_id!=null && sessionManager!=null) + if (requested_session_id != null && sessionManager != null) { - HttpSession session=sessionManager.getHttpSession(requested_session_id); - if (session!=null && sessionManager.isValid(session)) + HttpSession session = sessionManager.getHttpSession(requested_session_id); + if (session != null && sessionManager.isValid(session)) baseRequest.setSession(session); return; } else if (!DispatcherType.REQUEST.equals(baseRequest.getDispatcherType())) return; - boolean requested_session_id_from_cookie=false; - HttpSession session=null; + boolean requested_session_id_from_cookie = false; + HttpSession session = null; // Look for session id cookie if (_sessionManager.isUsingCookies()) { - Cookie[] cookies=request.getCookies(); - if (cookies!=null && cookies.length>0) + Cookie[] cookies = request.getCookies(); + if (cookies != null && cookies.length > 0) { final String sessionCookie=sessionManager.getSessionCookieConfig().getName(); - for (int i=0;i<cookies.length;i++) + for (int i = 0; i < cookies.length; i++) { if (sessionCookie.equalsIgnoreCase(cookies[i].getName())) { - requested_session_id=cookies[i].getValue(); + requested_session_id = cookies[i].getValue(); requested_session_id_from_cookie = true; - if(LOG.isDebugEnabled()) - LOG.debug("Got Session ID {} from cookie",requested_session_id); - session=sessionManager.getHttpSession(requested_session_id); - if (session!=null && sessionManager.isValid(session)) - break; + LOG.debug("Got Session ID {} from cookie",requested_session_id); + + if (requested_session_id != null) + { + session = sessionManager.getHttpSession(requested_session_id); + + if (session != null && sessionManager.isValid(session)) + { + break; + } + } + else + { + LOG.warn("null session id from cookie"); + } } } } } - if (requested_session_id==null || session==null) + if (requested_session_id == null || session == null) { String uri = request.getRequestURI(); - String prefix=sessionManager.getSessionIdPathParameterNamePrefix(); - if (prefix!=null) + String prefix = sessionManager.getSessionIdPathParameterNamePrefix(); + if (prefix != null) { int s = uri.indexOf(prefix); - if (s>=0) + if (s >= 0) { - s+=prefix.length(); - int i=s; - while (i<uri.length()) + s += prefix.length(); + int i = s; + while (i < uri.length()) { - char c=uri.charAt(i); - if (c==';'||c=='#'||c=='?'||c=='/') + char c = uri.charAt(i); + if (c == ';' || c == '#' || c == '?' || c == '/') break; i++; } requested_session_id = uri.substring(s,i); requested_session_id_from_cookie = false; - session=sessionManager.getHttpSession(requested_session_id); - if(LOG.isDebugEnabled()) + session = sessionManager.getHttpSession(requested_session_id); + if (LOG.isDebugEnabled()) LOG.debug("Got Session ID {} from URL",requested_session_id); } } @@ -293,7 +305,7 @@ public class SessionHandler extends ScopedHandler baseRequest.setRequestedSessionId(requested_session_id); baseRequest.setRequestedSessionIdFromCookie(requested_session_id!=null && requested_session_id_from_cookie); - if (session!=null && sessionManager.isValid(session)) + if (session != null && sessionManager.isValid(session)) baseRequest.setSession(session); } @@ -303,14 +315,14 @@ public class SessionHandler extends ScopedHandler */ public void addEventListener(EventListener listener) { - if(_sessionManager!=null) + if (_sessionManager != null) _sessionManager.addEventListener(listener); } /* ------------------------------------------------------------ */ public void clearEventListeners() { - if(_sessionManager!=null) + if (_sessionManager != null) _sessionManager.clearEventListeners(); } } |