/*******************************************************************************
* Copyright (c) 2010 Oak Ridge National Laboratory.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
******************************************************************************/
package org.csstudio.archive.engine.server;
import java.io.IOException;
import java.util.logging.Level;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.csstudio.archive.engine.Activator;
import org.csstudio.archive.engine.model.EngineModel;
/** Helper for creating web pages with consistent look (header, footer, ...)
* @author Kay Kasemir
*/
@SuppressWarnings("nls")
abstract class AbstractResponse extends HttpServlet
{
/** Required by Serializable */
private static final long serialVersionUID = 1L;
/** Model from which to serve info */
final protected EngineModel model;
/** Construct HttpServlet
* @param title Page title
*/
protected AbstractResponse(final EngineModel model)
{
this.model = model;
}
/** {@inheritDoc} */
@Override
protected void doGet(final HttpServletRequest req,
final HttpServletResponse resp)
throws ServletException, IOException
{
try
{
fillResponse(req, resp);
}
catch (Exception ex)
{
Activator.getLogger().log(Level.WARNING, "HTTP Server exception", ex);
if (resp.isCommitted())
return;
resp.sendError(400, "HTTP Server exception" + ex.getMessage());
}
}
/** Derived class must implement this to provide page content.
*
* Call startHTML
once, then other print methods.
* @param req The request
* @param resp The response
*/
abstract protected void fillResponse(final HttpServletRequest req,
final HttpServletResponse resp)
throws Exception;
}