/* ThemeResolver.java
Purpose:
Description:
History:
Mar 15, 2013 01:42 AM, Created by neillee
Copyright (C) 2013 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.web.theme;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Interface for web-based theme resolution strategies that allows for both
* theme resolution via the request and theme selection via request and response.
*
* This interface allows for implementations based on session, cookies, etc. The default
* implementation is CookieThemeResolver, which uses cookie for theme resolution and
* selection.
*
* Note that this resolver is only responsible for determining the current theme name.
* The Theme instance for the resolved theme name must be looked up via ThemeRegistry
* interface. For example, the user could call ThemeFns.getThemeRegistry() to obtain
* the current theme registry, and then call themeRegistry.getTheme(themeName) to
* retrieve the corresponding Theme instance, if a theme with such name is previously
* registered.
*
* @author neillee
* @since 6.5.2
*/
public interface ThemeResolver {
/**
* Resolve the current intended theme name via the given request.
* Whether this theme name will actually be used is subject to the theme validation
* and fall-back strategies.
*
* @param request request to be used for resolution
* @return the current intended theme name
*/
public String getTheme(HttpServletRequest request);
/**
* Set the current intended theme name to the given one.
*
* @param request request to be used for theme name selection
* @param response response to be used for theme name selection
* @param themeName the new intended theme name
*/
public void setTheme(HttpServletRequest request, HttpServletResponse response, String themeName);
}