/** * Retrieves the current theme from the given request, using the ThemeResolver * and ThemeSource bound to the request by the DispatcherServlet. * @param request current HTTP request * @return the current theme, or {@code null} if not found * @see #getThemeResolver */ @Nullable public static Theme getTheme(HttpServletRequest request) { ThemeResolver themeResolver = getThemeResolver(request); ThemeSource themeSource = getThemeSource(request); if (themeResolver != null && themeSource != null) { String themeName = themeResolver.resolveThemeName(request); return themeSource.getTheme(themeName); } else { return null; } }
/** * Retrieves the current theme from the given request, using the ThemeResolver * and ThemeSource bound to the request by the DispatcherServlet. * @param request current HTTP request * @return the current theme, or {@code null} if not found * @see #getThemeResolver */ @Nullable public static Theme getTheme(HttpServletRequest request) { ThemeResolver themeResolver = getThemeResolver(request); ThemeSource themeSource = getThemeSource(request); if (themeResolver != null && themeSource != null) { String themeName = themeResolver.resolveThemeName(request); return themeSource.getTheme(themeName); } else { return null; } }
throw new ServletException("Incorrect ThemeResolver"); if (!"theme".equals(RequestContextUtils.getThemeResolver(request).resolveThemeName(request))) { throw new ServletException("Incorrect theme name"); throw new ServletException("Incorrect TimeZone"); if (!"theme2".equals(RequestContextUtils.getThemeResolver(request).resolveThemeName(request))) { throw new ServletException("Incorrect theme name");
private void internalTest(ThemeResolver themeResolver, boolean shouldSet, String defaultName) { // create mocks MockServletContext context = new MockServletContext(); MockHttpServletRequest request = new MockHttpServletRequest(context); MockHttpServletResponse response = new MockHttpServletResponse(); // check original theme String themeName = themeResolver.resolveThemeName(request); assertEquals(themeName, defaultName); // set new theme name try { themeResolver.setThemeName(request, response, TEST_THEME_NAME); if (!shouldSet) fail("should not be able to set Theme name"); // check new theme namelocale themeName = themeResolver.resolveThemeName(request); assertEquals(TEST_THEME_NAME, themeName); themeResolver.setThemeName(request, response, null); themeName = themeResolver.resolveThemeName(request); assertEquals(themeName, defaultName); } catch (UnsupportedOperationException ex) { if (shouldSet) fail("should be able to set Theme name"); } }
@Override public String resolve(String staticPrefix) { String themeName = themeResolver.resolveThemeName(getRequest()); String path = new File(staticPrefix, themeName).getPath(); if (staticPrefix.endsWith(File.separator)) { return path + File.separator; } else { return path; } }
@Override public String resolveThemeName(HttpServletRequest request) { String themeName = getThemeName(request); Iterator<ThemeResolver> iter = themeResolvers.iterator(); while (iter.hasNext() && !StringUtils.hasText(themeName)) { themeName = iter.next().resolveThemeName(request); } cacheThemeName(request, themeName); return StringUtils.hasText(themeName) ? themeName : defaultTheme; }
@Override public String resolveThemeName(final HttpServletRequest httpServletRequest) { val it = chain.iterator(); while (it.hasNext()) { val r = it.next(); LOGGER.trace("Attempting to resolve theme via [{}]", r.getClass().getSimpleName()); val resolverTheme = r.resolveThemeName(httpServletRequest); if (!resolverTheme.equalsIgnoreCase(getDefaultThemeName())) { LOGGER.trace("Resolved theme [{}]", resolverTheme); return resolverTheme; } } LOGGER.trace("No specific theme could be found. Using default theme [{}}", getDefaultThemeName()); return getDefaultThemeName(); }
@ModelAttribute("currentTheme") public Theme currentTheme(HttpServletRequest request) { return themeRegistry.getPluginFor(themeResolver.resolveThemeName(request), themeRegistry.getPluginFor(DEFAULT_THEME_NAME)); }
@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; String themeName = themeResolver.resolveThemeName(httpRequest); Theme theme = ThemeRegistry.getInstance().get(themeName); if (theme != null) { String originalPath = httpRequest.getPathInfo(); String requestPath = originalPath == null ? null : theme.translatePath(originalPath); if (requestPath != null) { requestPath = requestPath.isEmpty() ? "empty/" + originalPath : requestPath; httpRequest.getRequestDispatcher(requestPath).forward(httpRequest, response); return; } } chain.doFilter(request, response); }
private ResourceUrlResolver urlResolver() { if (themeResolver == null || !useThemeInViewPath) { return IdentityUrlResolver.INSTANCE; } else { return new ThemedResourceUrlResolver(themeResolver.resolveThemeName(getServletRequest())); } } }
@Override protected void doGet( final HttpServletRequest request, final HttpServletResponse response ) throws ServletException, IOException { String requestURI = request.getRequestURI(); final Matcher matcher = cssPattern.matcher(requestURI); if (!matcher.matches()) { response.sendError(HttpServletResponse.SC_NOT_FOUND, "Not found"); return; } String themeName = themeResolver.resolveThemeName(request); if (themeName == null) { response.sendError(HttpServletResponse.SC_NOT_FOUND, "Not found"); return; } Theme theme = (Theme) themeSource.getTheme(themeName); if (theme == null) { response.sendError(HttpServletResponse.SC_NOT_FOUND, "Not found"); return; } response.setContentType("text/css"); themeCompiler.getCss(theme.getName(), matcher.group("name"), response.getOutputStream()); } }
public String resolveThemeName(HttpServletRequest request) { ThemeResolver themeResolver = RequestInstanceHolder .getMappingInstance().getCommonThemeResolver(); if (themeResolver != null) { logger.logMessage(LogLevel.DEBUG, " invoke themeResolver.resolveThemeName() method that will proxy [" + themeResolver + "]"); return themeResolver.resolveThemeName(request); } return null; }
@Override public String resolveThemeName(HttpServletRequest request) { if (isNested()) { String def = getDefaultThemeName(); for (ThemeResolver localeResolver : getResolvers()) { // 解析theme String theme = localeResolver.resolveThemeName(request); if (theme == null || theme.equals(def)) { continue; } return theme; } } return getDefaultThemeName(); }
/** * Retrieves the current theme from the given request, using the ThemeResolver * and ThemeSource bound to the request by the DispatcherServlet. * @param request current HTTP request * @return the current theme, or {@code null} if not found * @see #getThemeResolver */ public static Theme getTheme(HttpServletRequest request) { ThemeResolver themeResolver = getThemeResolver(request); ThemeSource themeSource = getThemeSource(request); if (themeResolver != null && themeSource != null) { String themeName = themeResolver.resolveThemeName(request); return themeSource.getTheme(themeName); } else { return null; } }
/** * Handler for user settings edit page BASIC IMPLEMENTATION * * @return view name */ @RequestMapping(value = USER_SETTINGS_EDIT, method = RequestMethod.GET) public ModelAndView settingsEditHandler(HttpServletRequest request) { ModelAndView results = new ModelAndView(USER_SETTINGS_EDIT); UserSettingsForm userSettingsForm = new UserSettingsForm(); UserProfile loggedUserProfile = userBusinessService.getCurrentUserProfile(); if (loggedUserProfile != null) { userSettingsForm.setHighContrastFacilitation(loggedUserProfile.isHighContrastFacilitation()); userSettingsForm.setLanguage(loggedUserProfile.getLanguage()!=null?loggedUserProfile.getLanguage().getyLanguage().getShortCode():"pl"); userSettingsForm.setNotificationsSendInterval(loggedUserProfile.getNotificationsSendInterval()); } else { Locale locale = localeResolver.resolveLocale(request); String themeName = themeResolver.resolveThemeName(request); userSettingsForm.setLanguage(locale.getLanguage()); userSettingsForm.setHighContrastFacilitation(themeName.equals(PortalThemeResolver.PORTAL_HIGH_CONTRAST_THEME)); } results.addObject("userSettingsForm", userSettingsForm); return results; }
@Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { Locale locale = localeResolver.resolveLocale(request); userSettingsHolder.setLocale(locale); localeResolver.setLocale(request, response, locale); String themeName = themeResolver.resolveThemeName(request); userSettingsHolder.setTheme(themeName); themeResolver.setThemeName(request, response, themeName); final String timezone = timezoneResolver.resolveSetting(request); userSettingsHolder.setTimezone(timezone); timezoneResolver.setSetting(timezone); }