/*
* VaadinJasperPrintServlet.java
* Designed to print a JasperReport report by name to the requested
* output sink.
* The default output sink is HTML.
*
*
*
* Created on 12 July 2002, 13:54
*/
package au.com.vaadinutils.jasper.servlet;
import java.util.Map;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
* @author bsutton
* @version
*/
public class VaadinJasperPrintServlet extends HttpServlet
{
public static final String IMAGES_MAP = "IMAGES_MAP";
private static final long serialVersionUID = -4735461255420730963L;
static Logger logger = LogManager.getLogger();
/**
* Called to show an image that has been loaded into the session be a prior
* call to doPrint.
*/
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
{
@SuppressWarnings("unchecked")
Map<String, byte[]> imagesMap = (Map<String, byte[]>) request.getSession().getAttribute(IMAGES_MAP);
try
{
if (imagesMap != null)
{
String imageName = request.getParameter("image");
if (imageName != null)
{
byte[] imageData = imagesMap.get(imageName);
if (imageData == null)
throw new IllegalStateException(
"The passed image (" + imageName + " has not been loaded into the session.");
response.setContentLength(imageData.length);
try (ServletOutputStream out = response.getOutputStream();)
{
out.write(imageData, 0, imageData.length);
out.flush();
}
}
}
}
catch (Exception e)
{
logger.error(e, e);
}
}
}