1 package de.juplo.thymeproxy;
3 import de.juplo.thymeleaf.JuploDialect;
4 import java.util.HashMap;
6 import org.apache.http.impl.client.CloseableHttpClient;
7 import org.springframework.boot.SpringApplication;
8 import org.springframework.boot.autoconfigure.SpringBootApplication;
9 import org.springframework.context.annotation.Bean;
10 import org.springframework.core.Ordered;
11 import org.springframework.core.env.Environment;
12 import org.springframework.web.servlet.mvc.UrlFilenameViewController;
13 import org.thymeleaf.resourceresolver.IResourceResolver;
14 import org.thymeleaf.resourceresolver.UrlResourceResolver;
15 import org.thymeleaf.templateresolver.TemplateResolver;
18 @SpringBootApplication
19 public class Application
22 public RegexUrlHandlerMapping proxiedHandlerMapping(
23 ProxyHttpRequestHandler proxy,
24 UrlFilenameViewController views
27 RegexUrlHandlerMapping mapping = new RegexUrlHandlerMapping();
28 mapping.setOrder(Ordered.HIGHEST_PRECEDENCE);
29 Map<String, Object> mappings = new HashMap<>();
30 mappings.put("/thymeleaf/.*\\.html", proxy);
31 mappings.put("/img/.+", proxy);
32 mappings.put("/css/.+", proxy);
33 mappings.put("/js/.+", proxy);
34 mappings.put("/fonts/.+", proxy);
35 mappings.put("/.*\\.html", views);
36 mapping.setUrlMap(mappings);
41 public ProxyHttpRequestHandler proxyHttpRequestHandler(
42 CloseableHttpClient client,
46 ProxyHttpRequestHandler handler = new ProxyHttpRequestHandler();
47 handler.setClient(client);
48 handler.setOrigin(env.getProperty("thymeproxy.origin"));
49 handler.setTtl(30000l);
54 public UrlFilenameViewController urlFilenameViewController()
56 return new UrlFilenameViewController();
60 public TemplateResolver defaultTemplateResolver(
61 IResourceResolver resources,
65 TemplateResolver resolver = new TemplateResolver();
66 resolver.setResourceResolver(resources);
67 resolver.setPrefix("http://localhost:8080/thymeleaf/");
68 resolver.setSuffix(".html");
69 resolver.setTemplateMode("HTML5");
70 resolver.setCharacterEncoding("UTF-8");
71 resolver.setCacheable(Boolean.valueOf(env.getProperty("thymeproxy.cacheable")));
76 public TemplateResolver jsonTemplateResolver(
77 IResourceResolver resources,
81 TemplateResolver resolver = new TemplateResolver();
82 resolver.setResourceResolver(resources);
83 resolver.setPrefix("http://localhost:8080/thymeleaf/");
84 resolver.setSuffix(".json");
85 resolver.setTemplateMode("JSON");
86 resolver.setCharacterEncoding("UTF-8");
87 resolver.setCacheable(Boolean.valueOf(env.getProperty("thymeproxy.cacheable")));
92 public UrlResourceResolver thymeleafResourceResolver()
94 return new UrlResourceResolver();
98 public JuploDialect juploDialect()
100 return new JuploDialect();
104 public static void main(String[] args)
106 SpringApplication.run(Application.class, args);