Class Servlet3SnippetInjectingResponseWrapper
java.lang.Object
javax.servlet.ServletResponseWrapper
javax.servlet.http.HttpServletResponseWrapper
io.opentelemetry.javaagent.instrumentation.servlet.v3_0.snippet.Servlet3SnippetInjectingResponseWrapper
- All Implemented Interfaces:
io.opentelemetry.javaagent.bootstrap.servlet.SnippetInjectingResponseWrapper,javax.servlet.http.HttpServletResponse,javax.servlet.ServletResponse
public class Servlet3SnippetInjectingResponseWrapper
extends javax.servlet.http.HttpServletResponseWrapper
implements io.opentelemetry.javaagent.bootstrap.servlet.SnippetInjectingResponseWrapper
Notes on Content-Length: the snippet length is only added to the content length when injection
occurs and the content length was set previously.
If the Content-Length is set after snippet injection occurs (either for the first time or is set again for some reason), we intentionally do not add the snippet length, because the application server may be making that call at the end of a request when it sees the request has not been submitted, in which case it is likely using the real length of content that has been written, including the snippet length.
-
Field Summary
FieldsFields 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
ConstructorsConstructorDescriptionServlet3SnippetInjectingResponseWrapper(javax.servlet.http.HttpServletResponse response, String snippet) -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidaddIntHeader(String name, int value) booleancontainsHeader(String name) javax.servlet.ServletOutputStreambooleanbooleanvoidsetContentLength(int len) voidsetContentLengthLong(long length) voidvoidsetIntHeader(String name, int value) voidMethods inherited from class javax.servlet.http.HttpServletResponseWrapper
addCookie, addDateHeader, encodeRedirectUrl, encodeRedirectURL, encodeUrl, encodeURL, getHeader, getHeaderNames, getHeaders, getStatus, sendError, sendError, sendRedirect, setDateHeader, setStatus, setStatusMethods inherited from class javax.servlet.ServletResponseWrapper
flushBuffer, getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, isWrapperFor, isWrapperFor, reset, resetBuffer, setBufferSize, setCharacterEncoding, setContentType, setLocale, setResponseMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface javax.servlet.ServletResponse
flushBuffer, getBufferSize, getCharacterEncoding, getContentType, getLocale, isCommitted, reset, resetBuffer, setBufferSize, setCharacterEncoding, setContentType, setLocaleMethods inherited from interface io.opentelemetry.javaagent.bootstrap.servlet.SnippetInjectingResponseWrapper
getCharacterEncoding
-
Field Details
-
FAKE_SNIPPET_HEADER
- See Also:
-
-
Constructor Details
-
Servlet3SnippetInjectingResponseWrapper
public Servlet3SnippetInjectingResponseWrapper(javax.servlet.http.HttpServletResponse response, String snippet)
-
-
Method Details
-
containsHeader
- Specified by:
containsHeaderin interfacejavax.servlet.http.HttpServletResponse- Overrides:
containsHeaderin classjavax.servlet.http.HttpServletResponseWrapper
-
setHeader
- Specified by:
setHeaderin interfacejavax.servlet.http.HttpServletResponse- Overrides:
setHeaderin classjavax.servlet.http.HttpServletResponseWrapper
-
addHeader
- Specified by:
addHeaderin interfacejavax.servlet.http.HttpServletResponse- Overrides:
addHeaderin classjavax.servlet.http.HttpServletResponseWrapper
-
setIntHeader
- Specified by:
setIntHeaderin interfacejavax.servlet.http.HttpServletResponse- Overrides:
setIntHeaderin classjavax.servlet.http.HttpServletResponseWrapper
-
addIntHeader
- Specified by:
addIntHeaderin interfacejavax.servlet.http.HttpServletResponse- Overrides:
addIntHeaderin classjavax.servlet.http.HttpServletResponseWrapper
-
setContentLength
public void setContentLength(int len) - Specified by:
setContentLengthin interfacejavax.servlet.ServletResponse- Overrides:
setContentLengthin classjavax.servlet.ServletResponseWrapper
-
setContentLengthLong
- Throws:
Throwable
-
isContentTypeTextHtml
public boolean isContentTypeTextHtml()- Specified by:
isContentTypeTextHtmlin interfaceio.opentelemetry.javaagent.bootstrap.servlet.SnippetInjectingResponseWrapper
-
getOutputStream
- Specified by:
getOutputStreamin interfacejavax.servlet.ServletResponse- Overrides:
getOutputStreamin classjavax.servlet.ServletResponseWrapper- Throws:
IOException
-
getWriter
- Specified by:
getWriterin interfacejavax.servlet.ServletResponse- Overrides:
getWriterin classjavax.servlet.ServletResponseWrapper- Throws:
IOException
-
updateContentLengthIfPreviouslySet
public void updateContentLengthIfPreviouslySet()- Specified by:
updateContentLengthIfPreviouslySetin interfaceio.opentelemetry.javaagent.bootstrap.servlet.SnippetInjectingResponseWrapper
-
isNotSafeToInject
public boolean isNotSafeToInject()- Specified by:
isNotSafeToInjectin interfaceio.opentelemetry.javaagent.bootstrap.servlet.SnippetInjectingResponseWrapper
-