access request/response from async

git-svn-id: svn+ssh://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty/trunk@202 7e9141cc-0065-0410-87d8-b60c137991c4
This commit is contained in:
Greg Wilkins 2009-05-05 02:02:28 +00:00
parent 3dd595c123
commit b35e984317
3 changed files with 63 additions and 2 deletions

View File

@ -203,5 +203,23 @@ public interface Continuation
* @param listener
*/
void addContinuationListener(ContinuationListener listener);
/* ------------------------------------------------------------ */
/** Get the associated servlet request.
* <p>
* Not all request methods are valid to be called outside of the
* scope of a filter/servlet. Specifically servletPath methods will
* not return correct values. The request attribute methods are suitable
* to be called from an asynchronous scope.
* @return The associated servlet request
*/
ServletRequest getServletRequest();
/* ------------------------------------------------------------ */
/**
* @return The associated servlet response.
*/
ServletResponse getServletResponse();
}

View File

@ -26,7 +26,7 @@ public class ContinuationFilter implements Filter
{
if (_faux)
{
final FauxContinuation fc = new FauxContinuation();
final FauxContinuation fc = new FauxContinuation(request,response);
request.setAttribute(Continuation.ATTRIBUTE,fc);
boolean complete=false;
@ -69,17 +69,24 @@ public class ContinuationFilter implements Filter
private static final int __SUSPENDED=5; // Suspended and parked
private static final int __UNSUSPENDING=6;
private static final int __COMPLETE=7;
private final ServletRequest _request;
private final ServletResponse _response;
private int _state=__HANDLING;
private boolean _initial=true;
private boolean _resumed=false;
private boolean _timeout=false;
private boolean _keepWrappers=false;
private long _timeoutMs=30000; // TODO configure
private ArrayList<ContinuationListener> _listeners;
FauxContinuation(final ServletRequest request,final ServletResponse response)
{
_request=request;
_response=response;
}
/* ------------------------------------------------------------ */
/**
@ -255,6 +262,24 @@ public class ContinuationFilter implements Filter
}
/* ------------------------------------------------------------ */
/**
* @see org.eclipse.jetty.continuation.Continuation#getServletRequest()
*/
public ServletRequest getServletRequest()
{
return _request;
}
/* ------------------------------------------------------------ */
/**
* @see org.eclipse.jetty.continuation.Continuation#getServletResponse()
*/
public ServletResponse getServletResponse()
{
return _response;
}
void handling()

View File

@ -744,6 +744,24 @@ public class AsyncRequest implements AsyncContext, Continuation
AsyncRequest.this.suspend(_connection.getRequest().getServletContext(),_connection.getRequest(),_connection.getResponse());
}
/* ------------------------------------------------------------ */
/**
* @see org.eclipse.jetty.continuation.Continuation#getServletRequest()
*/
public ServletRequest getServletRequest()
{
return _connection.getRequest();
}
/* ------------------------------------------------------------ */
/**
* @see org.eclipse.jetty.continuation.Continuation#getServletResponse()
*/
public ServletResponse getServletResponse()
{
return _connection.getResponse();
}
/* ------------------------------------------------------------ */
/* ------------------------------------------------------------ */
public class AsyncEventState implements ContinuationEvent