Protected HttpParser from multiple entry.

This commit is contained in:
Greg Wilkins 2011-10-20 12:18:10 +11:00
parent 75c4ec733d
commit 0e284f78f5
40 changed files with 828 additions and 839 deletions

View File

@ -13,7 +13,7 @@
package org.eclipse.jetty.ajp;
import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.AbstractHttpConnection;
import org.eclipse.jetty.server.Request;
public class Ajp13Request extends Request
@ -24,7 +24,7 @@ public class Ajp13Request extends Request
protected boolean _sslSecure;
/* ------------------------------------------------------------ */
public Ajp13Request(HttpConnection connection)
public Ajp13Request(AbstractHttpConnection connection)
{
super(connection);
}

View File

@ -36,6 +36,7 @@ import org.eclipse.jetty.io.Buffers;
import org.eclipse.jetty.io.ByteArrayBuffer;
import org.eclipse.jetty.io.Connection;
import org.eclipse.jetty.io.EndPoint;
import org.eclipse.jetty.io.EofException;
import org.eclipse.jetty.io.View;
import org.eclipse.jetty.util.component.AggregateLifeCycle;
import org.eclipse.jetty.util.component.Dumpable;
@ -394,7 +395,7 @@ public abstract class AbstractHttpConnection extends AbstractConnection implemen
String exch= exchange.toString();
String reason = _endp.isOpen()?(_endp.isInputShutdown()?"half closed: ":"local close: "):"closed: ";
exchange.setStatus(HttpExchange.STATUS_EXCEPTED);
exchange.getEventListener().onException(new EOFException(reason+exch));
exchange.getEventListener().onException(new EofException(reason+exch));
}
}

View File

