com.sun.grizzly.tcp
Class Response<A>

java.lang.Object
  extended by com.sun.grizzly.tcp.Response<A>
Direct Known Subclasses:
AjpHttpResponse

public class Response<A>
extends Object

Response object.

Author:
James Duncan Davidson [duncan@eng.sun.com], Jason Hunter [jch@eng.sun.com], James Todd [gonzo@eng.sun.com], Harish Prabandham, Hans Bergsten , Remy Maucherat

Nested Class Summary
static class Response.ResponseAttachment<A>
           
 
Field Summary
protected  String characterEncoding
           
protected  boolean charsetSet
          Has the charset been explicitly set.
protected  boolean commited
          Committed flag.
protected  String contentLanguage
           
protected  long contentLength
           
protected  String contentType
          HTTP specific fields.
static boolean discardDisconnectEvent
           
protected  Exception errorException
          Holds request error exception.
protected  String errorURI
          Request error URI.
protected  MimeHeaders headers
          Response headers.
 ActionHook hook
          Action hook.
protected  String message
          Status message.
protected  OutputBuffer outputBuffer
          Associated output buffer.
protected  Request req
           
protected  int status
          Status code.
 
Constructor Summary
Response()
           
 
Method Summary
 void acknowledge()
           
 void action(ActionCode actionCode, Object param)
           
 void addHeader(String name, String value)
           
 void addResponseFilter(ResponseFilter responseFilter)
          Add a ResponseFilter, which will be called every bytes are ready to be written.
 void cancel()
          Cancel the Response and finish/commit it.
 boolean containsHeader(String name)
           
 void discardUpstreamWrites()
          Discard any write operations on the Response.
 void doWrite(ByteChunk chunk)
          Write a chunk of bytes.
 void finish()
           
 void flush()
           
 void flushHeaders()
          Write all headers into our internal buffer and flush the to the client.
 long getBytesWritten()
           
 SocketChannel getChannel()
          Return the underlying SocketChannel WARNING.
 String getCharacterEncoding()
           
 String getContentLanguage()
          Return the content language.
 int getContentLength()
           
 long getContentLengthLong()
           
 String getContentType()
           
 Exception getErrorException()
          Get the Exception that occurred during request processing.
 String getErrorURI()
          Get the request URI that caused the original error.
 ActionHook getHook()
           
 Locale getLocale()
           
 String getMessage()
          Get the status message.
 MimeHeaders getMimeHeaders()
           
 Object getNote(int pos)
           
 NotesManagerImpl getNotesManager()
           
 OutputBuffer getOutputBuffer()
           
 Request getRequest()
           
 Response.ResponseAttachment getResponseAttachment()
          Return the Response.ResponseAttachment associated with this instance, or null if the isSuspended() return false.
 SelectionKey getSelectionKey()
          Return the underlying SelectionKey
 int getStatus()
           
 boolean isAllowCustomReasonPhrase()
           
 boolean isCommitted()
           
 boolean isExceptionPresent()
           
 boolean isSuspended()
          Return true if that suspend() has been invoked and set to true
 void recycle()
           
 void removeSessionCookies()
          Removes any Set-Cookie response headers whose value contains the string "JSESSIONID=" or "JSESSIONIDSSO="
 void reset()
           
 void resume()
          Complete the Response and finish/commit it.
 void sendHeaders()
          Write all headers into our internal buffer but don't flush them to the client yet.
 void setAllowCustomReasonPhrase(boolean allowCustomReasonPhrase)
           
 void setBytesWritten(long bytesWritten)
           
 void setCharacterEncoding(String charset)
           
 void setCommitted(boolean v)
           
 void setContentLength(int contentLength)
           
 void setContentLengthLong(long contentLength)
           
 void setContentType(String type)
          Sets the content type.
 void setErrorException(Exception ex)
          Set the error Exception that occurred during request processing.
 void setErrorURI(String uri)
          Set request URI that caused an error during request processing.
 void setHeader(String name, String value)
           
 void setHook(ActionHook hook)
           
 void setLocale(Locale locale)
          Called explicitely by user to set the Content-Language and the default encoding
 void setMessage(String message)
          Set the status message.
 void setNote(int pos, Object value)
           
 void setNotesManager(NotesManagerImpl notesManager)
           
 void setOutputBuffer(OutputBuffer outputBuffer)
           
 void setRequest(Request req)
           
 void setSelectionKey(SelectionKey selectionKey)
          Set the underlying SelectionKey
 void setStatus(int status)
          Set the response status
 void suspend()
          Suspend the Response.
 void suspend(long timeout)
          Suspend the Response.
 void suspend(long timeout, A attachment, CompletionHandler<? super A> competionHandler)
          Suspend the Response.
 void suspend(long timeout, A attachment, CompletionHandler<? super A> competionHandler, Response.ResponseAttachment<A> ra)
          Suspend the Response.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

