package org.sinnlabs.dbvim.servlet; import java.io.IOException; import java.sql.SQLException; 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 org.apache.commons.lang3.StringUtils; import org.sinnlabs.dbvim.config.ConfigLoader; import org.sinnlabs.dbvim.model.StaticResource; /** * Servlet implementation class ResourceLoader */ @WebServlet("/resource/*") public class ResourceLoader extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public ResourceLoader() { super(); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getPathInfo(); if (path.startsWith("/")) { path = path.substring(1); } try { StaticResource resource = ConfigLoader.getInstance().getStaticResources().queryForId(path); if (resource == null) { System.err.println("ResourceLoader: Requested resource does not exists: " + path); response.sendError(404, "Requested resource does not exists."); } else { if (!StringUtils.isEmpty(resource.getContentType())) response.setContentType(resource.getContentType()); response.getOutputStream().write(resource.getData()); } } catch (SQLException e) { throw new ServletException("SQL Error while getting requested resource.", e); } } }