package scm.hivemind.statefulservice;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.hivemind.Registry;
import org.apache.hivemind.servlet.HiveMindFilter;


/**
 * A servlet filter for setting up the 
 * {@link scm.hivemind.statefulservice.ClientStateStorage}
 * for services holding state across requests.
 * 
 * @author Marcus Schulte
 */
public class StatefulHivemindFilter implements Filter {

	/**
	 * 
	 */
	public StatefulHivemindFilter() {
		super();
	}
   

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		
		HttpServletRequest req = (HttpServletRequest) request;
		Registry registry = HiveMindFilter.getRegistry( req );
		ClientStateStorage stateStore = (ClientStateStorage) 
                                       registry.getService(ClientStateStorage.class);
		stateStore.provideSession( req.getSession() );
		chain.doFilter( request, response );
		
	}
	
	/* (non-Javadoc)
	 * @see javax.servlet.Filter#destroy()
	 */
	public void destroy() {
			}
	/* (non-Javadoc)
	 * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
	 */
	public void init(FilterConfig filterConfig) throws ServletException {
	}
}

  • No labels