package de.rwth.idsg.bikeman.psinterface.log; import lombok.Getter; import org.apache.commons.io.input.TeeInputStream; import javax.servlet.ReadListener; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import java.io.ByteArrayOutputStream; import java.io.IOException; /** * Taken from https://github.com/isrsal/spring-mvc-logger and modified * * @author Sevket Goekay <goekay@dbis.rwth-aachen.de> * @since 09.10.2015 */ public class RequestWrapper extends HttpServletRequestWrapper { private final ByteArrayOutputStream bos = new ByteArrayOutputStream(); @Getter private String prefix; @Getter private boolean stationHeaderMissing; public RequestWrapper(String prefix, HttpServletRequest request, boolean stationHeaderMissing) { super(request); this.prefix = prefix; this.stationHeaderMissing = stationHeaderMissing; } @Override public ServletInputStream getInputStream() throws IOException { return new ServletInputStream() { private TeeInputStream tee = new TeeInputStream(RequestWrapper.super.getInputStream(), bos); @Override public int read() throws IOException { return tee.read(); } @Override public boolean isFinished() { // Auto-generated method stub return false; } @Override public boolean isReady() { // Auto-generated method stub return false; } @Override public void setReadListener(ReadListener listener) { // Auto-generated method stub } }; } public byte[] toByteArray() { return bos.toByteArray(); } }