@ -58,13 +58,14 @@ public class AsyncHttpConnection extends AbstractHttpConnection implements Async
if (exchange == null)
{
long filled = _parser.fill();
// TODO long filled = _parser.fill();
long filled = -1;
if (filled < 0)
close();
else
{
// Hopefully just space?
_parser.skipCRLF();
// TODO _parser.skipCRLF();
if (_parser.isMoreInBuffer())
{
LOG.warn("Unexpected data received but no request sent");

View File

@ -28,7 +28,7 @@ import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.io.Buffer;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.AbstractHttpConnection;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.AbstractHandler;
@ -320,7 +320,7 @@ public abstract class AbstractHttpExchangeCancelTest
{
try
{
((StdErrLog)Log.getLogger(HttpConnection.class)).setHideStacks(true);
((StdErrLog)Log.getLogger(AbstractHttpConnection.class)).setHideStacks(true);
TestHttpExchange exchange = new TestHttpExchange();
exchange.setAddress(newAddress());
exchange.setRequestURI("/?action=throw");
@ -335,7 +335,7 @@ public abstract class AbstractHttpExchangeCancelTest
}
finally
{
((StdErrLog)Log.getLogger(HttpConnection.class)).setHideStacks(false);
((StdErrLog)Log.getLogger(AbstractHttpConnection.class)).setHideStacks(false);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -22,12 +22,6 @@ public interface AsyncEndPoint extends EndPoint
*/
public void asyncDispatch();
/**
* @return true if this endpoint can accept a dispatch. False if the
* endpoint cannot accept a dispatched (eg is suspended or already dispatched)
*/
public boolean isReadyForDispatch();
/* ------------------------------------------------------------ */
/** Schedule a write dispatch.
* Set the endpoint to not be writable and schedule a dispatch when

View File

@ -15,6 +15,13 @@ package org.eclipse.jetty.io;
import java.io.EOFException;
/* ------------------------------------------------------------ */
/** A Jetty specialization of EOFException.
* <p> This is thrown by Jetty to distinguish between EOF received from
* the connection, vs and EOF thrown by some application talking to some other file/socket etc.
* The only difference in handling is that Jetty EOFs are logged less verbosely.
*/
public class EofException extends EOFException
{
public EofException()

View File

@ -168,14 +168,6 @@ public class SelectChannelEndPoint extends ChannelEndPoint implements AsyncEndPo
return;
}
// Otherwise if we are still dispatched
if (!isReadyForDispatch())
{
// we are not interested in further selecting
_key.interestOps(0);
return;
}
// Remove writeable op
if ((_key.readyOps() & SelectionKey.OP_WRITE) == SelectionKey.OP_WRITE && (_key.interestOps() & SelectionKey.OP_WRITE) == SelectionKey.OP_WRITE)
{
@ -336,16 +328,6 @@ public class SelectChannelEndPoint extends ChannelEndPoint implements AsyncEndPo
return l;
}
/* ------------------------------------------------------------ */
public boolean isReadyForDispatch()
{
synchronized (this)
{
// Ready if not dispatched and not suspended
return !(_dispatched || getConnection().isSuspended());
}
}
/* ------------------------------------------------------------ */
/*
* Allows thread to block waiting for further events.
@ -467,9 +449,11 @@ public class SelectChannelEndPoint extends ChannelEndPoint implements AsyncEndPo
{
if (getChannel().isOpen())
{
boolean read_interest = _readBlocked || (!_dispatched && !_connection.isSuspended());
boolean write_interest= _writeBlocked || (!_dispatched && !_writable);
_interestOps =
((!_socket.isInputShutdown() && (!_dispatched || _readBlocked)) ? SelectionKey.OP_READ : 0)
| ((!_socket.isOutputShutdown()&& (!_writable || _writeBlocked)) ? SelectionKey.OP_WRITE : 0);
((!_socket.isInputShutdown() && read_interest ) ? SelectionKey.OP_READ : 0)
| ((!_socket.isOutputShutdown()&& write_interest) ? SelectionKey.OP_WRITE : 0);
try
{
current_ops = ((_key!=null && _key.isValid())?_key.interestOps():-1);
@ -488,6 +472,7 @@ public class SelectChannelEndPoint extends ChannelEndPoint implements AsyncEndPo
_selectSet.wakeup();
}
}
/* ------------------------------------------------------------ */
/**

View File

@ -27,7 +27,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
import org.eclipse.jetty.http.PathMap;
import org.eclipse.jetty.http.security.Constraint;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.AbstractHttpConnection;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Response;
import org.eclipse.jetty.server.UserIdentity;
@ -351,7 +351,7 @@ public class ConstraintSecurityHandler extends SecurityHandler implements Constr
{
return true;
}
HttpConnection connection = HttpConnection.getCurrentConnection();
AbstractHttpConnection connection = AbstractHttpConnection.getCurrentConnection();
Connector connector = connection.getConnector();
if (dataConstraint == UserDataConstraint.Integral)

View File

@ -35,7 +35,7 @@ import org.eclipse.jetty.security.ServerAuthException;
import org.eclipse.jetty.security.UserAuthentication;
import org.eclipse.jetty.server.Authentication;
import org.eclipse.jetty.server.Authentication.User;
import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.AbstractHttpConnection;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.UserIdentity;
import org.eclipse.jetty.util.MultiMap;
@ -259,7 +259,7 @@ public class FormAuthenticator extends LoginAuthenticator
// so restore method and parameters
session.removeAttribute(__J_POST);
Request base_request = (req instanceof Request)?(Request)req:HttpConnection.getCurrentConnection().getRequest();
Request base_request = (req instanceof Request)?(Request)req:AbstractHttpConnection.getCurrentConnection().getRequest();
base_request.setMethod(HttpMethods.POST);
base_request.setParameters(j_post);
}
@ -289,7 +289,7 @@ public class FormAuthenticator extends LoginAuthenticator
if (MimeTypes.FORM_ENCODED.equalsIgnoreCase(req.getContentType()) && HttpMethods.POST.equals(request.getMethod()))
{
Request base_request = (req instanceof Request)?(Request)req:HttpConnection.getCurrentConnection().getRequest();
Request base_request = (req instanceof Request)?(Request)req:AbstractHttpConnection.getCurrentConnection().getRequest();
base_request.extractParameters();
session.setAttribute(__J_POST, new MultiMap<String>(base_request.getParameters()));
}

View File

@ -1039,7 +1039,7 @@ public abstract class AbstractConnector extends HttpBuffers implements Connector
/* ------------------------------------------------------------ */
protected void connectionUpgraded(Connection oldConnection, Connection newConnection)
{
_requestStats.set((oldConnection instanceof HttpConnection)?((HttpConnection)oldConnection).getRequests():0);
_requestStats.set((oldConnection instanceof AbstractHttpConnection)?((AbstractHttpConnection)oldConnection).getRequests():0);
}
/* ------------------------------------------------------------ */
@ -1051,7 +1051,7 @@ public abstract class AbstractConnector extends HttpBuffers implements Connector
return;
long duration = System.currentTimeMillis() - connection.getTimeStamp();
int requests = (connection instanceof HttpConnection)?((HttpConnection)connection).getRequests():0;
int requests = (connection instanceof AbstractHttpConnection)?((AbstractHttpConnection)connection).getRequests():0;
_requestStats.set(requests);
_connectionStats.decrement();
_connectionDurationStats.set(duration);

View File

@ -88,12 +88,12 @@ import org.eclipse.jetty.util.thread.Timeout;
* </p>
*
*/
public abstract class HttpConnection extends AbstractConnection
public abstract class AbstractHttpConnection extends AbstractConnection
{
private static final Logger LOG = Log.getLogger(HttpConnection.class);
private static final Logger LOG = Log.getLogger(AbstractHttpConnection.class);
private static final int UNKNOWN = -2;
private static final ThreadLocal<HttpConnection> __currentConnection = new ThreadLocal<HttpConnection>();
private static final ThreadLocal<AbstractHttpConnection> __currentConnection = new ThreadLocal<AbstractHttpConnection>();
private int _requests;
@ -127,13 +127,13 @@ public abstract class HttpConnection extends AbstractConnection
private boolean _delayedHandling=false;
/* ------------------------------------------------------------ */
public static HttpConnection getCurrentConnection()
public static AbstractHttpConnection getCurrentConnection()
{
return __currentConnection.get();
}
/* ------------------------------------------------------------ */
protected static void setCurrentConnection(HttpConnection connection)
protected static void setCurrentConnection(AbstractHttpConnection connection)
{
__currentConnection.set(connection);
}
@ -142,7 +142,7 @@ public abstract class HttpConnection extends AbstractConnection
/** Constructor
*
*/
public HttpConnection(Connector connector, EndPoint endpoint, Server server)
public AbstractHttpConnection(Connector connector, EndPoint endpoint, Server server)
{
super(endpoint);
_uri = StringUtil.__UTF8.equals(URIUtil.__CHARSET)?new HttpURI():new EncodedHttpURI(URIUtil.__CHARSET);
@ -159,7 +159,7 @@ public abstract class HttpConnection extends AbstractConnection
}
/* ------------------------------------------------------------ */
protected HttpConnection(Connector connector, EndPoint endpoint, Server server,
protected AbstractHttpConnection(Connector connector, EndPoint endpoint, Server server,
Parser parser, Generator generator, Request request)
{
super(endpoint);
@ -326,7 +326,7 @@ public abstract class HttpConnection extends AbstractConnection
}
if (_in == null)
_in = new HttpInput(HttpConnection.this);
_in = new HttpInput(AbstractHttpConnection.this);
return _in;
}
@ -841,6 +841,12 @@ public abstract class HttpConnection extends AbstractConnection
_responseFields.add(HttpHeaders.CONNECTION_BUFFER,HttpHeaderValues.KEEP_ALIVE_BUFFER);
_generator.setPersistent(true);
}
else if (HttpMethods.CONNECT.equals(_request.getMethod()))
{
_generator.setPersistent(true);
_parser.setPersistent(true);
}
if (_server.getSendDateHeader())
_generator.setDate(_request.getTimeStampBuffer());
break;
@ -943,7 +949,7 @@ public abstract class HttpConnection extends AbstractConnection
{
Output()
{
super(HttpConnection.this);
super(AbstractHttpConnection.this);
}
/* ------------------------------------------------------------ */
@ -1113,7 +1119,7 @@ public abstract class HttpConnection extends AbstractConnection
{
OutputWriter()
{
super(HttpConnection.this._out);
super(AbstractHttpConnection.this._out);
}
}

View File

@ -69,7 +69,7 @@ public class AsyncContinuation implements AsyncContext, Continuation
/* ------------------------------------------------------------ */
protected HttpConnection _connection;
protected AbstractHttpConnection _connection;
private List<ContinuationListener> _continuationListeners;
/* ------------------------------------------------------------ */
@ -90,7 +90,7 @@ public class AsyncContinuation implements AsyncContext, Continuation
}
/* ------------------------------------------------------------ */
protected void setConnection(final HttpConnection connection)
protected void setConnection(final AbstractHttpConnection connection)
{
synchronized(this)
{

View File

@ -11,7 +11,7 @@ import org.eclipse.jetty.io.nio.SelectChannelEndPoint;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
public class AsyncHttpConnection extends HttpConnection implements AsyncConnection
public class AsyncHttpConnection extends AbstractHttpConnection implements AsyncConnection
{
private final static int NO_PROGRESS_INFO = Integer.getInteger("org.mortbay.jetty.NO_PROGRESS_INFO",100);
private final static int NO_PROGRESS_CLOSE = Integer.getInteger("org.mortbay.jetty.NO_PROGRESS_CLOSE",200);

View File

@ -11,7 +11,7 @@ import org.eclipse.jetty.io.EndPoint;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
public class BlockingHttpConnection extends HttpConnection
public class BlockingHttpConnection extends AbstractHttpConnection
{
private static final Logger LOG = Log.getLogger(BlockingHttpConnection.class);

View File

@ -130,7 +130,7 @@ public class Dispatcher implements RequestDispatcher
*/
public void include(ServletRequest request, ServletResponse response) throws ServletException, IOException
{
Request baseRequest=(request instanceof Request)?((Request)request):HttpConnection.getCurrentConnection().getRequest();
Request baseRequest=(request instanceof Request)?((Request)request):AbstractHttpConnection.getCurrentConnection().getRequest();
request.removeAttribute(__JSP_FILE); // TODO remove when glassfish 1044 is fixed
if (!(request instanceof HttpServletRequest))
@ -211,7 +211,7 @@ public class Dispatcher implements RequestDispatcher
*/
protected void forward(ServletRequest request, ServletResponse response, DispatcherType dispatch) throws ServletException, IOException
{
Request baseRequest=(request instanceof Request)?((Request)request):HttpConnection.getCurrentConnection().getRequest();
Request baseRequest=(request instanceof Request)?((Request)request):AbstractHttpConnection.getCurrentConnection().getRequest();
Response base_response=baseRequest.getResponse();
response.resetBuffer();
base_response.fwdReset();

View File

@ -47,10 +47,10 @@ public interface Handler extends LifeCycle, Destroyable
* @param target The target of the request - either a URI or a name.
* @param baseRequest The original unwrapped request object.
* @param request The request either as the {@link Request}
* object or a wrapper of that request. The {@link HttpConnection#getCurrentConnection()}
* object or a wrapper of that request. The {@link AbstractHttpConnection#getCurrentConnection()}
* method can be used access the Request object if required.
* @param response The response as the {@link Response}
* object or a wrapper of that request. The {@link HttpConnection#getCurrentConnection()}
* object or a wrapper of that request. The {@link AbstractHttpConnection#getCurrentConnection()}
* method can be used access the Response object if required.
* @throws IOException
* @throws ServletException

View File

@ -22,11 +22,11 @@ import org.eclipse.jetty.io.Buffer;
public class HttpInput extends ServletInputStream
{
protected final HttpConnection _connection;
protected final AbstractHttpConnection _connection;
protected final HttpParser _parser;
/* ------------------------------------------------------------ */
public HttpInput(HttpConnection connection)
public HttpInput(AbstractHttpConnection connection)
{
_connection=connection;
_parser=(HttpParser)connection.getParser();

View File

@ -36,7 +36,7 @@ import org.eclipse.jetty.util.ByteArrayOutputStream2;
*/
public class HttpOutput extends ServletOutputStream
{
protected final HttpConnection _connection;
protected final AbstractHttpConnection _connection;
protected final AbstractGenerator _generator;
private boolean _closed;
@ -47,7 +47,7 @@ public class HttpOutput extends ServletOutputStream
ByteArrayOutputStream2 _bytes;
/* ------------------------------------------------------------ */
public HttpOutput(HttpConnection connection)
public HttpOutput(AbstractHttpConnection connection)
{
_connection=connection;
_generator=(AbstractGenerator)connection.getGenerator();

View File

@ -116,7 +116,7 @@ public class LocalConnector extends AbstractConnector
};
endPoint.setGrowOutput(true);
HttpConnection connection = new BlockingHttpConnection(LocalConnector.this, endPoint, getServer());
AbstractHttpConnection connection = new BlockingHttpConnection(LocalConnector.this, endPoint, getServer());
endPoint.setConnection(connection);
connectionOpened(connection);

View File

@ -96,7 +96,7 @@ import org.eclipse.jetty.util.log.Logger;
* against the servlet URL patterns and {@link Request#setServletPath(String)} called as a result.</li>
* </ul>
*
* A request instance is created for each {@link HttpConnection} accepted by the server
* A request instance is created for each {@link AbstractHttpConnection} accepted by the server
* and recycled for each HTTP request received via that connection. An effort is made
* to avoid reparsing headers and cookies that are likely to be the same for
* requests from the same connection.
@ -116,7 +116,7 @@ public class Request implements HttpServletRequest
if (request instanceof Request)
return (Request) request;
return HttpConnection.getCurrentConnection().getRequest();
return AbstractHttpConnection.getCurrentConnection().getRequest();
}
protected final AsyncContinuation _async = new AsyncContinuation();
private boolean _asyncSupported=true;
@ -124,7 +124,7 @@ public class Request implements HttpServletRequest
private Authentication _authentication;
private MultiMap<String> _baseParameters;
private String _characterEncoding;
protected HttpConnection _connection;
protected AbstractHttpConnection _connection;
private ContextHandler.Context _context;
private boolean _newContext;
private String _contextPath;
@ -170,7 +170,7 @@ public class Request implements HttpServletRequest
}
/* ------------------------------------------------------------ */
public Request(HttpConnection connection)
public Request(AbstractHttpConnection connection)
{
setConnection(connection);
}
@ -382,7 +382,7 @@ public class Request implements HttpServletRequest
/**
* @return Returns the connection.
*/
public HttpConnection getConnection()
public AbstractHttpConnection getConnection()
{
return _connection;
}
@ -1466,7 +1466,7 @@ public class Request implements HttpServletRequest
{
try
{
((HttpConnection.Output)getServletResponse().getOutputStream()).sendContent(value);
((AbstractHttpConnection.Output)getServletResponse().getOutputStream()).sendContent(value);
}
catch (IOException e)
{
@ -1483,7 +1483,7 @@ public class Request implements HttpServletRequest
NIOBuffer buffer = byteBuffer.isDirect()
?new DirectNIOBuffer(byteBuffer,true)
:new IndirectNIOBuffer(byteBuffer,true);
((HttpConnection.Output)getServletResponse().getOutputStream()).sendResponse(buffer);
((AbstractHttpConnection.Output)getServletResponse().getOutputStream()).sendResponse(buffer);
}
}
catch (IOException e)
@ -1579,7 +1579,7 @@ public class Request implements HttpServletRequest
/* ------------------------------------------------------------ */
//final so we can safely call this from constructor
protected final void setConnection(HttpConnection connection)
protected final void setConnection(AbstractHttpConnection connection)
{
_connection=connection;
_async.setConnection(connection);

View File

@ -65,7 +65,7 @@ public class Response implements HttpServletResponse
*/
public final static String SET_INCLUDE_HEADER_PREFIX = "org.eclipse.jetty.server.include.";
private final HttpConnection _connection;
private final AbstractHttpConnection _connection;
private int _status=SC_OK;
private String _reason;
private Locale _locale;
@ -81,7 +81,7 @@ public class Response implements HttpServletResponse
/**
*
*/
public Response(HttpConnection connection)
public Response(AbstractHttpConnection connection)
{
_connection=connection;
}

View File

@ -333,7 +333,7 @@ public class Server extends HandlerWrapper implements Attributes
* or after the entire request has been received (for short requests of known length), or
* on the dispatch of an async request.
*/
public void handle(HttpConnection connection) throws IOException, ServletException
public void handle(AbstractHttpConnection connection) throws IOException, ServletException
{
final String target=connection.getRequest().getPathInfo();
final Request request=connection.getRequest();
@ -355,7 +355,7 @@ public class Server extends HandlerWrapper implements Attributes
* or after the entire request has been received (for short requests of known length), or
* on the dispatch of an async request.
*/
public void handleAsync(HttpConnection connection) throws IOException, ServletException
public void handleAsync(AbstractHttpConnection connection) throws IOException, ServletException
{
final AsyncContinuation async = connection.getRequest().getAsyncContinuation();
final AsyncContinuation.AsyncEventState state = async.getAsyncEventState();

View File

@ -31,7 +31,7 @@ import org.eclipse.jetty.io.EofException;
import org.eclipse.jetty.io.bio.SocketEndPoint;
import org.eclipse.jetty.server.AbstractConnector;
import org.eclipse.jetty.server.BlockingHttpConnection;
import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.AbstractHttpConnection;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
@ -219,8 +219,8 @@ public class SocketConnector extends AbstractConnector
@Override
public void close() throws IOException
{
if (_connection instanceof HttpConnection)
((HttpConnection)_connection).getRequest().getAsyncContinuation().cancel();
if (_connection instanceof AbstractHttpConnection)
((AbstractHttpConnection)_connection).getRequest().getAsyncContinuation().cancel();
super.close();
}

View File

@ -26,7 +26,7 @@ import org.eclipse.jetty.io.nio.IndirectNIOBuffer;
import org.eclipse.jetty.io.nio.SelectChannelEndPoint;
import org.eclipse.jetty.io.nio.SelectorManager;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.AbstractHttpConnection;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.util.HostMap;
@ -232,7 +232,7 @@ public class ConnectHandler extends HandlerWrapper
// 1. when this unread data is written and the server replies before the clientToProxy
// connection is installed (it is only installed after returning from this method)
// 2. when the client sends data before this unread data has been written.
HttpConnection httpConnection = HttpConnection.getCurrentConnection();
AbstractHttpConnection httpConnection = AbstractHttpConnection.getCurrentConnection();
Buffer headerBuffer = ((HttpParser)httpConnection.getParser()).getHeaderBuffer();
Buffer bodyBuffer = ((HttpParser)httpConnection.getParser()).getBodyBuffer();
int length = headerBuffer == null ? 0 : headerBuffer.length();
@ -272,7 +272,7 @@ public class ConnectHandler extends HandlerWrapper
private ClientToProxyConnection prepareConnections(ConcurrentMap<String, Object> context, SocketChannel channel, Buffer buffer)
{
HttpConnection httpConnection = HttpConnection.getCurrentConnection();
AbstractHttpConnection httpConnection = AbstractHttpConnection.getCurrentConnection();
ProxyToServerConnection proxyToServer = newProxyToServerConnection(context, buffer);
ClientToProxyConnection clientToProxy = newClientToProxyConnection(context, channel, httpConnection.getEndPoint(), httpConnection.getTimeStamp());
clientToProxy.setConnection(proxyToServer);

View File

@ -52,7 +52,7 @@ import org.eclipse.jetty.server.Dispatcher;
import org.eclipse.jetty.server.DispatcherType;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.HandlerContainer;
import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.AbstractHttpConnection;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.util.Attributes;
@ -754,7 +754,7 @@ public class ContextHandler extends ScopedHandler implements Attributes, Server.
// Check the connector
if (_connectors != null && _connectors.size() > 0)
{
String connector = HttpConnection.getCurrentConnection().getConnector().getName();
String connector = AbstractHttpConnection.getCurrentConnection().getConnector().getName();
if (connector == null || !_connectors.contains(connector))
return false;
}

View File

@ -23,7 +23,7 @@ import org.eclipse.jetty.http.HttpHeaders;
import org.eclipse.jetty.http.HttpMethods;
import org.eclipse.jetty.http.HttpStatus;
import org.eclipse.jetty.http.MimeTypes;
import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.AbstractHttpConnection;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.util.ByteArrayISO8859Writer;
@ -45,7 +45,7 @@ public class ErrorHandler extends AbstractHandler
*/
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException
{
HttpConnection connection = HttpConnection.getCurrentConnection();
AbstractHttpConnection connection = AbstractHttpConnection.getCurrentConnection();
connection.getRequest().setHandled(true);
String method = request.getMethod();
if(!method.equals(HttpMethods.GET) && !method.equals(HttpMethods.POST) && !method.equals(HttpMethods.HEAD))

View File

@ -25,7 +25,7 @@ import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.http.HttpStatus;
import org.eclipse.jetty.http.PathMap;
import org.eclipse.jetty.io.EndPoint;
import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.AbstractHttpConnection;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.util.IPAddressMap;
import org.eclipse.jetty.util.log.Log;
@ -179,7 +179,7 @@ public class IPAccessHandler extends HandlerWrapper
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
// Get the real remote IP (not the one set by the forwarded headers (which may be forged))
HttpConnection connection = baseRequest.getConnection();
AbstractHttpConnection connection = baseRequest.getConnection();
if (connection!=null)
{
EndPoint endp=connection.getEndPoint();

View File

@ -30,7 +30,7 @@ import org.eclipse.jetty.io.Buffer;
import org.eclipse.jetty.io.ByteArrayBuffer;
import org.eclipse.jetty.io.WriterOutputStream;
import org.eclipse.jetty.server.Dispatcher;
import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.AbstractHttpConnection;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Response;
import org.eclipse.jetty.server.handler.ContextHandler.Context;
@ -432,10 +432,10 @@ public class ResourceHandler extends AbstractHandler
catch(IllegalStateException e) {out = new WriterOutputStream(response.getWriter());}
// See if a short direct method can be used?
if (out instanceof HttpConnection.Output)
if (out instanceof AbstractHttpConnection.Output)
{
// TODO file mapped buffers
((HttpConnection.Output)out).sendContent(resource.getInputStream());
((AbstractHttpConnection.Output)out).sendContent(resource.getInputStream());
}
else
{

View File

@ -39,7 +39,7 @@ import org.junit.Test;
/**
* @version $Revision: 889 $ $Date: 2009-09-14 14:52:16 +1000 (Mon, 14 Sep 2009) $
*/
public class AsyncUploadTest
public class AsyncRequestReadTest
{
private static Server server;
private static Connector connector;
@ -71,7 +71,6 @@ public class AsyncUploadTest
byte[] content = new byte[16*4096];
Arrays.fill(content, (byte)120);
long start = System.nanoTime();
OutputStream out = socket.getOutputStream();
out.write("POST / HTTP/1.1\r\n".getBytes());
out.write("Host: localhost\r\n".getBytes());
@ -93,7 +92,6 @@ public class AsyncUploadTest
String response = IO.toString(in);
assertTrue(response.indexOf("200 OK")>0);
long end = System.nanoTime();
assertEquals(content.length, total);
}
@ -112,7 +110,6 @@ public class AsyncUploadTest
{
try
{
Thread.sleep(100);
InputStream in = request.getInputStream();
byte[] b = new byte[4*4096];
int read;

View File

@ -154,7 +154,7 @@ public class HttpConnectionTest
{
try
{
((StdErrLog)Log.getLogger(HttpConnection.class)).setHideStacks(true);
((StdErrLog)Log.getLogger(AbstractHttpConnection.class)).setHideStacks(true);
String response;
@ -185,7 +185,7 @@ public class HttpConnectionTest
}
finally
{
((StdErrLog)Log.getLogger(HttpConnection.class)).setHideStacks(false);
((StdErrLog)Log.getLogger(AbstractHttpConnection.class)).setHideStacks(false);
}
}
@ -335,7 +335,7 @@ public class HttpConnectionTest
Logger logger=null;
try
{
((StdErrLog)Log.getLogger(HttpConnection.class)).setHideStacks(true);
((StdErrLog)Log.getLogger(AbstractHttpConnection.class)).setHideStacks(true);
response=connector.getResponses(requests);
offset = checkContains(response,offset,"HTTP/1.1 500");
offset = checkContains(response,offset,"Connection: close");
@ -343,7 +343,7 @@ public class HttpConnectionTest
}
finally
{
((StdErrLog)Log.getLogger(HttpConnection.class)).setHideStacks(false);
((StdErrLog)Log.getLogger(AbstractHttpConnection.class)).setHideStacks(false);
}
}

View File

@ -931,7 +931,7 @@ public abstract class HttpServerTestBase extends HttpServerTestFixture
Socket client=newSocket(HOST,_connector.getLocalPort());
try
{
((StdErrLog)Log.getLogger(HttpConnection.class)).setHideStacks(true);
((StdErrLog)Log.getLogger(AbstractHttpConnection.class)).setHideStacks(true);
OutputStream os=client.getOutputStream();
InputStream is=client.getInputStream();
@ -959,7 +959,7 @@ public abstract class HttpServerTestBase extends HttpServerTestFixture
}
finally
{
((StdErrLog)Log.getLogger(HttpConnection.class)).setHideStacks(false);
((StdErrLog)Log.getLogger(AbstractHttpConnection.class)).setHideStacks(false);
if (!client.isClosed())
client.close();

View File

@ -76,7 +76,7 @@ public class HttpWriterTest
};
HttpConnection connection = new HttpConnection(null,endp,new Server(),null,generator,null)
AbstractHttpConnection connection = new AbstractHttpConnection(null,endp,new Server(),null,generator,null)
{
@Override
public Connection handle() throws IOException
@ -169,7 +169,7 @@ public class HttpWriterTest
hb.setResponse(200,"OK");
HttpConnection connection = new HttpConnection(null,endp,new Server(),null,hb,null)
AbstractHttpConnection connection = new AbstractHttpConnection(null,endp,new Server(),null,hb,null)
{
@Override
public Connection handle() throws IOException

View File

@ -80,7 +80,7 @@ public class ResponseTest
@Test
public void testContentType() throws Exception
{
HttpConnection connection = new TestHttpConnection(connector,new ByteArrayEndPoint(), connector.getServer());
AbstractHttpConnection connection = new TestHttpConnection(connector,new ByteArrayEndPoint(), connector.getServer());
Response response = connection.getResponse();
assertEquals(null,response.getContentType());
@ -134,7 +134,7 @@ public class ResponseTest
public void testLocale() throws Exception
{
HttpConnection connection = new TestHttpConnection(connector,new ByteArrayEndPoint(), connector.getServer());
AbstractHttpConnection connection = new TestHttpConnection(connector,new ByteArrayEndPoint(), connector.getServer());
Request request = connection.getRequest();
Response response = connection.getResponse();
ContextHandler context = new ContextHandler();
@ -158,7 +158,7 @@ public class ResponseTest
@Test
public void testContentTypeCharacterEncoding() throws Exception
{
HttpConnection connection = new TestHttpConnection(connector,new ByteArrayEndPoint(), connector.getServer());
AbstractHttpConnection connection = new TestHttpConnection(connector,new ByteArrayEndPoint(), connector.getServer());
Request request = connection.getRequest();
Response response = connection.getResponse();
@ -332,7 +332,7 @@ public class ResponseTest
public void testEncodeRedirect()
throws Exception
{
HttpConnection connection=new TestHttpConnection(connector,new ByteArrayEndPoint(), connector.getServer());
AbstractHttpConnection connection=new TestHttpConnection(connector,new ByteArrayEndPoint(), connector.getServer());
Response response = new Response(connection);
Request request = connection.getRequest();
request.setServerName("myhost");
@ -397,7 +397,7 @@ public class ResponseTest
for (int i=1;i<tests.length;i++)
{
ByteArrayEndPoint out=new ByteArrayEndPoint(new byte[]{},4096);
HttpConnection connection=new TestHttpConnection(connector,out, connector.getServer());
AbstractHttpConnection connection=new TestHttpConnection(connector,out, connector.getServer());
Response response = new Response(connection);
Request request = connection.getRequest();
request.setServerName("myhost");
@ -491,9 +491,9 @@ public class ResponseTest
ByteArrayEndPoint endPoint = new ByteArrayEndPoint();
endPoint.setOut(new ByteArrayBuffer(1024));
endPoint.setGrowOutput(true);
HttpConnection connection=new TestHttpConnection(connector, endPoint, connector.getServer());
AbstractHttpConnection connection=new TestHttpConnection(connector, endPoint, connector.getServer());
connection.getGenerator().reset();
HttpConnection.setCurrentConnection(connection);
AbstractHttpConnection.setCurrentConnection(connection);
Response response = connection.getResponse();
connection.getRequest().setRequestURI("/test");
return response;
@ -593,7 +593,7 @@ public class ResponseTest
}
}
static class TestHttpConnection extends HttpConnection
static class TestHttpConnection extends AbstractHttpConnection
{
public TestHttpConnection(Connector connector, EndPoint endpoint, Server server)

View File

@ -42,7 +42,7 @@ import org.eclipse.jetty.io.ByteArrayBuffer;
import org.eclipse.jetty.io.WriterOutputStream;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Dispatcher;
import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.AbstractHttpConnection;
import org.eclipse.jetty.server.HttpOutput;
import org.eclipse.jetty.server.InclusiveByteRange;
import org.eclipse.jetty.server.ResourceCache;
@ -771,7 +771,7 @@ public class DefaultServlet extends HttpServlet implements ResourceFactory
}
else
{
Connector connector = HttpConnection.getCurrentConnection().getConnector();
Connector connector = AbstractHttpConnection.getCurrentConnection().getConnector();
direct=connector instanceof NIOConnector && ((NIOConnector)connector).getUseDirectBuffers() && !(connector instanceof SslConnector);
content_length=content.getContentLength();
}
@ -787,7 +787,7 @@ public class DefaultServlet extends HttpServlet implements ResourceFactory
// has a filter already written to the response?
written = out instanceof HttpOutput
? ((HttpOutput)out).isWritten()
: HttpConnection.getCurrentConnection().getGenerator().isWritten();
: AbstractHttpConnection.getCurrentConnection().getGenerator().isWritten();
}
catch(IllegalStateException e)
{
@ -810,7 +810,7 @@ public class DefaultServlet extends HttpServlet implements ResourceFactory
if (response instanceof Response)
{
writeOptionHeaders(((Response)response).getHttpFields());
((HttpConnection.Output)out).sendContent(content);
((AbstractHttpConnection.Output)out).sendContent(content);
}
else
{
@ -818,7 +818,7 @@ public class DefaultServlet extends HttpServlet implements ResourceFactory
if (buffer!=null)
{
writeHeaders(response,content,content_length);
((HttpConnection.Output)out).sendContent(buffer);
((AbstractHttpConnection.Output)out).sendContent(buffer);
}
else
{

View File

@ -26,7 +26,7 @@ import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.http.HttpMethods;
import org.eclipse.jetty.server.Dispatcher;
import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.AbstractHttpConnection;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.ErrorHandler;
@ -64,7 +64,7 @@ public class ErrorPageErrorHandler extends ErrorHandler
String method = request.getMethod();
if(!method.equals(HttpMethods.GET) && !method.equals(HttpMethods.POST) && !method.equals(HttpMethods.HEAD))
{
HttpConnection.getCurrentConnection().getRequest().setHandled(true);
AbstractHttpConnection.getCurrentConnection().getRequest().setHandled(true);
return;
}
if (_errorPages!=null)

View File

@ -28,7 +28,7 @@ import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.server.Dispatcher;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.AbstractHttpConnection;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.HandlerWrapper;
@ -219,7 +219,7 @@ public class Invoker extends HttpServlet
if (holder!=null)
{
final Request baseRequest=(request instanceof Request)?((Request)request):HttpConnection.getCurrentConnection().getRequest();
final Request baseRequest=(request instanceof Request)?((Request)request):AbstractHttpConnection.getCurrentConnection().getRequest();
holder.handle(baseRequest,
new InvokedRequest(request,included,servlet,servlet_path,path_info),
response);

View File

@ -46,7 +46,7 @@ import org.eclipse.jetty.security.IdentityService;
import org.eclipse.jetty.security.SecurityHandler;
import org.eclipse.jetty.server.Dispatcher;
import org.eclipse.jetty.server.DispatcherType;
import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.AbstractHttpConnection;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServletRequestHttpWrapper;
@ -1328,7 +1328,7 @@ public class ServletHandler extends ScopedHandler
filter.doFilter(request, response, _next);
else
{
final Request baseRequest=(request instanceof Request)?((Request)request):HttpConnection.getCurrentConnection().getRequest();
final Request baseRequest=(request instanceof Request)?((Request)request):AbstractHttpConnection.getCurrentConnection().getRequest();
final boolean suspendable=baseRequest.isAsyncSupported();
if (suspendable)
{
@ -1353,7 +1353,7 @@ public class ServletHandler extends ScopedHandler
{
if (LOG.isDebugEnabled())
LOG.debug("call servlet " + _servletHolder);
final Request baseRequest=(request instanceof Request)?((Request)request):HttpConnection.getCurrentConnection().getRequest();
final Request baseRequest=(request instanceof Request)?((Request)request):AbstractHttpConnection.getCurrentConnection().getRequest();
_servletHolder.handle(baseRequest,request, response);
}
else // Not found

View File

@ -18,7 +18,7 @@ import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.AbstractHttpConnection;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
@ -37,7 +37,7 @@ public class CloseableDoSFilter extends DoSFilter
{
try
{
Request base_request=(request instanceof Request)?(Request)request:HttpConnection.getCurrentConnection().getRequest();
Request base_request=(request instanceof Request)?(Request)request:AbstractHttpConnection.getCurrentConnection().getRequest();
base_request.getConnection().getEndPoint().close();
}
catch(IOException e)

View File

@ -27,7 +27,7 @@ import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.http.HttpException;
import org.eclipse.jetty.http.HttpParser;
import org.eclipse.jetty.io.ConnectedEndPoint;
import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.AbstractHttpConnection;
import org.eclipse.jetty.util.QuotedStringTokenizer;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
@ -194,7 +194,7 @@ public class WebSocketFactory
int draft = request.getIntHeader("Sec-WebSocket-Version");
if (draft < 0)
draft = request.getIntHeader("Sec-WebSocket-Draft");
HttpConnection http = HttpConnection.getCurrentConnection();
AbstractHttpConnection http = AbstractHttpConnection.getCurrentConnection();
ConnectedEndPoint endp = (ConnectedEndPoint)http.getEndPoint();
List<String> extensions_requested = new ArrayList<String>();