/******************************************************************************* * Copyright (c) 2011 The Board of Trustees of the Leland Stanford Junior University * as Operator of the SLAC National Accelerator Laboratory. * Copyright (c) 2011 Brookhaven National Laboratory. * EPICS archiver appliance is distributed subject to a Software License Agreement found * in file LICENSE that is included with this distribution. *******************************************************************************/ package org.epics.archiverappliance.retrieval; import java.io.IOException; import java.util.HashMap; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.epics.archiverappliance.common.BPLAction; import org.epics.archiverappliance.common.BasicDispatcher; import org.epics.archiverappliance.common.GetVersion; import org.epics.archiverappliance.common.ProcessMetricsReport; import org.epics.archiverappliance.config.ConfigService; import org.epics.archiverappliance.retrieval.bpl.AreWeArchivingPV; import org.epics.archiverappliance.retrieval.bpl.FilterArchivedPVs; import org.epics.archiverappliance.retrieval.bpl.GetClientConfiguration; import org.epics.archiverappliance.retrieval.bpl.GetMatchingPVs; import org.epics.archiverappliance.retrieval.bpl.GetPVMetaData; import org.epics.archiverappliance.retrieval.bpl.SearchForPVsRegex; import org.epics.archiverappliance.retrieval.bpl.reports.ApplianceMetrics; import org.epics.archiverappliance.retrieval.bpl.reports.ApplianceMetricsDetails; import org.epics.archiverappliance.retrieval.bpl.reports.InstanceReportDetails; /** * The main business logic servlet for retrieval. All BPLActions are registered here. * @author mshankar * */ public class BPLServlet extends HttpServlet { private static final long serialVersionUID = 7987830282574602915L; private ConfigService configService = null; private static HashMap<String, Class<? extends BPLAction>> getActions = new HashMap<String, Class<? extends BPLAction>>(); static { getActions.put("/getApplianceMetrics", ApplianceMetrics.class); getActions.put("/getApplianceMetricsForAppliance", ApplianceMetricsDetails.class); getActions.put("/getInstanceMetricsForAppliance", InstanceReportDetails.class); getActions.put("/searchForPVsRegex", SearchForPVsRegex.class); getActions.put("/getMatchingPVs", GetMatchingPVs.class); getActions.put("/getProcessMetrics", ProcessMetricsReport.class); getActions.put("/getVersion", GetVersion.class); getActions.put("/getClientConfig", GetClientConfiguration.class); getActions.put("/getMetadata", GetPVMetaData.class); getActions.put("/areWeArchivingPV", AreWeArchivingPV.class); } protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { BasicDispatcher.dispatch(req, resp, configService, getActions); } private static HashMap<String, Class<? extends BPLAction>> postActions = new HashMap<String, Class<? extends BPLAction>>(); static { postActions.put("/filterArchivedPVs", FilterArchivedPVs.class); // Uncomment after adding readonly support for the client config. // postActions.put("/putClientConfig", PutClientConfiguration.class); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { BasicDispatcher.dispatch(req, resp, configService, postActions); } @Override public void init() throws ServletException { this.configService = (ConfigService) this.getServletContext().getAttribute(ConfigService.CONFIG_SERVICE_NAME); } }