All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.connect_group.thymeleaf.testing.config.ThymesheetConfig Maven / Gradle / Ivy

The newest version!
package com.connect_group.thymeleaf.testing.config;

import com.connect_group.thymeleaf.testing.ThymeleafTestEngine;
import com.connect_group.thymesheet.templatemode.ThymesheetStandardTemplateModeHandlers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.web.servlet.view.UrlBasedViewResolver;
import org.thymeleaf.cache.StandardCacheManager;
import org.thymeleaf.dialect.IDialect;
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
import org.thymeleaf.templatemode.ITemplateModeHandler;
import org.thymeleaf.templateresolver.FileTemplateResolver;
import org.thymeleaf.templateresolver.ITemplateResolver;
import org.thymeleaf.templateresolver.ServletContextTemplateResolver;

import javax.servlet.ServletContext;
import java.util.HashSet;
import java.util.Set;

@Configuration
public class ThymesheetConfig {
	@Value("${thymeleaf.template.cache.enabled:true}")
	protected boolean templateCacheEnabled;
	
	@Value("${thymeleaf.template.mode:LEGACYHTML5}")
	protected String templateMode;
	
	@Value("${thymeleaf.template.characterEncoding:UTF-8}")
	protected String characterEncoding;

    @Autowired 
    ApplicationContext applicationContext;

    @Autowired 
    ServletContext servletContext;
    
	@Bean
	public StandardCacheManager thymeleafCacheManager() {
		return new StandardCacheManager();
	}

	public Set templateModeHandlers() {
		HashSet set = new HashSet();
		ITemplateModeHandler handler = getHandler();
		set.add(handler);
		return set;
	}
	
	@Bean
	@DependsOn("propertyConfigurer")
	public ThymeleafViewResolver thymeleafViewResolver() {
		ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
		viewResolver.setCharacterEncoding(characterEncoding);
		viewResolver.setTemplateEngine(testEngine());
		viewResolver.setOrder(0);
		return viewResolver;
	}
	
	@Bean
	public UrlBasedViewResolver urlBasedViewResolver() {
		UrlBasedViewResolver viewResolver = new UrlBasedViewResolver();
		
		viewResolver.setOrder(2);
		viewResolver.setViewClass(org.springframework.web.servlet.view.InternalResourceView.class);
		
		return viewResolver;
	}
	
	@Bean
	@DependsOn("propertyConfigurer")
	public ThymeleafTestEngine testEngine() {
		ThymeleafTestEngine engine = new ThymeleafTestEngine();

		engine.setCacheManager(thymeleafCacheManager());
		engine.setTemplateModeHandlers(templateModeHandlers());
		engine.setAdditionalDialects(additionalDialects());

		
		
		Set templateResolvers = new HashSet();
		templateResolvers.add(servletContextTemplateResolver());
		templateResolvers.add(fileTemplateResolver());
		engine.setTemplateResolvers(templateResolvers);
		
		engine.setServletContext(servletContext);
		engine.setApplicationContext(applicationContext);
		return engine;
	}
	
	/**
	 * To be overridden if you require additional dialects.
	 * @return
	 */
	protected Set additionalDialects() {
		Set additionalDialects = new HashSet();
		return additionalDialects;
	}

	protected ITemplateModeHandler getHandler() {
		ITemplateModeHandler handler = ThymesheetStandardTemplateModeHandlers.LEGACYHTML5;
		for(ITemplateModeHandler stdHandler : ThymesheetStandardTemplateModeHandlers.ALL_TEMPLATE_MODE_HANDLERS) {
			if(stdHandler.getTemplateModeName().equals(templateMode)) {
				handler=stdHandler;
			}
		}
		return handler;
	}
	
	
	private FileTemplateResolver fileTemplateResolver() {
		FileTemplateResolver resolver = new FileTemplateResolver();
		resolver.setCharacterEncoding("UTF-8");
		resolver.setTemplateMode("LEGACYHTML5");
		resolver.setCacheable(templateCacheEnabled);
		resolver.setOrder(2);
		return resolver;
	}
	
	private ServletContextTemplateResolver servletContextTemplateResolver() {
		ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
		resolver.setCharacterEncoding(characterEncoding);
		resolver.setTemplateMode(templateMode);
		resolver.setCacheable(templateCacheEnabled);
		resolver.setOrder(1);
		return resolver;
	}
		
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy