WIP: thymeproxy
[maven-thymeleaf-skin] / src / main / java / de / juplo / thymeproxy / Application.java
index 47a60c9..d7aa61d 100644 (file)
@@ -1,31 +1,43 @@
 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.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.annotation.Bean;
 import org.springframework.core.Ordered;
 import org.springframework.core.env.Environment;
-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);
-    mapping.setUrlMap(Collections.singletonMap("*.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
       )
@@ -37,6 +49,34 @@ public class Application
     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)
   {