/* WebBox - Dein Server. Copyright (C) 2017 Ulrich Hilger, http://uhilger.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package de.uhilger.wbx.web; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; /** * Die Klasse CustomResponseWrapper faengt den Inhalt einer HttpServletResponse * in einem StringWriter auf. Dieser kann mit der Methode getResponseContent * gelesen werden. * * @author ulrich */ public class CustomResponseWrapper extends HttpServletResponseWrapper { private StringWriter stringWriter; private boolean isOutputStreamCalled; public CustomResponseWrapper(HttpServletResponse response) { super(response); } @Override public ServletOutputStream getOutputStream() throws IOException { if (this.stringWriter != null) { throw new IllegalStateException("The getWriter() is already called."); } isOutputStreamCalled = true; return super.getOutputStream(); } @Override public PrintWriter getWriter() throws IOException { if (isOutputStreamCalled) { throw new IllegalStateException("The getOutputStream() is already called."); } this.stringWriter = new StringWriter(); return new PrintWriter(this.stringWriter); } public String getResponseContent() { if (this.stringWriter != null) { return this.stringWriter.toString(); } return ""; } }