1 package de.juplo.autoconfigure;
4 import de.juplo.autoconfigure.ThymeproxyProperties.Origin;
5 import de.juplo.thymeproxy.ProxyTemplateResolver;
6 import org.apache.http.impl.client.CloseableHttpClient;
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
9 import org.springframework.boot.autoconfigure.AutoConfigureBefore;
10 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
11 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
12 import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration;
13 import org.springframework.boot.context.properties.EnableConfigurationProperties;
14 import org.springframework.context.ConfigurableApplicationContext;
15 import org.springframework.context.annotation.Bean;
16 import org.springframework.context.annotation.Configuration;
20 * Automatic configuration
25 @EnableConfigurationProperties(ThymeproxyProperties.class)
26 @ConditionalOnClass(value = ThymeleafAutoConfiguration.class)
27 @AutoConfigureBefore(ThymeleafAutoConfiguration.class)
28 public class ThymeproxyAutoConfiguration
30 private static final Logger LOG =
31 LoggerFactory.getLogger(ThymeproxyAutoConfiguration.class);
35 @ConditionalOnProperty("thymeproxy.origins[0].uri")
36 public ProxyTemplateResolver defaultTemplateResolver(
37 CloseableHttpClient client,
38 ThymeproxyProperties properties,
39 ConfigurableApplicationContext context
42 LOG.info("configuring {} proxies", properties.origins.size());
44 Origin origin = properties.origins.get(0);
45 String uri = origin.uri.toString();
46 ProxyTemplateResolver defaultResolver =
47 new ProxyTemplateResolver(
48 "0: " + origin.uri.getHost(),
54 LOG.info("registering defaultTemplateResolver for {}", uri);
56 for (int i=1; i<properties.origins.size(); i++)
58 origin = properties.origins.get(i);
60 String name = "proxy" + i;
61 uri = origin.uri.toString();
62 ProxyTemplateResolver resolver =
63 new ProxyTemplateResolver(
64 i + ": " + origin.uri.getHost(),
67 origin.uri.toString(),
71 LOG.info("registering {} for {}", name, uri);
72 context.getBeanFactory().registerSingleton(name, resolver);
75 return defaultResolver;