io.opentelemetry.javaagent.instrumentation.servlet.v3_0.snippet.ServletOutputStreamInjectionState Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of opentelemetry-javaagent-servlet-3.0 Show documentation
Show all versions of opentelemetry-javaagent-servlet-3.0 Show documentation
Instrumentation of Java libraries using OpenTelemetry.
The newest version!
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.javaagent.instrumentation.servlet.v3_0.snippet;
import io.opentelemetry.instrumentation.api.util.VirtualField;
import io.opentelemetry.javaagent.bootstrap.servlet.InjectionState;
import javax.annotation.Nullable;
import javax.servlet.ServletOutputStream;
public class ServletOutputStreamInjectionState {
private static final VirtualField virtualField =
VirtualField.find(ServletOutputStream.class, InjectionState.class);
public static void initializeInjectionStateIfNeeded(
ServletOutputStream servletOutputStream, Servlet3SnippetInjectingResponseWrapper wrapper) {
InjectionState state = virtualField.get(servletOutputStream);
if (!wrapper.isContentTypeTextHtml()) {
virtualField.set(servletOutputStream, null);
return;
}
if (state == null || state.getWrapper() != wrapper) {
state = new InjectionState(wrapper);
virtualField.set(servletOutputStream, state);
}
}
@Nullable
public static InjectionState getInjectionState(ServletOutputStream servletOutputStream) {
return virtualField.get(servletOutputStream);
}
private ServletOutputStreamInjectionState() {}
}