All Downloads are FREE. Search and download functionalities are using the official Maven repository.

se.wfh.libs.common.web.application.MdcSetupFiler Maven / Gradle / Ivy

package se.wfh.libs.common.web.application;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;

import se.wfh.libs.common.web.util.ApplicationHelper;

public class MdcSetupFiler implements Filter {
	private static final Logger LOGGER = LoggerFactory
			.getLogger(MdcSetupFiler.class);
	private static final String UID_KEY = "uid";
	private static final String IP_KEY = "ip";

	@Override
	public void doFilter(final ServletRequest request,
			final ServletResponse response, final FilterChain chain)
			throws IOException, ServletException {
		HttpServletRequest req = ((HttpServletRequest) request);
		setupMDC(req);
		try {
			LOGGER.debug("Request: {}?{}", req.getRequestURI(), req.getQueryString());
			chain.doFilter(request, response);
		} finally {
			tearDownMDC(req);
		}
	}

	private void tearDownMDC(final HttpServletRequest request) {
		MDC.remove(UID_KEY);
		MDC.remove(IP_KEY);
	}

	private void setupMDC(final HttpServletRequest request) {
		MDC.put(UID_KEY, String.valueOf(ApplicationHelper
				.getUserId(ApplicationHelper.getSession(request))));
		MDC.put(IP_KEY, ApplicationHelper.getIp(request));
	}

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// nothing to do here
	}

	@Override
	public void destroy() {
		// nothing to do here
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy