/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.monitor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Does some post processing on a request to generate some bit of request information.
* <p>
* Typically this interface is used for tasks that are expensive to compute such as a
* reverse dns lookup or a geoip lookup.
* </p>
* <p>
* Implementations of this class <b>must</b> be thread safe.
* </p>
*
* @author Justin Deoliveira, OpenGeo
*
*/
public interface RequestPostProcessor {
/**
* Post processes a request.
* <p>
* This method should do whatever processing it needs to and then set any information
* on <tt>data</tt> that is appropriate. There is no need for this method to persist the
* request object, it will be done after the post processing chain has been completed.
* </p>
*/
void run(RequestData data, HttpServletRequest request, HttpServletResponse response) throws Exception;
}