package org.jboss.test.faces.staging;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* Implementations of the this interface represent any executable request object ( filter or servlet ) in the virtual server.
* Filter implementation also hold a reference to the next server object in the chain.
* @author asmirnov
*
*/
public interface RequestChain {
/**
* Is this object applicable to process given path ?
* @param path request path relative to web application context.
* @return true if this object was configured to process given path.
*/
public abstract boolean isApplicable(String path);
/**
* Execute request with current object. Filter objects also delegate doFilter calls to the next object in the chain.
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public abstract void execute(ServletRequest request,
ServletResponse response) throws ServletException, IOException;
/**
* Destroy containing web server objects.
*/
public abstract void destroy();
/**
* Init containing objects ( filters or servlet ).
* @param servletContext
* @throws ServletException
*/
public abstract void init(ServletContext servletContext) throws ServletException;
/**
* Calculate path info for a request path.
* @param path request path relative to the web application context.
* @return part of the path after servlet path or null for a suffix-based mapping.
*/
public abstract String getPathInfo(String path);
/**
* Calculate servlet path for a given request.
* @param path request path relative to the web application context.
* @return prefix part from servlet mapping or {@code path} for a suffix-based mapping.
*/
public abstract String getServletPath(String path);
public abstract void setName(String string);
public abstract String getName();
}