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}