1 package org.oddjob.webapp.servlets; 2 3 import java.awt.Color ; 4 import java.awt.Graphics2D ; 5 import java.awt.image.BufferedImage ; 6 import java.io.IOException ; 7 8 import javax.imageio.ImageIO ; 9 import javax.servlet.ServletConfig ; 10 import javax.servlet.ServletContext ; 11 import javax.servlet.ServletException ; 12 import javax.servlet.http.HttpServlet ; 13 import javax.servlet.http.HttpServletRequest ; 14 import javax.servlet.http.HttpServletResponse ; 15 import javax.swing.ImageIcon ; 16 17 import org.apache.log4j.Logger; 18 import org.oddjob.images.IconTip; 19 import org.oddjob.webapp.WebappConstants; 20 import org.oddjob.webapp.model.IconRegistry; 21 22 23 26 27 public class IconServlet extends HttpServlet { 28 private static final long serialVersionUID = 20051109; 29 private static final Logger logger = Logger.getLogger(IconServlet.class); 30 31 private final IconRegistry iconRegistry 32 = new IconRegistry(); 33 34 public void init(ServletConfig config) throws ServletException { 35 36 ServletContext context = config.getServletContext(); 37 context.setAttribute(WebappConstants.ICON_REGISTRY, iconRegistry); 38 } 39 40 public void doGet(HttpServletRequest request, HttpServletResponse response) 41 throws ServletException , IOException { 42 43 String iconId = (String )request.getParameter("iconId"); 44 if (iconId == null) { 45 logger.debug("No request paramter iconId."); 46 return; 47 } 48 IconTip iconTip = iconRegistry.retrieve(iconId); 49 if (iconTip == null) { 50 logger.debug("No icon for [" + iconId + "]"); 51 return; 52 } 53 response.setDateHeader("Expires", -1); 55 ImageIcon imageIcon = new ImageIcon (iconTip.getImageData()); 56 response.setContentType("image/jpeg"); 57 int width = imageIcon.getIconWidth(); 58 int height = imageIcon.getIconHeight(); 59 BufferedImage bufferedIcon = new BufferedImage ( 60 width, height, BufferedImage.TYPE_INT_RGB); 61 Graphics2D graphics = (Graphics2D )bufferedIcon.getGraphics(); 62 graphics.setBackground(Color.WHITE); 63 graphics.clearRect(0, 0, width, height); 64 imageIcon.paintIcon(null, graphics, 0, 0); 65 ImageIO.write(bufferedIcon, "jpg", response.getOutputStream()); 66 } 67 68 public long getLastModified(HttpServletRequest request) { 69 return 0; 70 } 71 } 72 | Popular Tags |