/* * #%L * BroadleafCommerce Common Libraries * %% * Copyright (C) 2009 - 2013 Broadleaf Commerce * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ package org.broadleafcommerce.common.web; import org.broadleafcommerce.common.site.domain.Theme; import org.thymeleaf.TemplateProcessingParameters; import org.thymeleaf.templateresolver.ServletContextTemplateResolver; import org.thymeleaf.util.Validate; /** * Overrides the Thymeleaf ContextTemplateResolver and appends the org.broadleafcommerce.common.web.Theme path to the url * if it exists. */ public class BroadleafThymeleafServletContextTemplateResolver extends ServletContextTemplateResolver { protected String templateFolder = ""; @Override protected String computeResourceName(final TemplateProcessingParameters templateProcessingParameters) { String themePath = null; Theme theme = BroadleafRequestContext.getBroadleafRequestContext().getTheme(); if (theme != null && theme.getPath() != null) { themePath = theme.getPath(); } checkInitialized(); final String templateName = templateProcessingParameters.getTemplateName(); Validate.notNull(templateName, "Template name cannot be null"); String unaliasedName = this.getTemplateAliases().get(templateName); if (unaliasedName == null) { unaliasedName = templateName; } final StringBuilder resourceName = new StringBuilder(); String prefix = this.getPrefix(); if (prefix != null && ! prefix.trim().equals("")) { if (themePath != null) { resourceName.append(prefix).append(themePath).append('/').append(templateFolder); } } resourceName.append(unaliasedName); String suffix = this.getSuffix(); if (suffix != null && ! suffix.trim().equals("")) { resourceName.append(suffix); } return resourceName.toString(); } public String getTemplateFolder() { return templateFolder; } public void setTemplateFolder(String templateFolder) { this.templateFolder = templateFolder; } }