Commit 572305d7 by Ryan Baxter

Fixing code formatting

parent 2aa93abc
...@@ -45,8 +45,6 @@ import feign.httpclient.ApacheHttpClient; ...@@ -45,8 +45,6 @@ import feign.httpclient.ApacheHttpClient;
import feign.okhttp.OkHttpClient; import feign.okhttp.OkHttpClient;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
import com.netflix.client.config.CommonClientConfigKey;
import com.netflix.client.config.DefaultClientConfigImpl;
/** /**
* @author Spencer Gibb * @author Spencer Gibb
...@@ -54,7 +52,7 @@ import com.netflix.client.config.DefaultClientConfigImpl; ...@@ -54,7 +52,7 @@ import com.netflix.client.config.DefaultClientConfigImpl;
*/ */
@Configuration @Configuration
@ConditionalOnClass(Feign.class) @ConditionalOnClass(Feign.class)
@EnableConfigurationProperties({FeignHttpClientProperties.class}) @EnableConfigurationProperties({ FeignHttpClientProperties.class })
public class FeignAutoConfiguration { public class FeignAutoConfiguration {
@Autowired(required = false) @Autowired(required = false)
...@@ -110,12 +108,14 @@ public class FeignAutoConfiguration { ...@@ -110,12 +108,14 @@ public class FeignAutoConfiguration {
private CloseableHttpClient httpClient; private CloseableHttpClient httpClient;
@Bean @Bean
public HttpClientConnectionManager connectionManager(ApacheHttpClientConnectionManagerFactory connectionManagerFactory, public HttpClientConnectionManager connectionManager(
FeignHttpClientProperties httpClientProperties) { ApacheHttpClientConnectionManagerFactory connectionManagerFactory,
final HttpClientConnectionManager connectionManager = connectionManagerFactory.newConnectionManager(false, httpClientProperties.getMaxConnections(), FeignHttpClientProperties httpClientProperties) {
httpClientProperties.getMaxConnectionsPerRoute(), httpClientProperties.getTimeToLive(), final HttpClientConnectionManager connectionManager = connectionManagerFactory
httpClientProperties.getTimeToLiveUnit(), .newConnectionManager(false, httpClientProperties.getMaxConnections(),
registryBuilder); httpClientProperties.getMaxConnectionsPerRoute(),
httpClientProperties.getTimeToLive(),
httpClientProperties.getTimeToLiveUnit(), registryBuilder);
this.connectionManagerTimer.schedule(new TimerTask() { this.connectionManagerTimer.schedule(new TimerTask() {
@Override @Override
public void run() { public void run() {
...@@ -126,13 +126,15 @@ public class FeignAutoConfiguration { ...@@ -126,13 +126,15 @@ public class FeignAutoConfiguration {
} }
@Bean @Bean
public CloseableHttpClient httpClient(ApacheHttpClientFactory httpClientFactory, HttpClientConnectionManager httpClientConnectionManager, public CloseableHttpClient httpClient(ApacheHttpClientFactory httpClientFactory,
FeignHttpClientProperties httpClientProperties) { HttpClientConnectionManager httpClientConnectionManager,
RequestConfig defaultRequestConfig = RequestConfig.custom(). FeignHttpClientProperties httpClientProperties) {
setConnectTimeout(httpClientProperties.getConnectionTimeout()). RequestConfig defaultRequestConfig = RequestConfig.custom()
setRedirectsEnabled(httpClientProperties.isFollowRedirects()). .setConnectTimeout(httpClientProperties.getConnectionTimeout())
build(); .setRedirectsEnabled(httpClientProperties.isFollowRedirects())
this.httpClient = httpClientFactory.createClient(defaultRequestConfig, httpClientConnectionManager); .build();
this.httpClient = httpClientFactory.createClient(defaultRequestConfig,
httpClientConnectionManager);
return this.httpClient; return this.httpClient;
} }
......
...@@ -59,7 +59,7 @@ import javax.annotation.PreDestroy; ...@@ -59,7 +59,7 @@ import javax.annotation.PreDestroy;
@ConditionalOnClass({ ILoadBalancer.class, Feign.class }) @ConditionalOnClass({ ILoadBalancer.class, Feign.class })
@Configuration @Configuration
@AutoConfigureBefore(FeignAutoConfiguration.class) @AutoConfigureBefore(FeignAutoConfiguration.class)
@EnableConfigurationProperties({FeignHttpClientProperties.class}) @EnableConfigurationProperties({ FeignHttpClientProperties.class })
public class FeignRibbonClientAutoConfiguration { public class FeignRibbonClientAutoConfiguration {
@Bean @Bean
...@@ -74,7 +74,8 @@ public class FeignRibbonClientAutoConfiguration { ...@@ -74,7 +74,8 @@ public class FeignRibbonClientAutoConfiguration {
@Primary @Primary
@ConditionalOnClass(name = "org.springframework.retry.support.RetryTemplate") @ConditionalOnClass(name = "org.springframework.retry.support.RetryTemplate")
public CachingSpringLoadBalancerFactory retryabeCachingLBClientFactory( public CachingSpringLoadBalancerFactory retryabeCachingLBClientFactory(
SpringClientFactory factory, LoadBalancedRetryPolicyFactory retryPolicyFactory) { SpringClientFactory factory,
LoadBalancedRetryPolicyFactory retryPolicyFactory) {
return new CachingSpringLoadBalancerFactory(factory, retryPolicyFactory, true); return new CachingSpringLoadBalancerFactory(factory, retryPolicyFactory, true);
} }
...@@ -82,8 +83,8 @@ public class FeignRibbonClientAutoConfiguration { ...@@ -82,8 +83,8 @@ public class FeignRibbonClientAutoConfiguration {
@ConditionalOnMissingBean @ConditionalOnMissingBean
public Client feignClient(CachingSpringLoadBalancerFactory cachingFactory, public Client feignClient(CachingSpringLoadBalancerFactory cachingFactory,
SpringClientFactory clientFactory) { SpringClientFactory clientFactory) {
return new LoadBalancerFeignClient(new Client.Default(null, null), return new LoadBalancerFeignClient(new Client.Default(null, null), cachingFactory,
cachingFactory, clientFactory); clientFactory);
} }
@Bean @Bean
...@@ -106,12 +107,14 @@ public class FeignRibbonClientAutoConfiguration { ...@@ -106,12 +107,14 @@ public class FeignRibbonClientAutoConfiguration {
private RegistryBuilder registryBuilder; private RegistryBuilder registryBuilder;
@Bean @Bean
public HttpClientConnectionManager connectionManager(ApacheHttpClientConnectionManagerFactory connectionManagerFactory, public HttpClientConnectionManager connectionManager(
FeignHttpClientProperties httpClientProperties) { ApacheHttpClientConnectionManagerFactory connectionManagerFactory,
final HttpClientConnectionManager connectionManager = connectionManagerFactory.newConnectionManager(false, httpClientProperties.getMaxConnections(), FeignHttpClientProperties httpClientProperties) {
httpClientProperties.getMaxConnectionsPerRoute(), httpClientProperties.getTimeToLive(), final HttpClientConnectionManager connectionManager = connectionManagerFactory
httpClientProperties.getTimeToLiveUnit(), .newConnectionManager(false, httpClientProperties.getMaxConnections(),
registryBuilder); httpClientProperties.getMaxConnectionsPerRoute(),
httpClientProperties.getTimeToLive(),
httpClientProperties.getTimeToLiveUnit(), registryBuilder);
this.connectionManagerTimer.schedule(new TimerTask() { this.connectionManagerTimer.schedule(new TimerTask() {
@Override @Override
public void run() { public void run() {
...@@ -122,13 +125,15 @@ public class FeignRibbonClientAutoConfiguration { ...@@ -122,13 +125,15 @@ public class FeignRibbonClientAutoConfiguration {
} }
@Bean @Bean
public CloseableHttpClient httpClient(ApacheHttpClientFactory httpClientFactory, HttpClientConnectionManager httpClientConnectionManager, public CloseableHttpClient httpClient(ApacheHttpClientFactory httpClientFactory,
FeignHttpClientProperties httpClientProperties) { HttpClientConnectionManager httpClientConnectionManager,
RequestConfig defaultRequestConfig = RequestConfig.custom(). FeignHttpClientProperties httpClientProperties) {
setConnectTimeout(httpClientProperties.getConnectionTimeout()). RequestConfig defaultRequestConfig = RequestConfig.custom()
setRedirectsEnabled(httpClientProperties.isFollowRedirects()). .setConnectTimeout(httpClientProperties.getConnectionTimeout())
build(); .setRedirectsEnabled(httpClientProperties.isFollowRedirects())
this.httpClient = httpClientFactory.createClient(defaultRequestConfig, httpClientConnectionManager); .build();
this.httpClient = httpClientFactory.createClient(defaultRequestConfig,
httpClientConnectionManager);
return this.httpClient; return this.httpClient;
} }
......
...@@ -146,26 +146,33 @@ public class RibbonClientConfiguration { ...@@ -146,26 +146,33 @@ public class RibbonClientConfiguration {
private RegistryBuilder registryBuilder; private RegistryBuilder registryBuilder;
@Bean @Bean
public HttpClientConnectionManager httpClientConnectionManager(IClientConfig config, public HttpClientConnectionManager httpClientConnectionManager(
ApacheHttpClientConnectionManagerFactory connectionManagerFactory, IClientConfig config,
ApacheHttpClientFactory httpClientFactory) { ApacheHttpClientConnectionManagerFactory connectionManagerFactory,
Integer maxTotalConnections = config.getPropertyAsInteger(CommonClientConfigKey.MaxTotalConnections, ApacheHttpClientFactory httpClientFactory) {
Integer maxTotalConnections = config.getPropertyAsInteger(
CommonClientConfigKey.MaxTotalConnections,
DefaultClientConfigImpl.DEFAULT_MAX_TOTAL_CONNECTIONS); DefaultClientConfigImpl.DEFAULT_MAX_TOTAL_CONNECTIONS);
Integer maxConnectionsPerHost = config.getPropertyAsInteger(CommonClientConfigKey.MaxConnectionsPerHost, Integer maxConnectionsPerHost = config.getPropertyAsInteger(
CommonClientConfigKey.MaxConnectionsPerHost,
DefaultClientConfigImpl.DEFAULT_MAX_CONNECTIONS_PER_HOST); DefaultClientConfigImpl.DEFAULT_MAX_CONNECTIONS_PER_HOST);
Integer timerRepeat = config.getPropertyAsInteger(CommonClientConfigKey.ConnectionCleanerRepeatInterval, Integer timerRepeat = config.getPropertyAsInteger(
CommonClientConfigKey.ConnectionCleanerRepeatInterval,
DefaultClientConfigImpl.DEFAULT_CONNECTION_IDLE_TIMERTASK_REPEAT_IN_MSECS); DefaultClientConfigImpl.DEFAULT_CONNECTION_IDLE_TIMERTASK_REPEAT_IN_MSECS);
Object timeToLiveObj = config.getProperty(CommonClientConfigKey.PoolKeepAliveTime); Object timeToLiveObj = config
.getProperty(CommonClientConfigKey.PoolKeepAliveTime);
Long timeToLive = DefaultClientConfigImpl.DEFAULT_POOL_KEEP_ALIVE_TIME; Long timeToLive = DefaultClientConfigImpl.DEFAULT_POOL_KEEP_ALIVE_TIME;
Object ttlUnitObj = config.getProperty(CommonClientConfigKey.PoolKeepAliveTimeUnits); Object ttlUnitObj = config
.getProperty(CommonClientConfigKey.PoolKeepAliveTimeUnits);
TimeUnit ttlUnit = DefaultClientConfigImpl.DEFAULT_POOL_KEEP_ALIVE_TIME_UNITS; TimeUnit ttlUnit = DefaultClientConfigImpl.DEFAULT_POOL_KEEP_ALIVE_TIME_UNITS;
if(timeToLiveObj instanceof Long) { if (timeToLiveObj instanceof Long) {
timeToLive = (Long)timeToLiveObj; timeToLive = (Long) timeToLiveObj;
} }
if(ttlUnitObj instanceof TimeUnit) { if (ttlUnitObj instanceof TimeUnit) {
ttlUnit = (TimeUnit)ttlUnitObj; ttlUnit = (TimeUnit) ttlUnitObj;
} }
final HttpClientConnectionManager connectionManager = connectionManagerFactory.newConnectionManager(false, maxTotalConnections, final HttpClientConnectionManager connectionManager = connectionManagerFactory
.newConnectionManager(false, maxTotalConnections,
maxConnectionsPerHost, timeToLive, ttlUnit, registryBuilder); maxConnectionsPerHost, timeToLive, ttlUnit, registryBuilder);
this.connectionManagerTimer.schedule(new TimerTask() { this.connectionManagerTimer.schedule(new TimerTask() {
@Override @Override
...@@ -178,18 +185,18 @@ public class RibbonClientConfiguration { ...@@ -178,18 +185,18 @@ public class RibbonClientConfiguration {
@Bean @Bean
public CloseableHttpClient httpClient(ApacheHttpClientFactory httpClientFactory, public CloseableHttpClient httpClient(ApacheHttpClientFactory httpClientFactory,
HttpClientConnectionManager connectionManager, IClientConfig config) { HttpClientConnectionManager connectionManager, IClientConfig config) {
Boolean followRedirects = config.getPropertyAsBoolean( Boolean followRedirects = config.getPropertyAsBoolean(
CommonClientConfigKey.FollowRedirects, CommonClientConfigKey.FollowRedirects,
DefaultClientConfigImpl.DEFAULT_FOLLOW_REDIRECTS); DefaultClientConfigImpl.DEFAULT_FOLLOW_REDIRECTS);
Integer connectTimeout = config.getPropertyAsInteger( Integer connectTimeout = config.getPropertyAsInteger(
CommonClientConfigKey.ConnectTimeout, CommonClientConfigKey.ConnectTimeout,
DefaultClientConfigImpl.DEFAULT_CONNECT_TIMEOUT); DefaultClientConfigImpl.DEFAULT_CONNECT_TIMEOUT);
RequestConfig defaultRequestConfig = RequestConfig.custom(). RequestConfig defaultRequestConfig = RequestConfig.custom()
setConnectTimeout(connectTimeout). .setConnectTimeout(connectTimeout)
setRedirectsEnabled(followRedirects). .setRedirectsEnabled(followRedirects).build();
build(); this.httpClient = httpClientFactory.createClient(defaultRequestConfig,
this.httpClient = httpClientFactory.createClient(defaultRequestConfig, connectionManager); connectionManager);
return httpClient; return httpClient;
} }
...@@ -211,9 +218,10 @@ public class RibbonClientConfiguration { ...@@ -211,9 +218,10 @@ public class RibbonClientConfiguration {
@ConditionalOnMissingClass(value = "org.springframework.retry.support.RetryTemplate") @ConditionalOnMissingClass(value = "org.springframework.retry.support.RetryTemplate")
public RibbonLoadBalancingHttpClient ribbonLoadBalancingHttpClient( public RibbonLoadBalancingHttpClient ribbonLoadBalancingHttpClient(
IClientConfig config, ServerIntrospector serverIntrospector, IClientConfig config, ServerIntrospector serverIntrospector,
ILoadBalancer loadBalancer, RetryHandler retryHandler, CloseableHttpClient httpClient) { ILoadBalancer loadBalancer, RetryHandler retryHandler,
RibbonLoadBalancingHttpClient client = new RibbonLoadBalancingHttpClient(httpClient, CloseableHttpClient httpClient) {
config, serverIntrospector); RibbonLoadBalancingHttpClient client = new RibbonLoadBalancingHttpClient(
httpClient, config, serverIntrospector);
client.setLoadBalancer(loadBalancer); client.setLoadBalancer(loadBalancer);
client.setRetryHandler(retryHandler); client.setRetryHandler(retryHandler);
Monitors.registerObject("Client_" + this.name, client); Monitors.registerObject("Client_" + this.name, client);
...@@ -228,8 +236,9 @@ public class RibbonClientConfiguration { ...@@ -228,8 +236,9 @@ public class RibbonClientConfiguration {
ILoadBalancer loadBalancer, RetryHandler retryHandler, ILoadBalancer loadBalancer, RetryHandler retryHandler,
LoadBalancedRetryPolicyFactory loadBalancedRetryPolicyFactory, LoadBalancedRetryPolicyFactory loadBalancedRetryPolicyFactory,
CloseableHttpClient httpClient) { CloseableHttpClient httpClient) {
RetryableRibbonLoadBalancingHttpClient client = new RetryableRibbonLoadBalancingHttpClient(httpClient, RetryableRibbonLoadBalancingHttpClient client = new RetryableRibbonLoadBalancingHttpClient(
config, serverIntrospector, loadBalancedRetryPolicyFactory); httpClient, config, serverIntrospector,
loadBalancedRetryPolicyFactory);
client.setLoadBalancer(loadBalancer); client.setLoadBalancer(loadBalancer);
client.setRetryHandler(retryHandler); client.setRetryHandler(retryHandler);
Monitors.registerObject("Client_" + this.name, client); Monitors.registerObject("Client_" + this.name, client);
...@@ -244,18 +253,15 @@ public class RibbonClientConfiguration { ...@@ -244,18 +253,15 @@ public class RibbonClientConfiguration {
@Value("${ribbon.client.name}") @Value("${ribbon.client.name}")
private String name = "client"; private String name = "client";
@Bean @Bean
@ConditionalOnMissingBean(AbstractLoadBalancerAwareClient.class) @ConditionalOnMissingBean(AbstractLoadBalancerAwareClient.class)
@ConditionalOnClass(name = "org.springframework.retry.support.RetryTemplate") @ConditionalOnClass(name = "org.springframework.retry.support.RetryTemplate")
public RetryableOkHttpLoadBalancingClient okHttpLoadBalancingClient(IClientConfig config, public RetryableOkHttpLoadBalancingClient okHttpLoadBalancingClient(
ServerIntrospector serverIntrospector, IClientConfig config, ServerIntrospector serverIntrospector,
ILoadBalancer loadBalancer, ILoadBalancer loadBalancer, RetryHandler retryHandler,
RetryHandler retryHandler, LoadBalancedRetryPolicyFactory loadBalancedRetryPolicyFactory) {
LoadBalancedRetryPolicyFactory loadBalancedRetryPolicyFactory) { RetryableOkHttpLoadBalancingClient client = new RetryableOkHttpLoadBalancingClient(
RetryableOkHttpLoadBalancingClient client = new RetryableOkHttpLoadBalancingClient(config, config, serverIntrospector, loadBalancedRetryPolicyFactory);
serverIntrospector, loadBalancedRetryPolicyFactory);
client.setLoadBalancer(loadBalancer); client.setLoadBalancer(loadBalancer);
client.setRetryHandler(retryHandler); client.setRetryHandler(retryHandler);
Monitors.registerObject("Client_" + this.name, client); Monitors.registerObject("Client_" + this.name, client);
...@@ -265,9 +271,9 @@ public class RibbonClientConfiguration { ...@@ -265,9 +271,9 @@ public class RibbonClientConfiguration {
@Bean @Bean
@ConditionalOnMissingBean(AbstractLoadBalancerAwareClient.class) @ConditionalOnMissingBean(AbstractLoadBalancerAwareClient.class)
@ConditionalOnMissingClass(value = "org.springframework.retry.support.RetryTemplate") @ConditionalOnMissingClass(value = "org.springframework.retry.support.RetryTemplate")
public OkHttpLoadBalancingClient retryableOkHttpLoadBalancingClient(IClientConfig config, public OkHttpLoadBalancingClient retryableOkHttpLoadBalancingClient(
ServerIntrospector serverIntrospector, ILoadBalancer loadBalancer, IClientConfig config, ServerIntrospector serverIntrospector,
RetryHandler retryHandler) { ILoadBalancer loadBalancer, RetryHandler retryHandler) {
OkHttpLoadBalancingClient client = new OkHttpLoadBalancingClient(config, OkHttpLoadBalancingClient client = new OkHttpLoadBalancingClient(config,
serverIntrospector); serverIntrospector);
client.setLoadBalancer(loadBalancer); client.setLoadBalancer(loadBalancer);
...@@ -284,21 +290,23 @@ public class RibbonClientConfiguration { ...@@ -284,21 +290,23 @@ public class RibbonClientConfiguration {
private String name = "client"; private String name = "client";
/** /**
* Create a Netflix {@link RestClient} integrated with Ribbon if none already exists * Create a Netflix {@link RestClient} integrated with Ribbon if none already
* in the application context. It is not required for Ribbon to work properly and is * exists in the application context. It is not required for Ribbon to work
* therefore created lazily if ever another component requires it. * properly and is therefore created lazily if ever another component requires it.
* *
* @param config the configuration to use by the underlying Ribbon instance * @param config the configuration to use by the underlying Ribbon instance
* @param loadBalancer the load balancer to use by the underlying Ribbon instance * @param loadBalancer the load balancer to use by the underlying Ribbon instance
* @param serverIntrospector server introspector to use by the underlying Ribbon instance * @param serverIntrospector server introspector to use by the underlying Ribbon
* @param retryHandler retry handler to use by the underlying Ribbon instance * instance
* @param retryHandler retry handler to use by the underlying Ribbon instance
* @return a {@link RestClient} instances backed by Ribbon * @return a {@link RestClient} instances backed by Ribbon
*/ */
@Bean @Bean
@Lazy @Lazy
@ConditionalOnMissingBean(AbstractLoadBalancerAwareClient.class) @ConditionalOnMissingBean(AbstractLoadBalancerAwareClient.class)
public RestClient ribbonRestClient(IClientConfig config, ILoadBalancer loadBalancer, public RestClient ribbonRestClient(IClientConfig config,
ServerIntrospector serverIntrospector, RetryHandler retryHandler) { ILoadBalancer loadBalancer, ServerIntrospector serverIntrospector,
RetryHandler retryHandler) {
RestClient client = new OverrideRestClient(config, serverIntrospector); RestClient client = new OverrideRestClient(config, serverIntrospector);
client.setLoadBalancer(loadBalancer); client.setLoadBalancer(loadBalancer);
client.setRetryHandler(retryHandler); client.setRetryHandler(retryHandler);
...@@ -339,8 +347,8 @@ public class RibbonClientConfiguration { ...@@ -339,8 +347,8 @@ public class RibbonClientConfiguration {
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public RibbonLoadBalancerContext ribbonLoadBalancerContext( public RibbonLoadBalancerContext ribbonLoadBalancerContext(ILoadBalancer loadBalancer,
ILoadBalancer loadBalancer, IClientConfig config, RetryHandler retryHandler) { IClientConfig config, RetryHandler retryHandler) {
return new RibbonLoadBalancerContext(loadBalancer, config, retryHandler); return new RibbonLoadBalancerContext(loadBalancer, config, retryHandler);
} }
...@@ -349,7 +357,7 @@ public class RibbonClientConfiguration { ...@@ -349,7 +357,7 @@ public class RibbonClientConfiguration {
public RetryHandler retryHandler(IClientConfig config) { public RetryHandler retryHandler(IClientConfig config) {
return new DefaultLoadBalancerRetryHandler(config); return new DefaultLoadBalancerRetryHandler(config);
} }
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public ServerIntrospector serverIntrospector() { public ServerIntrospector serverIntrospector() {
...@@ -376,18 +384,16 @@ public class RibbonClientConfiguration { ...@@ -376,18 +384,16 @@ public class RibbonClientConfiguration {
@Override @Override
public URI reconstructURIWithServer(Server server, URI original) { public URI reconstructURIWithServer(Server server, URI original) {
URI uri = updateToHttpsIfNeeded(original, this.config, this.serverIntrospector, server); URI uri = updateToHttpsIfNeeded(original, this.config,
this.serverIntrospector, server);
return super.reconstructURIWithServer(server, uri); return super.reconstructURIWithServer(server, uri);
} }
@Override @Override
protected Client apacheHttpClientSpecificInitialization() { protected Client apacheHttpClientSpecificInitialization() {
ApacheHttpClient4 apache = (ApacheHttpClient4) super ApacheHttpClient4 apache = (ApacheHttpClient4) super.apacheHttpClientSpecificInitialization();
.apacheHttpClientSpecificInitialization(); apache.getClientHandler().getHttpClient().getParams().setParameter(
apache.getClientHandler() ClientPNames.COOKIE_POLICY, CookiePolicy.IGNORE_COOKIES);
.getHttpClient()
.getParams()
.setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.IGNORE_COOKIES);
return apache; return apache;
} }
......
...@@ -48,75 +48,94 @@ import com.netflix.loadbalancer.Server; ...@@ -48,75 +48,94 @@ import com.netflix.loadbalancer.Server;
* An Apache HTTP client which leverages Spring Retry to retry failed requests. * An Apache HTTP client which leverages Spring Retry to retry failed requests.
* @author Ryan Baxter * @author Ryan Baxter
*/ */
public class RetryableRibbonLoadBalancingHttpClient extends RibbonLoadBalancingHttpClient implements ServiceInstanceChooser { public class RetryableRibbonLoadBalancingHttpClient extends RibbonLoadBalancingHttpClient
private LoadBalancedRetryPolicyFactory loadBalancedRetryPolicyFactory = implements ServiceInstanceChooser {
new LoadBalancedRetryPolicyFactory.NeverRetryFactory(); private LoadBalancedRetryPolicyFactory loadBalancedRetryPolicyFactory = new LoadBalancedRetryPolicyFactory.NeverRetryFactory();
public RetryableRibbonLoadBalancingHttpClient(IClientConfig config, ServerIntrospector serverIntrospector, public RetryableRibbonLoadBalancingHttpClient(IClientConfig config,
LoadBalancedRetryPolicyFactory loadBalancedRetryPolicyFactory) { ServerIntrospector serverIntrospector,
LoadBalancedRetryPolicyFactory loadBalancedRetryPolicyFactory) {
super(config, serverIntrospector); super(config, serverIntrospector);
this.loadBalancedRetryPolicyFactory = loadBalancedRetryPolicyFactory; this.loadBalancedRetryPolicyFactory = loadBalancedRetryPolicyFactory;
} }
public RetryableRibbonLoadBalancingHttpClient(CloseableHttpClient delegate, IClientConfig config, ServerIntrospector serverIntrospector,
LoadBalancedRetryPolicyFactory loadBalancedRetryPolicyFactory) { public RetryableRibbonLoadBalancingHttpClient(CloseableHttpClient delegate,
IClientConfig config, ServerIntrospector serverIntrospector,
LoadBalancedRetryPolicyFactory loadBalancedRetryPolicyFactory) {
super(delegate, config, serverIntrospector); super(delegate, config, serverIntrospector);
this.loadBalancedRetryPolicyFactory = loadBalancedRetryPolicyFactory; this.loadBalancedRetryPolicyFactory = loadBalancedRetryPolicyFactory;
} }
@Override @Override
public RibbonApacheHttpResponse execute(final RibbonApacheHttpRequest request, final IClientConfig configOverride) throws Exception { public RibbonApacheHttpResponse execute(final RibbonApacheHttpRequest request,
final IClientConfig configOverride) throws Exception {
final RequestConfig.Builder builder = RequestConfig.custom(); final RequestConfig.Builder builder = RequestConfig.custom();
IClientConfig config = configOverride != null ? configOverride : this.config; IClientConfig config = configOverride != null ? configOverride : this.config;
builder.setConnectTimeout(config.get( builder.setConnectTimeout(
CommonClientConfigKey.ConnectTimeout, this.connectTimeout)); config.get(CommonClientConfigKey.ConnectTimeout, this.connectTimeout));
builder.setSocketTimeout(config.get( builder.setSocketTimeout(
CommonClientConfigKey.ReadTimeout, this.readTimeout)); config.get(CommonClientConfigKey.ReadTimeout, this.readTimeout));
builder.setRedirectsEnabled(config.get( builder.setRedirectsEnabled(
CommonClientConfigKey.FollowRedirects, this.followRedirects)); config.get(CommonClientConfigKey.FollowRedirects, this.followRedirects));
final RequestConfig requestConfig = builder.build(); final RequestConfig requestConfig = builder.build();
final LoadBalancedRetryPolicy retryPolicy = loadBalancedRetryPolicyFactory.create(this.getClientName(), this); final LoadBalancedRetryPolicy retryPolicy = loadBalancedRetryPolicyFactory
.create(this.getClientName(), this);
RetryCallback retryCallback = new RetryCallback() { RetryCallback retryCallback = new RetryCallback() {
@Override @Override
public RibbonApacheHttpResponse doWithRetry(RetryContext context) throws Exception { public RibbonApacheHttpResponse doWithRetry(RetryContext context)
//on retries the policy will choose the server and set it in the context throws Exception {
//extract the server and update the request being made // on retries the policy will choose the server and set it in the context
// extract the server and update the request being made
RibbonApacheHttpRequest newRequest = request; RibbonApacheHttpRequest newRequest = request;
if(context instanceof LoadBalancedRetryContext) { if (context instanceof LoadBalancedRetryContext) {
ServiceInstance service = ((LoadBalancedRetryContext)context).getServiceInstance(); ServiceInstance service = ((LoadBalancedRetryContext) context)
if(service != null) { .getServiceInstance();
//Reconstruct the request URI using the host and port set in the retry context if (service != null) {
newRequest = newRequest.withNewUri(new URI(service.getUri().getScheme(), // Reconstruct the request URI using the host and port set in the
newRequest.getURI().getUserInfo(), service.getHost(), service.getPort(), // retry context
newRequest.getURI().getPath(), newRequest.getURI().getQuery(), newRequest = newRequest.withNewUri(new URI(
service.getUri().getScheme(),
newRequest.getURI().getUserInfo(), service.getHost(),
service.getPort(), newRequest.getURI().getPath(),
newRequest.getURI().getQuery(),
newRequest.getURI().getFragment())); newRequest.getURI().getFragment()));
} }
} }
if (isSecure(configOverride)) { if (isSecure(configOverride)) {
final URI secureUri = UriComponentsBuilder.fromUri(newRequest.getUri()) final URI secureUri = UriComponentsBuilder
.scheme("https").build().toUri(); .fromUri(newRequest.getUri()).scheme("https").build().toUri();
newRequest = newRequest.withNewUri(secureUri); newRequest = newRequest.withNewUri(secureUri);
} }
HttpUriRequest httpUriRequest = newRequest.toRequest(requestConfig); HttpUriRequest httpUriRequest = newRequest.toRequest(requestConfig);
final HttpResponse httpResponse = RetryableRibbonLoadBalancingHttpClient.this.delegate.execute(httpUriRequest); final HttpResponse httpResponse = RetryableRibbonLoadBalancingHttpClient.this.delegate
if(retryPolicy.retryableStatusCode(httpResponse.getStatusLine().getStatusCode())) { .execute(httpUriRequest);
if(CloseableHttpResponse.class.isInstance(httpResponse)) { if (retryPolicy.retryableStatusCode(
((CloseableHttpResponse)httpResponse).close(); httpResponse.getStatusLine().getStatusCode())) {
if (CloseableHttpResponse.class.isInstance(httpResponse)) {
((CloseableHttpResponse) httpResponse).close();
} }
throw new RetryableStatusCodeException(RetryableRibbonLoadBalancingHttpClient.this.clientName, throw new RetryableStatusCodeException(
RetryableRibbonLoadBalancingHttpClient.this.clientName,
httpResponse.getStatusLine().getStatusCode()); httpResponse.getStatusLine().getStatusCode());
} }
return new RibbonApacheHttpResponse(httpResponse, httpUriRequest.getURI()); return new RibbonApacheHttpResponse(httpResponse,
httpUriRequest.getURI());
} }
}; };
return this.executeWithRetry(request, retryPolicy, retryCallback); return this.executeWithRetry(request, retryPolicy, retryCallback);
} }
private RibbonApacheHttpResponse executeWithRetry(RibbonApacheHttpRequest request, LoadBalancedRetryPolicy retryPolicy, RetryCallback<RibbonApacheHttpResponse, IOException> callback) throws Exception { private RibbonApacheHttpResponse executeWithRetry(RibbonApacheHttpRequest request,
LoadBalancedRetryPolicy retryPolicy,
RetryCallback<RibbonApacheHttpResponse, IOException> callback)
throws Exception {
RetryTemplate retryTemplate = new RetryTemplate(); RetryTemplate retryTemplate = new RetryTemplate();
boolean retryable = request.getContext() == null ? true : boolean retryable = request.getContext() == null ? true
BooleanUtils.toBooleanDefaultIfNull(request.getContext().getRetryable(), true); : BooleanUtils.toBooleanDefaultIfNull(request.getContext().getRetryable(),
retryTemplate.setRetryPolicy(retryPolicy == null || !retryable ? new NeverRetryPolicy() true);
retryTemplate.setRetryPolicy(retryPolicy == null || !retryable
? new NeverRetryPolicy()
: new RetryPolicy(request, retryPolicy, this, this.getClientName())); : new RetryPolicy(request, retryPolicy, this, this.getClientName()));
return retryTemplate.execute(callback); return retryTemplate.execute(callback);
} }
...@@ -124,17 +143,18 @@ public class RetryableRibbonLoadBalancingHttpClient extends RibbonLoadBalancingH ...@@ -124,17 +143,18 @@ public class RetryableRibbonLoadBalancingHttpClient extends RibbonLoadBalancingH
@Override @Override
public ServiceInstance choose(String serviceId) { public ServiceInstance choose(String serviceId) {
Server server = this.getLoadBalancer().chooseServer(serviceId); Server server = this.getLoadBalancer().chooseServer(serviceId);
return new RibbonLoadBalancerClient.RibbonServer(serviceId, return new RibbonLoadBalancerClient.RibbonServer(serviceId, server);
server);
} }
@Override @Override
public RequestSpecificRetryHandler getRequestSpecificRetryHandler(RibbonApacheHttpRequest request, IClientConfig requestConfig) { public RequestSpecificRetryHandler getRequestSpecificRetryHandler(
RibbonApacheHttpRequest request, IClientConfig requestConfig) {
return new RequestSpecificRetryHandler(false, false, RetryHandler.DEFAULT, null); return new RequestSpecificRetryHandler(false, false, RetryHandler.DEFAULT, null);
} }
static class RetryPolicy extends FeignRetryPolicy { static class RetryPolicy extends FeignRetryPolicy {
public RetryPolicy(HttpRequest request, LoadBalancedRetryPolicy policy, ServiceInstanceChooser serviceInstanceChooser, String serviceName) { public RetryPolicy(HttpRequest request, LoadBalancedRetryPolicy policy,
ServiceInstanceChooser serviceInstanceChooser, String serviceName) {
super(request, policy, serviceInstanceChooser, serviceName); super(request, policy, serviceInstanceChooser, serviceName);
} }
} }
......
...@@ -38,26 +38,29 @@ import static org.springframework.cloud.netflix.ribbon.RibbonUtils.updateToHttps ...@@ -38,26 +38,29 @@ import static org.springframework.cloud.netflix.ribbon.RibbonUtils.updateToHttps
* @author Christian Lohmann * @author Christian Lohmann
* @author Ryan Baxter * @author Ryan Baxter
*/ */
//TODO: rename (ie new class that extends this in Dalston) to ApacheHttpLoadBalancingClient // TODO: rename (ie new class that extends this in Dalston) to ApacheHttpLoadBalancingClient
public class RibbonLoadBalancingHttpClient extends public class RibbonLoadBalancingHttpClient extends
AbstractLoadBalancingClient<RibbonApacheHttpRequest, RibbonApacheHttpResponse, CloseableHttpClient> { AbstractLoadBalancingClient<RibbonApacheHttpRequest, RibbonApacheHttpResponse, CloseableHttpClient> {
public RibbonLoadBalancingHttpClient(IClientConfig config, ServerIntrospector serverIntrospector) { public RibbonLoadBalancingHttpClient(IClientConfig config,
ServerIntrospector serverIntrospector) {
super(config, serverIntrospector); super(config, serverIntrospector);
} }
public RibbonLoadBalancingHttpClient(CloseableHttpClient delegate, IClientConfig config, ServerIntrospector serverIntrospector) { public RibbonLoadBalancingHttpClient(CloseableHttpClient delegate,
IClientConfig config, ServerIntrospector serverIntrospector) {
super(delegate, config, serverIntrospector); super(delegate, config, serverIntrospector);
} }
protected CloseableHttpClient createDelegate(IClientConfig config) { protected CloseableHttpClient createDelegate(IClientConfig config) {
return HttpClientBuilder.create() return HttpClientBuilder.create()
// already defaults to 0 in builder, so resetting to 0 won't hurt // already defaults to 0 in builder, so resetting to 0 won't hurt
.setMaxConnTotal(config.getPropertyAsInteger(CommonClientConfigKey.MaxTotalConnections, 0)) .setMaxConnTotal(config.getPropertyAsInteger(
CommonClientConfigKey.MaxTotalConnections, 0))
// already defaults to 0 in builder, so resetting to 0 won't hurt // already defaults to 0 in builder, so resetting to 0 won't hurt
.setMaxConnPerRoute(config.getPropertyAsInteger(CommonClientConfigKey.MaxConnectionsPerHost, 0)) .setMaxConnPerRoute(config.getPropertyAsInteger(
.disableCookieManagement() CommonClientConfigKey.MaxConnectionsPerHost, 0))
.useSystemProperties() // for proxy .disableCookieManagement().useSystemProperties() // for proxy
.build(); .build();
} }
...@@ -66,12 +69,12 @@ public class RibbonLoadBalancingHttpClient extends ...@@ -66,12 +69,12 @@ public class RibbonLoadBalancingHttpClient extends
final IClientConfig configOverride) throws Exception { final IClientConfig configOverride) throws Exception {
final RequestConfig.Builder builder = RequestConfig.custom(); final RequestConfig.Builder builder = RequestConfig.custom();
IClientConfig config = configOverride != null ? configOverride : this.config; IClientConfig config = configOverride != null ? configOverride : this.config;
builder.setConnectTimeout(config.get( builder.setConnectTimeout(
CommonClientConfigKey.ConnectTimeout, this.connectTimeout)); config.get(CommonClientConfigKey.ConnectTimeout, this.connectTimeout));
builder.setSocketTimeout(config.get( builder.setSocketTimeout(
CommonClientConfigKey.ReadTimeout, this.readTimeout)); config.get(CommonClientConfigKey.ReadTimeout, this.readTimeout));
builder.setRedirectsEnabled(config.get( builder.setRedirectsEnabled(
CommonClientConfigKey.FollowRedirects, this.followRedirects)); config.get(CommonClientConfigKey.FollowRedirects, this.followRedirects));
final RequestConfig requestConfig = builder.build(); final RequestConfig requestConfig = builder.build();
if (isSecure(configOverride)) { if (isSecure(configOverride)) {
...@@ -86,13 +89,15 @@ public class RibbonLoadBalancingHttpClient extends ...@@ -86,13 +89,15 @@ public class RibbonLoadBalancingHttpClient extends
@Override @Override
public URI reconstructURIWithServer(Server server, URI original) { public URI reconstructURIWithServer(Server server, URI original) {
URI uri = updateToHttpsIfNeeded(original, this.config, this.serverIntrospector, server); URI uri = updateToHttpsIfNeeded(original, this.config, this.serverIntrospector,
server);
return super.reconstructURIWithServer(server, uri); return super.reconstructURIWithServer(server, uri);
} }
@Override @Override
public RequestSpecificRetryHandler getRequestSpecificRetryHandler(RibbonApacheHttpRequest request, IClientConfig requestConfig) { public RequestSpecificRetryHandler getRequestSpecificRetryHandler(
return new RequestSpecificRetryHandler(false, false, RibbonApacheHttpRequest request, IClientConfig requestConfig) {
RetryHandler.DEFAULT, requestConfig); return new RequestSpecificRetryHandler(false, false, RetryHandler.DEFAULT,
requestConfig);
} }
} }
...@@ -63,7 +63,7 @@ import org.springframework.context.annotation.Import; ...@@ -63,7 +63,7 @@ import org.springframework.context.annotation.Import;
@Import({ RibbonCommandFactoryConfiguration.RestClientRibbonConfiguration.class, @Import({ RibbonCommandFactoryConfiguration.RestClientRibbonConfiguration.class,
RibbonCommandFactoryConfiguration.OkHttpRibbonConfiguration.class, RibbonCommandFactoryConfiguration.OkHttpRibbonConfiguration.class,
RibbonCommandFactoryConfiguration.HttpClientRibbonConfiguration.class, RibbonCommandFactoryConfiguration.HttpClientRibbonConfiguration.class,
HttpClientConfiguration.class}) HttpClientConfiguration.class })
@ConditionalOnBean(ZuulProxyMarkerConfiguration.Marker.class) @ConditionalOnBean(ZuulProxyMarkerConfiguration.Marker.class)
public class ZuulProxyAutoConfiguration extends ZuulServerAutoConfiguration { public class ZuulProxyAutoConfiguration extends ZuulServerAutoConfiguration {
...@@ -79,37 +79,42 @@ public class ZuulProxyAutoConfiguration extends ZuulServerAutoConfiguration { ...@@ -79,37 +79,42 @@ public class ZuulProxyAutoConfiguration extends ZuulServerAutoConfiguration {
@Override @Override
public HasFeatures zuulFeature() { public HasFeatures zuulFeature() {
return HasFeatures.namedFeature("Zuul (Discovery)", ZuulProxyAutoConfiguration.class); return HasFeatures.namedFeature("Zuul (Discovery)",
ZuulProxyAutoConfiguration.class);
} }
@Bean @Bean
@ConditionalOnMissingBean(DiscoveryClientRouteLocator.class) @ConditionalOnMissingBean(DiscoveryClientRouteLocator.class)
public DiscoveryClientRouteLocator discoveryRouteLocator() { public DiscoveryClientRouteLocator discoveryRouteLocator() {
return new DiscoveryClientRouteLocator(this.server.getServletPrefix(), this.discovery, this.zuulProperties, return new DiscoveryClientRouteLocator(this.server.getServletPrefix(),
this.serviceRouteMapper); this.discovery, this.zuulProperties, this.serviceRouteMapper);
} }
// pre filters // pre filters
@Bean @Bean
public PreDecorationFilter preDecorationFilter(RouteLocator routeLocator, ProxyRequestHelper proxyRequestHelper) { public PreDecorationFilter preDecorationFilter(RouteLocator routeLocator,
return new PreDecorationFilter(routeLocator, this.server.getServletPrefix(), this.zuulProperties, ProxyRequestHelper proxyRequestHelper) {
proxyRequestHelper); return new PreDecorationFilter(routeLocator, this.server.getServletPrefix(),
this.zuulProperties, proxyRequestHelper);
} }
// route filters // route filters
@Bean @Bean
public RibbonRoutingFilter ribbonRoutingFilter(ProxyRequestHelper helper, public RibbonRoutingFilter ribbonRoutingFilter(ProxyRequestHelper helper,
RibbonCommandFactory<?> ribbonCommandFactory) { RibbonCommandFactory<?> ribbonCommandFactory) {
RibbonRoutingFilter filter = new RibbonRoutingFilter(helper, ribbonCommandFactory, this.requestCustomizers); RibbonRoutingFilter filter = new RibbonRoutingFilter(helper, ribbonCommandFactory,
this.requestCustomizers);
return filter; return filter;
} }
@Bean @Bean
@ConditionalOnMissingBean(SimpleHostRoutingFilter.class) @ConditionalOnMissingBean(SimpleHostRoutingFilter.class)
public SimpleHostRoutingFilter simpleHostRoutingFilter(ProxyRequestHelper helper, ZuulProperties zuulProperties, public SimpleHostRoutingFilter simpleHostRoutingFilter(ProxyRequestHelper helper,
ApacheHttpClientConnectionManagerFactory connectionManagerFactory, ZuulProperties zuulProperties,
ApacheHttpClientFactory httpClientFactory) { ApacheHttpClientConnectionManagerFactory connectionManagerFactory,
return new SimpleHostRoutingFilter(helper, zuulProperties, connectionManagerFactory, httpClientFactory); ApacheHttpClientFactory httpClientFactory) {
return new SimpleHostRoutingFilter(helper, zuulProperties,
connectionManagerFactory, httpClientFactory);
} }
@Bean @Bean
...@@ -150,7 +155,8 @@ public class ZuulProxyAutoConfiguration extends ZuulServerAutoConfiguration { ...@@ -150,7 +155,8 @@ public class ZuulProxyAutoConfiguration extends ZuulServerAutoConfiguration {
} }
@Bean @Bean
public RoutesMvcEndpoint zuulMvcEndpoint(RouteLocator routeLocator, RoutesEndpoint endpoint) { public RoutesMvcEndpoint zuulMvcEndpoint(RouteLocator routeLocator,
RoutesEndpoint endpoint) {
return new RoutesMvcEndpoint(endpoint, routeLocator); return new RoutesMvcEndpoint(endpoint, routeLocator);
} }
...@@ -166,7 +172,8 @@ public class ZuulProxyAutoConfiguration extends ZuulServerAutoConfiguration { ...@@ -166,7 +172,8 @@ public class ZuulProxyAutoConfiguration extends ZuulServerAutoConfiguration {
} }
} }
private static class ZuulDiscoveryRefreshListener implements ApplicationListener<ApplicationEvent> { private static class ZuulDiscoveryRefreshListener
implements ApplicationListener<ApplicationEvent> {
private HeartbeatMonitor monitor = new HeartbeatMonitor(); private HeartbeatMonitor monitor = new HeartbeatMonitor();
......
...@@ -67,8 +67,8 @@ import static org.springframework.cloud.netflix.zuul.filters.support.FilterConst ...@@ -67,8 +67,8 @@ import static org.springframework.cloud.netflix.zuul.filters.support.FilterConst
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.SIMPLE_HOST_ROUTING_FILTER_ORDER; import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.SIMPLE_HOST_ROUTING_FILTER_ORDER;
/** /**
* Route {@link ZuulFilter} that sends requests to predetermined URLs via apache {@link HttpClient}. * Route {@link ZuulFilter} that sends requests to predetermined URLs via apache
* URLs are found in {@link RequestContext#getRouteHost()}. * {@link HttpClient}. URLs are found in {@link RequestContext#getRouteHost()}.
* *
* @author Spencer Gibb * @author Spencer Gibb
* @author Dave Syer * @author Dave Syer
...@@ -114,8 +114,8 @@ public class SimpleHostRoutingFilter extends ZuulFilter { ...@@ -114,8 +114,8 @@ public class SimpleHostRoutingFilter extends ZuulFilter {
} }
public SimpleHostRoutingFilter(ProxyRequestHelper helper, ZuulProperties properties, public SimpleHostRoutingFilter(ProxyRequestHelper helper, ZuulProperties properties,
ApacheHttpClientConnectionManagerFactory connectionManagerFactory, ApacheHttpClientConnectionManagerFactory connectionManagerFactory,
ApacheHttpClientFactory httpClientFactory) { ApacheHttpClientFactory httpClientFactory) {
this.helper = helper; this.helper = helper;
this.hostProperties = properties.getHost(); this.hostProperties = properties.getHost();
this.sslHostnameValidationEnabled = properties.isSslHostnameValidationEnabled(); this.sslHostnameValidationEnabled = properties.isSslHostnameValidationEnabled();
...@@ -127,9 +127,12 @@ public class SimpleHostRoutingFilter extends ZuulFilter { ...@@ -127,9 +127,12 @@ public class SimpleHostRoutingFilter extends ZuulFilter {
@PostConstruct @PostConstruct
private void initialize() { private void initialize() {
this.connectionManager = connectionManagerFactory.newConnectionManager(this.sslHostnameValidationEnabled, this.connectionManager = connectionManagerFactory.newConnectionManager(
this.hostProperties.getMaxTotalConnections(), this.hostProperties.getMaxPerRouteConnections(), this.sslHostnameValidationEnabled,
this.hostProperties.getTimeToLive(), this.hostProperties.getTimeUnit(), null); this.hostProperties.getMaxTotalConnections(),
this.hostProperties.getMaxPerRouteConnections(),
this.hostProperties.getTimeToLive(), this.hostProperties.getTimeUnit(),
null);
this.httpClient = newClient(); this.httpClient = newClient();
this.connectionManagerTimer.schedule(new TimerTask() { this.connectionManagerTimer.schedule(new TimerTask() {
@Override @Override
...@@ -220,9 +223,11 @@ public class SimpleHostRoutingFilter extends ZuulFilter { ...@@ -220,9 +223,11 @@ public class SimpleHostRoutingFilter extends ZuulFilter {
contentType = ContentType.parse(request.getContentType()); contentType = ContentType.parse(request.getContentType());
} }
InputStreamEntity entity = new InputStreamEntity(requestEntity, contentLength, contentType); InputStreamEntity entity = new InputStreamEntity(requestEntity, contentLength,
contentType);
HttpRequest httpRequest = buildHttpRequest(verb, uri, entity, headers, params, request); HttpRequest httpRequest = buildHttpRequest(verb, uri, entity, headers, params,
request);
try { try {
log.debug(httpHost.getHostName() + " " + httpHost.getPort() + " " log.debug(httpHost.getHostName() + " " + httpHost.getPort() + " "
+ httpHost.getSchemeName()); + httpHost.getSchemeName());
...@@ -248,30 +253,30 @@ public class SimpleHostRoutingFilter extends ZuulFilter { ...@@ -248,30 +253,30 @@ public class SimpleHostRoutingFilter extends ZuulFilter {
? getEncodedQueryString(request) : this.helper.getQueryString(params)); ? getEncodedQueryString(request) : this.helper.getQueryString(params));
switch (verb.toUpperCase()) { switch (verb.toUpperCase()) {
case "POST": case "POST":
HttpPost httpPost = new HttpPost(uriWithQueryString); HttpPost httpPost = new HttpPost(uriWithQueryString);
httpRequest = httpPost; httpRequest = httpPost;
httpPost.setEntity(entity); httpPost.setEntity(entity);
break; break;
case "PUT": case "PUT":
HttpPut httpPut = new HttpPut(uriWithQueryString); HttpPut httpPut = new HttpPut(uriWithQueryString);
httpRequest = httpPut; httpRequest = httpPut;
httpPut.setEntity(entity); httpPut.setEntity(entity);
break; break;
case "PATCH": case "PATCH":
HttpPatch httpPatch = new HttpPatch(uriWithQueryString); HttpPatch httpPatch = new HttpPatch(uriWithQueryString);
httpRequest = httpPatch; httpRequest = httpPatch;
httpPatch.setEntity(entity); httpPatch.setEntity(entity);
break; break;
case "DELETE": case "DELETE":
BasicHttpEntityEnclosingRequest entityRequest = new BasicHttpEntityEnclosingRequest( BasicHttpEntityEnclosingRequest entityRequest = new BasicHttpEntityEnclosingRequest(
verb, uriWithQueryString); verb, uriWithQueryString);
httpRequest = entityRequest; httpRequest = entityRequest;
entityRequest.setEntity(entity); entityRequest.setEntity(entity);
break; break;
default: default:
httpRequest = new BasicHttpRequest(verb, uriWithQueryString); httpRequest = new BasicHttpRequest(verb, uriWithQueryString);
log.debug(uriWithQueryString); log.debug(uriWithQueryString);
} }
httpRequest.setHeaders(convertHeaders(headers)); httpRequest.setHeaders(convertHeaders(headers));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment