package org.apereo.cas.web;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Abstract class to be extended by all controllers that may become a delegate.
* All subclass must implement the canHandle method to say if they can handle a request or not.
* @author Frederic Esnault
* @since 4.2.0
*/
@Controller
public abstract class AbstractDelegateController implements ApplicationContextAware {
/** Application context. */
protected ApplicationContext applicationContext;
/**
* Determine if a AbstractDelegateController subclass can handle the current request.
* @param request the current request
* @param response the response
* @return true if the controller can handler the request, false otherwise
*/
public abstract boolean canHandle(HttpServletRequest request, HttpServletResponse response);
/**
* Handle request internal.
*
* @param request the request
* @param response the response
* @return the model and view
* @throws Exception the exception
*/
protected abstract ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
throws Exception;
@Override
public void setApplicationContext(final ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
}