status

protected int status
Status code.


message

protected String message
Status message.


headers

protected MimeHeaders headers
Response headers.


outputBuffer

protected OutputBuffer outputBuffer
Associated output buffer.


commited

protected boolean commited
Committed flag.


hook

public ActionHook hook
Action hook.


contentType

protected String contentType
HTTP specific fields.


contentLanguage

protected String contentLanguage

characterEncoding

protected String characterEncoding

contentLength

protected long contentLength

errorException

protected Exception errorException
Holds request error exception.


charsetSet

protected boolean charsetSet
Has the charset been explicitly set.


errorURI

protected String errorURI
Request error URI.


req

protected Request req

discardDisconnectEvent

public static final boolean discardDisconnectEvent
Constructor Detail

Response

public Response()
Method Detail

getRequest

public Request getRequest()

setRequest

public void setRequest(Request req)

getOutputBuffer

public OutputBuffer getOutputBuffer()

setOutputBuffer

public void setOutputBuffer(OutputBuffer outputBuffer)

getMimeHeaders

public MimeHeaders getMimeHeaders()

getHook

public ActionHook getHook()

setHook

public void setHook(ActionHook hook)

setNote

public final void setNote(int pos,
                          Object value)

getNote

public final Object getNote(int pos)

getNotesManager

public NotesManagerImpl getNotesManager()

setNotesManager

public void setNotesManager(NotesManagerImpl notesManager)

action

public void action(ActionCode actionCode,
                   Object param)

getStatus

public int getStatus()

setStatus

public void setStatus(int status)
Set the response status


getMessage

public String getMessage()
Get the status message.


setMessage

public void setMessage(String message)
Set the status message.


isCommitted

public boolean isCommitted()

setCommitted

public void setCommitted(boolean v)

setErrorException

public void setErrorException(Exception ex)
Set the error Exception that occurred during request processing.


getErrorException

public Exception getErrorException()
Get the Exception that occurred during request processing.


isExceptionPresent

public boolean isExceptionPresent()

setErrorURI

public void setErrorURI(String uri)
Set request URI that caused an error during request processing.


getErrorURI

public String getErrorURI()
Get the request URI that caused the original error.


isAllowCustomReasonPhrase

public boolean isAllowCustomReasonPhrase()

setAllowCustomReasonPhrase

public void setAllowCustomReasonPhrase(boolean allowCustomReasonPhrase)

reset

public void reset()
           throws IllegalStateException
Throws:
IllegalStateException

discardUpstreamWrites

public void discardUpstreamWrites()
                           throws IllegalStateException
Discard any write operations on the Response. Invoking that method prevent any write operation to be fluxhed on the network.

Throws:
IllegalStateException

flush

public void flush()
           throws IOException
Throws:
IOException

finish

public void finish()
            throws IOException
Throws:
IOException

acknowledge

public void acknowledge()
                 throws IOException
Throws:
IOException

containsHeader

public boolean containsHeader(String name)

setHeader

public void setHeader(String name,
                      String value)

addHeader

public void addHeader(String name,
                      String value)

sendHeaders

public void sendHeaders()
                 throws IOException
Write all headers into our internal buffer but don't flush them to the client yet. You must invoke flush() in order to make that operation.

Throws:
IOException

flushHeaders

public void flushHeaders()
                  throws IOException
Write all headers into our internal buffer and flush the to the client.

Throws:
IOException

getLocale

public Locale getLocale()

setLocale

public void setLocale(Locale locale)
Called explicitely by user to set the Content-Language and the default encoding


getContentLanguage

public String getContentLanguage()
Return the content language.


setCharacterEncoding

public void setCharacterEncoding(String charset)

getCharacterEncoding

public String getCharacterEncoding()

setContentType

public void setContentType(String type)
Sets the content type. This method must preserve any response charset that may already have been set via a call to response.setContentType(), response.setLocale(), or response.setCharacterEncoding().

Parameters:
type - the content type

getContentType

public String getContentType()

setContentLength

public void setContentLength(int contentLength)

getContentLength

public int getContentLength()

setContentLengthLong

public void setContentLengthLong(long contentLength)

getContentLengthLong

public long getContentLengthLong()

