package servlets; import java.io.IOException; import java.util.HashSet; import java.util.TreeSet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import util.Fonts; /** * Servlet implementation class ScreenSizeCSSServlet */ public class FontCSSServlet extends HttpServlet { private static final long serialVersionUID = 1L; private HashSet<String> expectedFonts; /** * @see HttpServlet#HttpServlet() */ public FontCSSServlet() { super(); expectedFonts = new HashSet<String>(Fonts.fontsEfficient.length); for(String font: Fonts.fontsEfficient){ expectedFonts.add(font); } } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = ((HttpServletRequest)request).getSession(true); synchronized (session) { session.setMaxInactiveInterval(300); String url = ((HttpServletRequest)request).getRequestURL().toString(); String font = url.substring(url.lastIndexOf("/") + 1).replace('_', ' '); int substr_end= font.indexOf(";jsessionid", 0); if(substr_end > -1){ //Trim off jsessionid if present font = font.substring(0, substr_end); } if(expectedFonts.contains(font)){ //System.out.println("Requested: " + font); TreeSet<String> fontsNotRequested = (TreeSet<String>)session.getAttribute("fontsNotRequested"); if(fontsNotRequested == null){ fontsNotRequested = new TreeSet<String>(expectedFonts); session.setAttribute("fontsNotRequested", fontsNotRequested); } fontsNotRequested.remove(font); } response.sendError(404); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }