package org.jboss.as.test.integration.web.servlet.buffersize;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "ResponseBufferSizeServlet", urlPatterns = {"/ResponseBufferSizeServlet"})
public class ResponseBufferSizeServlet extends HttpServlet {
public static final String SIZE_CHANGE_PARAM_NAME = "sizeChange";
public static final String DATA_LENGTH_IN_PERCENTS_PARAM_NAME = "dataLengthInPercents";
public static final String RESPONSE_COMMITED_MESSAGE = "Response committed";
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String sizeChangeAsStr = request.getParameter(SIZE_CHANGE_PARAM_NAME);
String dataLengthInPercentsAsStr = request.getParameter(DATA_LENGTH_IN_PERCENTS_PARAM_NAME);
double sizeChange = 1.0;
double dataLengthModifier = 1.0;
if (sizeChangeAsStr != null) {
sizeChange = Double.parseDouble(sizeChangeAsStr);
}
if (sizeChangeAsStr != null) {
dataLengthModifier = Double.parseDouble(dataLengthInPercentsAsStr);
}
int origBufferSize = response.getBufferSize();
int newBufferSize = (int)(origBufferSize * sizeChange);
int dataLength = (int)(newBufferSize*dataLengthModifier);
int lineLength = 160; // setting line length to create nicer output
// generating output of specified size
response.setBufferSize(newBufferSize);
StringBuffer outputBuffer = new StringBuffer(dataLength);
for (int i = 0; i < dataLength; i++) {
outputBuffer.append("X");
if ((dataLength%lineLength) == 0) {
outputBuffer.append('\n');
i++;
}
}
response.getWriter().write(outputBuffer.toString());
if (response.isCommitted()) {
response.getWriter().println(RESPONSE_COMMITED_MESSAGE);
}
}
}