doWrite

public void doWrite(ByteChunk chunk)
             throws IOException
Write a chunk of bytes.

Throws:
IOException

recycle

public void recycle()

getBytesWritten

public long getBytesWritten()

setBytesWritten

public void setBytesWritten(long bytesWritten)

removeSessionCookies

public void removeSessionCookies()
Removes any Set-Cookie response headers whose value contains the string "JSESSIONID=" or "JSESSIONIDSSO="


setSelectionKey

public void setSelectionKey(SelectionKey selectionKey)
Set the underlying SelectionKey


getSelectionKey

public SelectionKey getSelectionKey()
Return the underlying SelectionKey


getChannel

public SocketChannel getChannel()
Return the underlying SocketChannel WARNING. If you directly use the SocketChannel, you must make sure sendHeaders() followed by a flush() if you just want to manipulate the response body, but not the header. If you don't want to let Grizzly write the headers for you, Invoke setCommitted(boolean) with true before starting writing bytes to the SocketChannel


resume

public void resume()
Complete the Response and finish/commit it. If a CompletionHandler has been defined, its CompletionHandler.resumed(E) will first be invoked, then the setCommitted(boolean) followed by finish(). Those operations commit the response.


cancel

public void cancel()
Cancel the Response and finish/commit it. If a CompletionHandler has been defined, its CompletionHandler.cancelled(E) will first be invoked, then the setCommitted(boolean) followed by finish(). Those operations commit the response.


isSuspended

public boolean isSuspended()
Return true if that suspend() has been invoked and set to true

Returns:
true if that suspend() has been invoked and set to true

suspend

public void suspend()
Suspend the Response. Suspending a Response will tell the underlying container to avoid recycling objects associated with the current instance, and also to avoid commiting response.


suspend

public void suspend(long timeout)
Suspend the Response. Suspending a Response will tell the underlying container to avoid recycling objects associated with the current instance, and also to avoid commiting response.

Parameters:
timeout - The maximum amount of time, in milliseconds, a Response can be suspended. When the timeout expires (because nothing has been written or because the resume() or cancel()), the Response will be automatically resumed and commited. Usage of any methods of a Response that times out will throw an IllegalStateException.

suspend

public void suspend(long timeout,
                    A attachment,
                    CompletionHandler<? super A> competionHandler)
Suspend the Response. Suspending a Response will tell the underlying container to avoid recycling objects associated with the current instance, and also to avoid commiting response. When the resume() is invoked, the container will make sure CompletionHandler.resumed(E) is invoked with the original attachement. When the cancel() is invoked, the container will make sure CompletionHandler.cancelled(E) is invoked with the original attachement. If the timeout expires, the CompletionHandler.cancelled(E) is invoked with the original attachement and the Response commited.

Parameters:
timeout - The maximum amount of time, in milliseconds, a Response can be suspended. When the timeout expires (because nothing has been written or because the resume() or cancel()), the Response will be automatically resumed and commited. Usage of any methods of a Response that times out will throw an IllegalStateException.
attachment - Any Object that will be passed back to the CompletionHandler
competionHandler - a CompletionHandler

suspend

public void suspend(long timeout,
                    A attachment,
                    CompletionHandler<? super A> competionHandler,
                    Response.ResponseAttachment<A> ra)
Suspend the Response. Suspending a Response will tell the underlying container to avoid recycling objects associated with the current instance, and also to avoid commiting response. When the resume() is invoked, the container will make sure CompletionHandler.resumed(E) is invoked with the original attachement. When the cancel() is invoked, the container will make sure CompletionHandler.cancelled(E) is invoked with the original attachement. If the timeout expires, the CompletionHandler.cancelled(E) is invoked with the original attachement and the Response commited.

Parameters:
timeout - The maximum amount of time, in milliseconds, a Response can be suspended. When the timeout expires (because nothing has been written or because the resume() or cancel()), the Response will be automatically resumed and commited. Usage of any methods of a Response that times out will throw an IllegalStateException.
attachment - Any Object that will be passed back to the CompletionHandler
competionHandler - a CompletionHandler
ra - Response.ResponseAttachment used to times out idle connection.

getResponseAttachment

public Response.ResponseAttachment getResponseAttachment()
Return the Response.ResponseAttachment associated with this instance, or null if the isSuspended() return false.

Returns:

addResponseFilter

public void addResponseFilter(ResponseFilter responseFilter)
Add a ResponseFilter, which will be called every bytes are ready to be written.



Copyright © 2013 Oracle Corporation. All Rights Reserved.