

package org.springframework.http.server.observation;

import io.micrometer.observation.transport.RequestReplyReceiverContext;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import org.springframework.lang.Nullable;

/**
 * Context that holds information for metadata collection regarding
 * {@link ServerHttpObservationDocumentation#HTTP_SERVLET_SERVER_REQUESTS Servlet HTTP requests} observations.
 * <p>This context also extends {@link RequestReplyReceiverContext} for propagating
 * tracing information during HTTP request processing.
 *
 * @author Brian Clozel
 * @since 6.0
 */
public class ServerRequestObservationContext extends RequestReplyReceiverContext<HttpServletRequest, HttpServletResponse> {

	@Nullable
	private String pathPattern;

	public ServerRequestObservationContext(HttpServletRequest request, HttpServletResponse response) {
		super(HttpServletRequest::getHeader);
		setCarrier(request);
		setResponse(response);
	}

	@Nullable
	public String getPathPattern() {
		return this.pathPattern;
	}

	public void setPathPattern(@Nullable String pathPattern) {
		this.pathPattern = pathPattern;
	}
}
