package de.juplo.thymeproxy;
-import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.apache.http.impl.client.CloseableHttpClient;
import org.springframework.context.annotation.Bean;
import org.springframework.core.Ordered;
import org.springframework.core.env.Environment;
-import org.springframework.web.HttpRequestHandler;
-import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping;
+import org.springframework.web.servlet.mvc.UrlFilenameViewController;
+import org.thymeleaf.resourceresolver.IResourceResolver;
+import org.thymeleaf.resourceresolver.UrlResourceResolver;
+import org.thymeleaf.templateresolver.TemplateResolver;
@SpringBootApplication
public class Application
{
@Bean
- public SimpleUrlHandlerMapping proxiedHandlerMapping(
- ProxyHttpRequestHandler handler
+ public RegexUrlHandlerMapping proxiedHandlerMapping(
+ ProxyHttpRequestHandler proxy,
+ UrlFilenameViewController views
)
{
- SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
+ RegexUrlHandlerMapping mapping = new RegexUrlHandlerMapping();
mapping.setOrder(Ordered.HIGHEST_PRECEDENCE);
- Map<String, HttpRequestHandler> mappings = new HashMap<>();
- mappings.put("/*.html", handler);
- mappings.put("/*/", handler);
- mappings.put("/*/*.html", handler);
- mappings.put("/**/", handler);
- mappings.put("/**/*.html", handler);
+ Map<String, Object> mappings = new HashMap<>();
+ mappings.put("/thymeleaf/.*\\.html", proxy);
+ mappings.put("/img/.+", proxy);
+ mappings.put("/css/.+", proxy);
+ mappings.put("/js/.+", proxy);
+ mappings.put("/fonts/.+", proxy);
+ mappings.put("/.*\\.html", views);
mapping.setUrlMap(mappings);
return mapping;
}
@Bean
- public ProxyHttpRequestHandler proxiedRequestHandler(
+ public ProxyHttpRequestHandler proxyHttpRequestHandler(
CloseableHttpClient client,
Environment env
)
return handler;
}
+ @Bean
+ public UrlFilenameViewController urlFilenameViewController()
+ {
+ return new UrlFilenameViewController();
+ }
+
+ @Bean
+ public TemplateResolver defaultTemplateResolver(
+ IResourceResolver resources,
+ Environment env
+ )
+ {
+ TemplateResolver resolver = new TemplateResolver();
+ resolver.setResourceResolver(resources);
+ resolver.setPrefix("http://localhost:8080/thymeleaf/");
+ resolver.setSuffix(".html");
+ resolver.setTemplateMode("HTML5");
+ resolver.setCharacterEncoding("UTF-8");
+ resolver.setCacheable(Boolean.valueOf(env.getProperty("thymeproxy.cacheable")));
+ return resolver;
+ }
+
+ @Bean
+ public UrlResourceResolver thymeleafResourceResolver()
+ {
+ return new UrlResourceResolver();
+ }
+
public static void main(String[] args)
{