com.atlassian.jira.util.http.response
Class ObservantResponseWrapper

java.lang.Object
  extended by javax.servlet.ServletResponseWrapper
      extended by javax.servlet.http.HttpServletResponseWrapper
          extended by com.atlassian.jira.util.http.response.ObservantResponseWrapper
All Implemented Interfaces:
javax.servlet.http.HttpServletResponse, javax.servlet.ServletResponse

public class ObservantResponseWrapper
extends javax.servlet.http.HttpServletResponseWrapper

This HttpServletResponseWrapper can capture the HTTP response code and also to know the length of the data output.

THREAD SAFETY - One of these must be constructed on each HTTP request/response and hence only one thread may write to it at the one time. This suits the whole servlet engine idea,

Since:
v3.13.2

Field Summary
 
Fields inherited from interface javax.servlet.http.HttpServletResponse
SC_ACCEPTED, SC_BAD_GATEWAY, SC_BAD_REQUEST, SC_CONFLICT, SC_CONTINUE, SC_CREATED, SC_EXPECTATION_FAILED, SC_FORBIDDEN, SC_FOUND, SC_GATEWAY_TIMEOUT, SC_GONE, SC_HTTP_VERSION_NOT_SUPPORTED, SC_INTERNAL_SERVER_ERROR, SC_LENGTH_REQUIRED, SC_METHOD_NOT_ALLOWED, SC_MOVED_PERMANENTLY, SC_MOVED_TEMPORARILY, SC_MULTIPLE_CHOICES, SC_NO_CONTENT, SC_NON_AUTHORITATIVE_INFORMATION, SC_NOT_ACCEPTABLE, SC_NOT_FOUND, SC_NOT_IMPLEMENTED, SC_NOT_MODIFIED, SC_OK, SC_PARTIAL_CONTENT, SC_PAYMENT_REQUIRED, SC_PRECONDITION_FAILED, SC_PROXY_AUTHENTICATION_REQUIRED, SC_REQUEST_ENTITY_TOO_LARGE, SC_REQUEST_TIMEOUT, SC_REQUEST_URI_TOO_LONG, SC_REQUESTED_RANGE_NOT_SATISFIABLE, SC_RESET_CONTENT, SC_SEE_OTHER, SC_SERVICE_UNAVAILABLE, SC_SWITCHING_PROTOCOLS, SC_TEMPORARY_REDIRECT, SC_UNAUTHORIZED, SC_UNSUPPORTED_MEDIA_TYPE, SC_USE_PROXY
 
Constructor Summary
ObservantResponseWrapper(javax.servlet.http.HttpServletResponse httpServletResponse)
           
 
Method Summary
 long getContentLen()
          Returns the length of the content that has been sent back via this HttpServletResponseWrapper.
 javax.servlet.ServletOutputStream getOutputStream()
          Overridden to capture output content length
 int getStatus()
           
 PrintWriter getWriter()
          Overridden to capture output content length
 void sendError(int sc)
          Overridden to capture HTTP status codes
 void sendError(int sc, String s)
          Overridden to capture HTTP status codes
 void setStatus(int sc)
          Overridden to capture HTTP status codes
 void setStatus(int sc, String s)
          Overridden to capture HTTP status codes
 
Methods inherited from class javax.servlet.http.HttpServletResponseWrapper
addCookie, addDateHeader, addHeader, addIntHeader, containsHeader, encodeRedirectUrl, encodeRedirectURL, encodeUrl, encodeURL, getHeader, getHeaderNames, getHeaders, sendRedirect, setDateHeader, setHeader, setIntHeader
 
Methods inherited from class javax.servlet.ServletResponseWrapper
flushBuffer, getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, isWrapperFor, isWrapperFor, reset, resetBuffer, setBufferSize, setCharacterEncoding, setContentLength, setContentType, setLocale, setResponse
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.servlet.ServletResponse
flushBuffer, getBufferSize, getCharacterEncoding, getContentType, getLocale, isCommitted, reset, resetBuffer, setBufferSize, setCharacterEncoding, setContentLength, setContentType, setLocale
 

Constructor Detail

ObservantResponseWrapper

public ObservantResponseWrapper(javax.servlet.http.HttpServletResponse httpServletResponse)
Method Detail

getStatus

public int getStatus()
Specified by:
getStatus in interface javax.servlet.http.HttpServletResponse
Overrides:
getStatus in class javax.servlet.http.HttpServletResponseWrapper
Returns:
the HTTP status code set on this HttpServletResponseWrapper

getContentLen

public long getContentLen()
Returns the length of the content that has been sent back via this HttpServletResponseWrapper. This is a count in character OR bytes, depending on form of output was used. Let em explain! If the web response uses the getOutputStream() method, then the content length will be a count of bytes. If they use the getWriter() method, then it will be a count of characters. We dont want to get into the game of working out how a set of Unicode characters translate into a series of bytes. Its expensive and the point of this code is to be as cheap as possible.

Returns:
the length of the content that has been sent back via this HttpServletResponseWrapper in bytes or characters depending on whcih output mechanism is used.

sendError

public void sendError(int sc,
                      String s)
               throws IOException
Overridden to capture HTTP status codes

Specified by:
sendError in interface javax.servlet.http.HttpServletResponse
Overrides:
sendError in class javax.servlet.http.HttpServletResponseWrapper
Throws:
IOException

sendError

public void sendError(int sc)
               throws IOException
Overridden to capture HTTP status codes

Specified by:
sendError in interface javax.servlet.http.HttpServletResponse
Overrides:
sendError in class javax.servlet.http.HttpServletResponseWrapper
Throws:
IOException

setStatus

public void setStatus(int sc)
Overridden to capture HTTP status codes

Specified by:
setStatus in interface javax.servlet.http.HttpServletResponse
Overrides:
setStatus in class javax.servlet.http.HttpServletResponseWrapper

setStatus

public void setStatus(int sc,
                      String s)
Overridden to capture HTTP status codes

Specified by:
setStatus in interface javax.servlet.http.HttpServletResponse
Overrides:
setStatus in class javax.servlet.http.HttpServletResponseWrapper

getWriter

public PrintWriter getWriter()
                      throws IOException
Overridden to capture output content length

Specified by:
getWriter in interface javax.servlet.ServletResponse
Overrides:
getWriter in class javax.servlet.ServletResponseWrapper
Throws:
IOException

getOutputStream

public javax.servlet.ServletOutputStream getOutputStream()
                                                  throws IOException
Overridden to capture output content length

Specified by:
getOutputStream in interface javax.servlet.ServletResponse
Overrides:
getOutputStream in class javax.servlet.ServletResponseWrapper
Throws:
IOException


Copyright © 2002-2013 Atlassian. All Rights Reserved.