WIP: variables-dialect
[maven-thymeleaf-skin] / src / main / java / de / juplo / thymeproxy / Application.java
1 package de.juplo.thymeproxy;
2
3 import de.juplo.thymeleaf.JuploDialect;
4 import java.util.HashMap;
5 import java.util.Map;
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;
16
17
18 @SpringBootApplication
19 public class Application
20 {
21   @Bean
22   public RegexUrlHandlerMapping proxiedHandlerMapping(
23       ProxyHttpRequestHandler proxy,
24       UrlFilenameViewController views
25       )
26   {
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);
37         return mapping;
38   }
39
40   @Bean
41   public ProxyHttpRequestHandler proxyHttpRequestHandler(
42       CloseableHttpClient client,
43       Environment env
44       )
45   {
46     ProxyHttpRequestHandler handler = new ProxyHttpRequestHandler();
47     handler.setClient(client);
48     handler.setOrigin(env.getProperty("thymeproxy.origin"));
49     handler.setTtl(30000l);
50     return handler;
51   }
52
53   @Bean
54   public UrlFilenameViewController urlFilenameViewController()
55   {
56     return new UrlFilenameViewController();
57   }
58
59   @Bean
60   public TemplateResolver defaultTemplateResolver(
61       IResourceResolver resources,
62       Environment env
63       )
64   {
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")));
72     return resolver;
73   }
74
75   @Bean
76   public TemplateResolver jsonTemplateResolver(
77       IResourceResolver resources,
78       Environment env
79       )
80   {
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")));
88     return resolver;
89   }
90
91   @Bean
92   public UrlResourceResolver thymeleafResourceResolver()
93   {
94     return new UrlResourceResolver();
95   }
96
97   @Bean
98   public JuploDialect juploDialect()
99   {
100     return new JuploDialect();
101   }
102
103
104   public static void main(String[] args)
105   {
106     SpringApplication.run(Application.class, args);
107   }
108 }