001package org.javasimon.console; 002 003import java.io.IOException; 004import javax.servlet.ServletConfig; 005import javax.servlet.ServletContext; 006import javax.servlet.ServletException; 007import javax.servlet.http.HttpServlet; 008import javax.servlet.http.HttpServletRequest; 009import javax.servlet.http.HttpServletResponse; 010 011import org.javasimon.Manager; 012import org.javasimon.utils.SimonUtils; 013 014/** 015 * Front controller servlet of Simon Web console. 016 * 017 * @author gquintana 018 */ 019@SuppressWarnings("UnusedDeclaration") 020public class SimonConsoleServlet extends HttpServlet { 021 /** 022 * Serial version UID since class is Serializable. 023 */ 024 public static final long serialVersionUID = 1L; 025 026 /** 027 * URL Prefix init parameter name. 028 */ 029 public static final String URL_PREFIX_INIT_PARAMETER = "url-prefix"; 030 /** 031 * Plugin classes init parameter name. 032 */ 033 public static final String PLUGIN_CLASSES_INIT_PARAMETER = "plugin-classes"; 034 private SimonConsoleRequestProcessor requestProcessor; 035 036 @Override 037 public void init(ServletConfig config) throws ServletException { 038 super.init(config); 039 // Manager 040 Manager manager = getManager(config.getServletContext()); 041 // URL Prefix 042 String urlPrefix = config.getInitParameter(URL_PREFIX_INIT_PARAMETER); 043 // Plugin classes 044 String pluginClasses = config.getInitParameter(PLUGIN_CLASSES_INIT_PARAMETER); 045 // Create request processor 046 requestProcessor = SimonConsoleRequestProcessor.create(urlPrefix, manager, pluginClasses); 047 } 048 049 /** 050 * Get manager stored in servlet context (if any) 051 */ 052 public static Manager getManager(ServletContext servletContext) { 053 Object managerObject = servletContext.getAttribute(SimonUtils.MANAGER_SERVLET_CTX_ATTRIBUTE); 054 Manager manager = null; 055 if (managerObject instanceof Manager) { 056 manager =(Manager) managerObject; 057 } 058 return manager; 059 } 060 public SimonConsoleRequestProcessor getRequestProcessor() { 061 return requestProcessor; 062 } 063 064 /** 065 * Handles the HTTP 066 * <code>GET</code> method. 067 * 068 * @param request servlet request 069 * @param response servlet response 070 * @throws ServletException if a servlet-specific error occurs 071 * @throws IOException if an I/O error occurs 072 */ 073 @Override 074 protected void doGet(HttpServletRequest request, HttpServletResponse response) 075 throws ServletException, IOException 076 { 077 requestProcessor.processRequest(request, response); 078 } 079 080 /** 081 * Handles the HTTP 082 * <code>POST</code> method. 083 * 084 * @param request servlet request 085 * @param response servlet response 086 * @throws ServletException if a servlet-specific error occurs 087 * @throws IOException if an I/O error occurs 088 */ 089 @Override 090 protected void doPost(HttpServletRequest request, HttpServletResponse response) 091 throws ServletException, IOException 092 { 093 requestProcessor.processRequest(request, response); 094 } 095 096 /** 097 * Returns a short description of the servlet. 098 * 099 * @return a String containing servlet description 100 */ 101 @Override 102 public String getServletInfo() { 103 return "Short description"; 104 } 105}