package org.jtwig.example.config;
import org.jtwig.environment.EnvironmentConfiguration;
import org.jtwig.environment.EnvironmentConfigurationBuilder;
import org.jtwig.hot.reloading.HotReloadingExtension;
import org.jtwig.spring.JtwigViewResolver;
import org.jtwig.spring.boot.config.JtwigViewResolverConfigurer;
import org.jtwig.web.servlet.JtwigRenderer;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import java.io.File;
import java.util.concurrent.TimeUnit;
@Profile("dev")
@Configuration
public class DevelopmentWebConfig extends WebMvcConfigurerAdapter implements JtwigViewResolverConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/client/**")
.addResourceLocations(String.format("file://%s/", absolutePathTo("client")));
}
@Override
public void configure(JtwigViewResolver viewResolver) {
EnvironmentConfiguration configuration = EnvironmentConfigurationBuilder
.configuration()
.extensions()
.add(new HotReloadingExtension(TimeUnit.SECONDS, 1))
.and()
.build();
viewResolver.setRenderer(new JtwigRenderer(configuration));
viewResolver.setPrefix(String.format("file:%s/", absolutePathTo("templates/")));
viewResolver.setSuffix(".twig.html");
}
private String absolutePathTo(String path) {
return new File("src/main/resources/" + path).getAbsolutePath();
}
}