Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
spring-cloud-netflix
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
openSource
spring-cloud-netflix
Commits
572305d7
Commit
572305d7
authored
Jun 28, 2017
by
Ryan Baxter
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixing code formatting
parent
2aa93abc
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
243 additions
and
193 deletions
+243
-193
FeignAutoConfiguration.java
...framework/cloud/netflix/feign/FeignAutoConfiguration.java
+18
-16
FeignRibbonClientAutoConfiguration.java
...flix/feign/ribbon/FeignRibbonClientAutoConfiguration.java
+22
-17
RibbonClientConfiguration.java
...ework/cloud/netflix/ribbon/RibbonClientConfiguration.java
+61
-55
RetryableRibbonLoadBalancingHttpClient.java
...ribbon/apache/RetryableRibbonLoadBalancingHttpClient.java
+61
-41
RibbonLoadBalancingHttpClient.java
.../netflix/ribbon/apache/RibbonLoadBalancingHttpClient.java
+22
-17
ZuulProxyAutoConfiguration.java
...mework/cloud/netflix/zuul/ZuulProxyAutoConfiguration.java
+21
-14
SimpleHostRoutingFilter.java
...d/netflix/zuul/filters/route/SimpleHostRoutingFilter.java
+38
-33
No files found.
spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignAutoConfiguration.java
View file @
572305d7
...
...
@@ -45,8 +45,6 @@ import feign.httpclient.ApacheHttpClient;
import
feign.okhttp.OkHttpClient
;
import
javax.annotation.PreDestroy
;
import
com.netflix.client.config.CommonClientConfigKey
;
import
com.netflix.client.config.DefaultClientConfigImpl
;
/**
* @author Spencer Gibb
...
...
@@ -54,7 +52,7 @@ import com.netflix.client.config.DefaultClientConfigImpl;
*/
@Configuration
@ConditionalOnClass
(
Feign
.
class
)
@EnableConfigurationProperties
({
FeignHttpClientProperties
.
class
})
@EnableConfigurationProperties
({
FeignHttpClientProperties
.
class
})
public
class
FeignAutoConfiguration
{
@Autowired
(
required
=
false
)
...
...
@@ -110,12 +108,14 @@ public class FeignAutoConfiguration {
private
CloseableHttpClient
httpClient
;
@Bean
public
HttpClientConnectionManager
connectionManager
(
ApacheHttpClientConnectionManagerFactory
connectionManagerFactory
,
FeignHttpClientProperties
httpClientProperties
)
{
final
HttpClientConnectionManager
connectionManager
=
connectionManagerFactory
.
newConnectionManager
(
false
,
httpClientProperties
.
getMaxConnections
(),
httpClientProperties
.
getMaxConnectionsPerRoute
(),
httpClientProperties
.
getTimeToLive
(),
httpClientProperties
.
getTimeToLiveUnit
(),
registryBuilder
);
public
HttpClientConnectionManager
connectionManager
(
ApacheHttpClientConnectionManagerFactory
connectionManagerFactory
,
FeignHttpClientProperties
httpClientProperties
)
{
final
HttpClientConnectionManager
connectionManager
=
connectionManagerFactory
.
newConnectionManager
(
false
,
httpClientProperties
.
getMaxConnections
(),
httpClientProperties
.
getMaxConnectionsPerRoute
(),
httpClientProperties
.
getTimeToLive
(),
httpClientProperties
.
getTimeToLiveUnit
(),
registryBuilder
);
this
.
connectionManagerTimer
.
schedule
(
new
TimerTask
()
{
@Override
public
void
run
()
{
...
...
@@ -126,13 +126,15 @@ public class FeignAutoConfiguration {
}
@Bean
public
CloseableHttpClient
httpClient
(
ApacheHttpClientFactory
httpClientFactory
,
HttpClientConnectionManager
httpClientConnectionManager
,
FeignHttpClientProperties
httpClientProperties
)
{
RequestConfig
defaultRequestConfig
=
RequestConfig
.
custom
().
setConnectTimeout
(
httpClientProperties
.
getConnectionTimeout
()).
setRedirectsEnabled
(
httpClientProperties
.
isFollowRedirects
()).
build
();
this
.
httpClient
=
httpClientFactory
.
createClient
(
defaultRequestConfig
,
httpClientConnectionManager
);
public
CloseableHttpClient
httpClient
(
ApacheHttpClientFactory
httpClientFactory
,
HttpClientConnectionManager
httpClientConnectionManager
,
FeignHttpClientProperties
httpClientProperties
)
{
RequestConfig
defaultRequestConfig
=
RequestConfig
.
custom
()
.
setConnectTimeout
(
httpClientProperties
.
getConnectionTimeout
())
.
setRedirectsEnabled
(
httpClientProperties
.
isFollowRedirects
())
.
build
();
this
.
httpClient
=
httpClientFactory
.
createClient
(
defaultRequestConfig
,
httpClientConnectionManager
);
return
this
.
httpClient
;
}
...
...
spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/ribbon/FeignRibbonClientAutoConfiguration.java
View file @
572305d7
...
...
@@ -59,7 +59,7 @@ import javax.annotation.PreDestroy;
@ConditionalOnClass
({
ILoadBalancer
.
class
,
Feign
.
class
})
@Configuration
@AutoConfigureBefore
(
FeignAutoConfiguration
.
class
)
@EnableConfigurationProperties
({
FeignHttpClientProperties
.
class
})
@EnableConfigurationProperties
({
FeignHttpClientProperties
.
class
})
public
class
FeignRibbonClientAutoConfiguration
{
@Bean
...
...
@@ -74,7 +74,8 @@ public class FeignRibbonClientAutoConfiguration {
@Primary
@ConditionalOnClass
(
name
=
"org.springframework.retry.support.RetryTemplate"
)
public
CachingSpringLoadBalancerFactory
retryabeCachingLBClientFactory
(
SpringClientFactory
factory
,
LoadBalancedRetryPolicyFactory
retryPolicyFactory
)
{
SpringClientFactory
factory
,
LoadBalancedRetryPolicyFactory
retryPolicyFactory
)
{
return
new
CachingSpringLoadBalancerFactory
(
factory
,
retryPolicyFactory
,
true
);
}
...
...
@@ -82,8 +83,8 @@ public class FeignRibbonClientAutoConfiguration {
@ConditionalOnMissingBean
public
Client
feignClient
(
CachingSpringLoadBalancerFactory
cachingFactory
,
SpringClientFactory
clientFactory
)
{
return
new
LoadBalancerFeignClient
(
new
Client
.
Default
(
null
,
null
),
c
achingFactory
,
c
lientFactory
);
return
new
LoadBalancerFeignClient
(
new
Client
.
Default
(
null
,
null
),
cachingFactory
,
clientFactory
);
}
@Bean
...
...
@@ -106,12 +107,14 @@ public class FeignRibbonClientAutoConfiguration {
private
RegistryBuilder
registryBuilder
;
@Bean
public
HttpClientConnectionManager
connectionManager
(
ApacheHttpClientConnectionManagerFactory
connectionManagerFactory
,
FeignHttpClientProperties
httpClientProperties
)
{
final
HttpClientConnectionManager
connectionManager
=
connectionManagerFactory
.
newConnectionManager
(
false
,
httpClientProperties
.
getMaxConnections
(),
httpClientProperties
.
getMaxConnectionsPerRoute
(),
httpClientProperties
.
getTimeToLive
(),
httpClientProperties
.
getTimeToLiveUnit
(),
registryBuilder
);
public
HttpClientConnectionManager
connectionManager
(
ApacheHttpClientConnectionManagerFactory
connectionManagerFactory
,
FeignHttpClientProperties
httpClientProperties
)
{
final
HttpClientConnectionManager
connectionManager
=
connectionManagerFactory
.
newConnectionManager
(
false
,
httpClientProperties
.
getMaxConnections
(),
httpClientProperties
.
getMaxConnectionsPerRoute
(),
httpClientProperties
.
getTimeToLive
(),
httpClientProperties
.
getTimeToLiveUnit
(),
registryBuilder
);
this
.
connectionManagerTimer
.
schedule
(
new
TimerTask
()
{
@Override
public
void
run
()
{
...
...
@@ -122,13 +125,15 @@ public class FeignRibbonClientAutoConfiguration {
}
@Bean
public
CloseableHttpClient
httpClient
(
ApacheHttpClientFactory
httpClientFactory
,
HttpClientConnectionManager
httpClientConnectionManager
,
FeignHttpClientProperties
httpClientProperties
)
{
RequestConfig
defaultRequestConfig
=
RequestConfig
.
custom
().
setConnectTimeout
(
httpClientProperties
.
getConnectionTimeout
()).
setRedirectsEnabled
(
httpClientProperties
.
isFollowRedirects
()).
build
();
this
.
httpClient
=
httpClientFactory
.
createClient
(
defaultRequestConfig
,
httpClientConnectionManager
);
public
CloseableHttpClient
httpClient
(
ApacheHttpClientFactory
httpClientFactory
,
HttpClientConnectionManager
httpClientConnectionManager
,
FeignHttpClientProperties
httpClientProperties
)
{
RequestConfig
defaultRequestConfig
=
RequestConfig
.
custom
()
.
setConnectTimeout
(
httpClientProperties
.
getConnectionTimeout
())
.
setRedirectsEnabled
(
httpClientProperties
.
isFollowRedirects
())
.
build
();
this
.
httpClient
=
httpClientFactory
.
createClient
(
defaultRequestConfig
,
httpClientConnectionManager
);
return
this
.
httpClient
;
}
...
...
spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/RibbonClientConfiguration.java
View file @
572305d7
...
...
@@ -146,26 +146,33 @@ public class RibbonClientConfiguration {
private
RegistryBuilder
registryBuilder
;
@Bean
public
HttpClientConnectionManager
httpClientConnectionManager
(
IClientConfig
config
,
ApacheHttpClientConnectionManagerFactory
connectionManagerFactory
,
ApacheHttpClientFactory
httpClientFactory
)
{
Integer
maxTotalConnections
=
config
.
getPropertyAsInteger
(
CommonClientConfigKey
.
MaxTotalConnections
,
public
HttpClientConnectionManager
httpClientConnectionManager
(
IClientConfig
config
,
ApacheHttpClientConnectionManagerFactory
connectionManagerFactory
,
ApacheHttpClientFactory
httpClientFactory
)
{
Integer
maxTotalConnections
=
config
.
getPropertyAsInteger
(
CommonClientConfigKey
.
MaxTotalConnections
,
DefaultClientConfigImpl
.
DEFAULT_MAX_TOTAL_CONNECTIONS
);
Integer
maxConnectionsPerHost
=
config
.
getPropertyAsInteger
(
CommonClientConfigKey
.
MaxConnectionsPerHost
,
Integer
maxConnectionsPerHost
=
config
.
getPropertyAsInteger
(
CommonClientConfigKey
.
MaxConnectionsPerHost
,
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
);
Object
timeToLiveObj
=
config
.
getProperty
(
CommonClientConfigKey
.
PoolKeepAliveTime
);
Object
timeToLiveObj
=
config
.
getProperty
(
CommonClientConfigKey
.
PoolKeepAliveTime
);
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
;
if
(
timeToLiveObj
instanceof
Long
)
{
timeToLive
=
(
Long
)
timeToLiveObj
;
if
(
timeToLiveObj
instanceof
Long
)
{
timeToLive
=
(
Long
)
timeToLiveObj
;
}
if
(
ttlUnitObj
instanceof
TimeUnit
)
{
ttlUnit
=
(
TimeUnit
)
ttlUnitObj
;
if
(
ttlUnitObj
instanceof
TimeUnit
)
{
ttlUnit
=
(
TimeUnit
)
ttlUnitObj
;
}
final
HttpClientConnectionManager
connectionManager
=
connectionManagerFactory
.
newConnectionManager
(
false
,
maxTotalConnections
,
final
HttpClientConnectionManager
connectionManager
=
connectionManagerFactory
.
newConnectionManager
(
false
,
maxTotalConnections
,
maxConnectionsPerHost
,
timeToLive
,
ttlUnit
,
registryBuilder
);
this
.
connectionManagerTimer
.
schedule
(
new
TimerTask
()
{
@Override
...
...
@@ -178,18 +185,18 @@ public class RibbonClientConfiguration {
@Bean
public
CloseableHttpClient
httpClient
(
ApacheHttpClientFactory
httpClientFactory
,
HttpClientConnectionManager
connectionManager
,
IClientConfig
config
)
{
HttpClientConnectionManager
connectionManager
,
IClientConfig
config
)
{
Boolean
followRedirects
=
config
.
getPropertyAsBoolean
(
CommonClientConfigKey
.
FollowRedirects
,
DefaultClientConfigImpl
.
DEFAULT_FOLLOW_REDIRECTS
);
Integer
connectTimeout
=
config
.
getPropertyAsInteger
(
CommonClientConfigKey
.
ConnectTimeout
,
DefaultClientConfigImpl
.
DEFAULT_CONNECT_TIMEOUT
);
RequestConfig
defaultRequestConfig
=
RequestConfig
.
custom
()
.
setConnectTimeout
(
connectTimeout
).
setRedirectsEnabled
(
followRedirects
).
build
();
this
.
httpClient
=
httpClientFactory
.
createClient
(
defaultRequestConfig
,
connectionManager
);
RequestConfig
defaultRequestConfig
=
RequestConfig
.
custom
()
.
setConnectTimeout
(
connectTimeout
)
.
setRedirectsEnabled
(
followRedirects
).
build
();
this
.
httpClient
=
httpClientFactory
.
createClient
(
defaultRequestConfig
,
connectionManager
);
return
httpClient
;
}
...
...
@@ -211,9 +218,10 @@ public class RibbonClientConfiguration {
@ConditionalOnMissingClass
(
value
=
"org.springframework.retry.support.RetryTemplate"
)
public
RibbonLoadBalancingHttpClient
ribbonLoadBalancingHttpClient
(
IClientConfig
config
,
ServerIntrospector
serverIntrospector
,
ILoadBalancer
loadBalancer
,
RetryHandler
retryHandler
,
CloseableHttpClient
httpClient
)
{
RibbonLoadBalancingHttpClient
client
=
new
RibbonLoadBalancingHttpClient
(
httpClient
,
config
,
serverIntrospector
);
ILoadBalancer
loadBalancer
,
RetryHandler
retryHandler
,
CloseableHttpClient
httpClient
)
{
RibbonLoadBalancingHttpClient
client
=
new
RibbonLoadBalancingHttpClient
(
httpClient
,
config
,
serverIntrospector
);
client
.
setLoadBalancer
(
loadBalancer
);
client
.
setRetryHandler
(
retryHandler
);
Monitors
.
registerObject
(
"Client_"
+
this
.
name
,
client
);
...
...
@@ -228,8 +236,9 @@ public class RibbonClientConfiguration {
ILoadBalancer
loadBalancer
,
RetryHandler
retryHandler
,
LoadBalancedRetryPolicyFactory
loadBalancedRetryPolicyFactory
,
CloseableHttpClient
httpClient
)
{
RetryableRibbonLoadBalancingHttpClient
client
=
new
RetryableRibbonLoadBalancingHttpClient
(
httpClient
,
config
,
serverIntrospector
,
loadBalancedRetryPolicyFactory
);
RetryableRibbonLoadBalancingHttpClient
client
=
new
RetryableRibbonLoadBalancingHttpClient
(
httpClient
,
config
,
serverIntrospector
,
loadBalancedRetryPolicyFactory
);
client
.
setLoadBalancer
(
loadBalancer
);
client
.
setRetryHandler
(
retryHandler
);
Monitors
.
registerObject
(
"Client_"
+
this
.
name
,
client
);
...
...
@@ -244,18 +253,15 @@ public class RibbonClientConfiguration {
@Value
(
"${ribbon.client.name}"
)
private
String
name
=
"client"
;
@Bean
@ConditionalOnMissingBean
(
AbstractLoadBalancerAwareClient
.
class
)
@ConditionalOnClass
(
name
=
"org.springframework.retry.support.RetryTemplate"
)
public
RetryableOkHttpLoadBalancingClient
okHttpLoadBalancingClient
(
IClientConfig
config
,
ServerIntrospector
serverIntrospector
,
ILoadBalancer
loadBalancer
,
RetryHandler
retryHandler
,
LoadBalancedRetryPolicyFactory
loadBalancedRetryPolicyFactory
)
{
RetryableOkHttpLoadBalancingClient
client
=
new
RetryableOkHttpLoadBalancingClient
(
config
,
serverIntrospector
,
loadBalancedRetryPolicyFactory
);
public
RetryableOkHttpLoadBalancingClient
okHttpLoadBalancingClient
(
IClientConfig
config
,
ServerIntrospector
serverIntrospector
,
ILoadBalancer
loadBalancer
,
RetryHandler
retryHandler
,
LoadBalancedRetryPolicyFactory
loadBalancedRetryPolicyFactory
)
{
RetryableOkHttpLoadBalancingClient
client
=
new
RetryableOkHttpLoadBalancingClient
(
config
,
serverIntrospector
,
loadBalancedRetryPolicyFactory
);
client
.
setLoadBalancer
(
loadBalancer
);
client
.
setRetryHandler
(
retryHandler
);
Monitors
.
registerObject
(
"Client_"
+
this
.
name
,
client
);
...
...
@@ -265,9 +271,9 @@ public class RibbonClientConfiguration {
@Bean
@ConditionalOnMissingBean
(
AbstractLoadBalancerAwareClient
.
class
)
@ConditionalOnMissingClass
(
value
=
"org.springframework.retry.support.RetryTemplate"
)
public
OkHttpLoadBalancingClient
retryableOkHttpLoadBalancingClient
(
IClientConfig
config
,
ServerIntrospector
serverIntrospector
,
ILoadBalancer
loadBalance
r
,
RetryHandler
retryHandler
)
{
public
OkHttpLoadBalancingClient
retryableOkHttpLoadBalancingClient
(
IClientConfig
config
,
ServerIntrospector
serverIntrospecto
r
,
ILoadBalancer
loadBalancer
,
RetryHandler
retryHandler
)
{
OkHttpLoadBalancingClient
client
=
new
OkHttpLoadBalancingClient
(
config
,
serverIntrospector
);
client
.
setLoadBalancer
(
loadBalancer
);
...
...
@@ -284,21 +290,23 @@ public class RibbonClientConfiguration {
private
String
name
=
"client"
;
/**
* Create a Netflix {@link RestClient} integrated with Ribbon if none already
exists
*
in the application context. It is not required for Ribbon to work properly and is
* therefore created lazily if ever another component requires it.
* Create a Netflix {@link RestClient} integrated with Ribbon if none already
*
exists in the application context. It is not required for Ribbon to work
*
properly and is
therefore created lazily if ever another component requires it.
*
* @param config the configuration 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 retryHandler retry handler 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 serverIntrospector server introspector to use by the underlying Ribbon
* instance
* @param retryHandler retry handler to use by the underlying Ribbon instance
* @return a {@link RestClient} instances backed by Ribbon
*/
@Bean
@Lazy
@ConditionalOnMissingBean
(
AbstractLoadBalancerAwareClient
.
class
)
public
RestClient
ribbonRestClient
(
IClientConfig
config
,
ILoadBalancer
loadBalancer
,
ServerIntrospector
serverIntrospector
,
RetryHandler
retryHandler
)
{
public
RestClient
ribbonRestClient
(
IClientConfig
config
,
ILoadBalancer
loadBalancer
,
ServerIntrospector
serverIntrospector
,
RetryHandler
retryHandler
)
{
RestClient
client
=
new
OverrideRestClient
(
config
,
serverIntrospector
);
client
.
setLoadBalancer
(
loadBalancer
);
client
.
setRetryHandler
(
retryHandler
);
...
...
@@ -339,8 +347,8 @@ public class RibbonClientConfiguration {
@Bean
@ConditionalOnMissingBean
public
RibbonLoadBalancerContext
ribbonLoadBalancerContext
(
I
LoadBalancer
loadBalancer
,
I
ClientConfig
config
,
RetryHandler
retryHandler
)
{
public
RibbonLoadBalancerContext
ribbonLoadBalancerContext
(
ILoadBalancer
loadBalancer
,
IClientConfig
config
,
RetryHandler
retryHandler
)
{
return
new
RibbonLoadBalancerContext
(
loadBalancer
,
config
,
retryHandler
);
}
...
...
@@ -349,7 +357,7 @@ public class RibbonClientConfiguration {
public
RetryHandler
retryHandler
(
IClientConfig
config
)
{
return
new
DefaultLoadBalancerRetryHandler
(
config
);
}
@Bean
@ConditionalOnMissingBean
public
ServerIntrospector
serverIntrospector
()
{
...
...
@@ -376,18 +384,16 @@ public class RibbonClientConfiguration {
@Override
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
);
}
@Override
protected
Client
apacheHttpClientSpecificInitialization
()
{
ApacheHttpClient4
apache
=
(
ApacheHttpClient4
)
super
.
apacheHttpClientSpecificInitialization
();
apache
.
getClientHandler
()
.
getHttpClient
()
.
getParams
()
.
setParameter
(
ClientPNames
.
COOKIE_POLICY
,
CookiePolicy
.
IGNORE_COOKIES
);
ApacheHttpClient4
apache
=
(
ApacheHttpClient4
)
super
.
apacheHttpClientSpecificInitialization
();
apache
.
getClientHandler
().
getHttpClient
().
getParams
().
setParameter
(
ClientPNames
.
COOKIE_POLICY
,
CookiePolicy
.
IGNORE_COOKIES
);
return
apache
;
}
...
...
spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/apache/RetryableRibbonLoadBalancingHttpClient.java
View file @
572305d7
...
...
@@ -48,75 +48,94 @@ import com.netflix.loadbalancer.Server;
* An Apache HTTP client which leverages Spring Retry to retry failed requests.
* @author Ryan Baxter
*/
public
class
RetryableRibbonLoadBalancingHttpClient
extends
RibbonLoadBalancingHttpClient
implements
ServiceInstanceChooser
{
private
LoadBalancedRetryPolicyFactory
loadBalancedRetryPolicyFactory
=
new
LoadBalancedRetryPolicyFactory
.
NeverRetryFactory
();
public
class
RetryableRibbonLoadBalancingHttpClient
extends
RibbonLoadBalancingHttpClient
implements
ServiceInstanceChooser
{
private
LoadBalancedRetryPolicyFactory
loadBalancedRetryPolicyFactory
=
new
LoadBalancedRetryPolicyFactory
.
NeverRetryFactory
();
public
RetryableRibbonLoadBalancingHttpClient
(
IClientConfig
config
,
ServerIntrospector
serverIntrospector
,
LoadBalancedRetryPolicyFactory
loadBalancedRetryPolicyFactory
)
{
public
RetryableRibbonLoadBalancingHttpClient
(
IClientConfig
config
,
ServerIntrospector
serverIntrospector
,
LoadBalancedRetryPolicyFactory
loadBalancedRetryPolicyFactory
)
{
super
(
config
,
serverIntrospector
);
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
);
this
.
loadBalancedRetryPolicyFactory
=
loadBalancedRetryPolicyFactory
;
}
@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
();
IClientConfig
config
=
configOverride
!=
null
?
configOverride
:
this
.
config
;
builder
.
setConnectTimeout
(
config
.
get
(
CommonClientConfigKey
.
ConnectTimeout
,
this
.
connectTimeout
));
builder
.
setSocketTimeout
(
config
.
get
(
CommonClientConfigKey
.
ReadTimeout
,
this
.
readTimeout
));
builder
.
setRedirectsEnabled
(
config
.
get
(
CommonClientConfigKey
.
FollowRedirects
,
this
.
followRedirects
));
builder
.
setConnectTimeout
(
config
.
get
(
CommonClientConfigKey
.
ConnectTimeout
,
this
.
connectTimeout
));
builder
.
setSocketTimeout
(
config
.
get
(
CommonClientConfigKey
.
ReadTimeout
,
this
.
readTimeout
));
builder
.
setRedirectsEnabled
(
config
.
get
(
CommonClientConfigKey
.
FollowRedirects
,
this
.
followRedirects
));
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
()
{
@Override
public
RibbonApacheHttpResponse
doWithRetry
(
RetryContext
context
)
throws
Exception
{
//on retries the policy will choose the server and set it in the context
//extract the server and update the request being made
public
RibbonApacheHttpResponse
doWithRetry
(
RetryContext
context
)
throws
Exception
{
// 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
;
if
(
context
instanceof
LoadBalancedRetryContext
)
{
ServiceInstance
service
=
((
LoadBalancedRetryContext
)
context
).
getServiceInstance
();
if
(
service
!=
null
)
{
//Reconstruct the request URI using the host and port set in the retry context
newRequest
=
newRequest
.
withNewUri
(
new
URI
(
service
.
getUri
().
getScheme
(),
newRequest
.
getURI
().
getUserInfo
(),
service
.
getHost
(),
service
.
getPort
(),
newRequest
.
getURI
().
getPath
(),
newRequest
.
getURI
().
getQuery
(),
if
(
context
instanceof
LoadBalancedRetryContext
)
{
ServiceInstance
service
=
((
LoadBalancedRetryContext
)
context
)
.
getServiceInstance
();
if
(
service
!=
null
)
{
// Reconstruct the request URI using the host and port set in the
// retry context
newRequest
=
newRequest
.
withNewUri
(
new
URI
(
service
.
getUri
().
getScheme
(),
newRequest
.
getURI
().
getUserInfo
(),
service
.
getHost
(),
service
.
getPort
(),
newRequest
.
getURI
().
getPath
(),
newRequest
.
getURI
().
getQuery
(),
newRequest
.
getURI
().
getFragment
()));
}
}
if
(
isSecure
(
configOverride
))
{
final
URI
secureUri
=
UriComponentsBuilder
.
fromUri
(
newRequest
.
getUri
())
.
scheme
(
"https"
).
build
().
toUri
();
final
URI
secureUri
=
UriComponentsBuilder
.
fromUri
(
newRequest
.
getUri
()).
scheme
(
"https"
).
build
().
toUri
();
newRequest
=
newRequest
.
withNewUri
(
secureUri
);
}
HttpUriRequest
httpUriRequest
=
newRequest
.
toRequest
(
requestConfig
);
final
HttpResponse
httpResponse
=
RetryableRibbonLoadBalancingHttpClient
.
this
.
delegate
.
execute
(
httpUriRequest
);
if
(
retryPolicy
.
retryableStatusCode
(
httpResponse
.
getStatusLine
().
getStatusCode
()))
{
if
(
CloseableHttpResponse
.
class
.
isInstance
(
httpResponse
))
{
((
CloseableHttpResponse
)
httpResponse
).
close
();
final
HttpResponse
httpResponse
=
RetryableRibbonLoadBalancingHttpClient
.
this
.
delegate
.
execute
(
httpUriRequest
);
if
(
retryPolicy
.
retryableStatusCode
(
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
());
}
return
new
RibbonApacheHttpResponse
(
httpResponse
,
httpUriRequest
.
getURI
());
return
new
RibbonApacheHttpResponse
(
httpResponse
,
httpUriRequest
.
getURI
());
}
};
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
();
boolean
retryable
=
request
.
getContext
()
==
null
?
true
:
BooleanUtils
.
toBooleanDefaultIfNull
(
request
.
getContext
().
getRetryable
(),
true
);
retryTemplate
.
setRetryPolicy
(
retryPolicy
==
null
||
!
retryable
?
new
NeverRetryPolicy
()
boolean
retryable
=
request
.
getContext
()
==
null
?
true
:
BooleanUtils
.
toBooleanDefaultIfNull
(
request
.
getContext
().
getRetryable
(),
true
);
retryTemplate
.
setRetryPolicy
(
retryPolicy
==
null
||
!
retryable
?
new
NeverRetryPolicy
()
:
new
RetryPolicy
(
request
,
retryPolicy
,
this
,
this
.
getClientName
()));
return
retryTemplate
.
execute
(
callback
);
}
...
...
@@ -124,17 +143,18 @@ public class RetryableRibbonLoadBalancingHttpClient extends RibbonLoadBalancingH
@Override
public
ServiceInstance
choose
(
String
serviceId
)
{
Server
server
=
this
.
getLoadBalancer
().
chooseServer
(
serviceId
);
return
new
RibbonLoadBalancerClient
.
RibbonServer
(
serviceId
,
server
);
return
new
RibbonLoadBalancerClient
.
RibbonServer
(
serviceId
,
server
);
}
@Override
public
RequestSpecificRetryHandler
getRequestSpecificRetryHandler
(
RibbonApacheHttpRequest
request
,
IClientConfig
requestConfig
)
{
public
RequestSpecificRetryHandler
getRequestSpecificRetryHandler
(
RibbonApacheHttpRequest
request
,
IClientConfig
requestConfig
)
{
return
new
RequestSpecificRetryHandler
(
false
,
false
,
RetryHandler
.
DEFAULT
,
null
);
}
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
);
}
}
...
...
spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/apache/RibbonLoadBalancingHttpClient.java
View file @
572305d7
...
...
@@ -38,26 +38,29 @@ import static org.springframework.cloud.netflix.ribbon.RibbonUtils.updateToHttps
* @author Christian Lohmann
* @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
AbstractLoadBalancingClient
<
RibbonApacheHttpRequest
,
RibbonApacheHttpResponse
,
CloseableHttpClient
>
{
public
RibbonLoadBalancingHttpClient
(
IClientConfig
config
,
ServerIntrospector
serverIntrospector
)
{
public
RibbonLoadBalancingHttpClient
(
IClientConfig
config
,
ServerIntrospector
serverIntrospector
)
{
super
(
config
,
serverIntrospector
);
}
public
RibbonLoadBalancingHttpClient
(
CloseableHttpClient
delegate
,
IClientConfig
config
,
ServerIntrospector
serverIntrospector
)
{
public
RibbonLoadBalancingHttpClient
(
CloseableHttpClient
delegate
,
IClientConfig
config
,
ServerIntrospector
serverIntrospector
)
{
super
(
delegate
,
config
,
serverIntrospector
);
}
protected
CloseableHttpClient
createDelegate
(
IClientConfig
config
)
{
return
HttpClientBuilder
.
create
()
// 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
.
setMaxConnPerRoute
(
config
.
getPropertyAsInteger
(
CommonClientConfigKey
.
MaxConnectionsPerHost
,
0
))
.
disableCookieManagement
(
)
.
useSystemProperties
()
// for proxy
.
setMaxConnPerRoute
(
config
.
getPropertyAsInteger
(
CommonClientConfigKey
.
MaxConnectionsPerHost
,
0
)
)
.
disableCookieManagement
().
useSystemProperties
()
// for proxy
.
build
();
}
...
...
@@ -66,12 +69,12 @@ public class RibbonLoadBalancingHttpClient extends
final
IClientConfig
configOverride
)
throws
Exception
{
final
RequestConfig
.
Builder
builder
=
RequestConfig
.
custom
();
IClientConfig
config
=
configOverride
!=
null
?
configOverride
:
this
.
config
;
builder
.
setConnectTimeout
(
config
.
get
(
CommonClientConfigKey
.
ConnectTimeout
,
this
.
connectTimeout
));
builder
.
setSocketTimeout
(
config
.
get
(
CommonClientConfigKey
.
ReadTimeout
,
this
.
readTimeout
));
builder
.
setRedirectsEnabled
(
config
.
get
(
CommonClientConfigKey
.
FollowRedirects
,
this
.
followRedirects
));
builder
.
setConnectTimeout
(
config
.
get
(
CommonClientConfigKey
.
ConnectTimeout
,
this
.
connectTimeout
));
builder
.
setSocketTimeout
(
config
.
get
(
CommonClientConfigKey
.
ReadTimeout
,
this
.
readTimeout
));
builder
.
setRedirectsEnabled
(
config
.
get
(
CommonClientConfigKey
.
FollowRedirects
,
this
.
followRedirects
));
final
RequestConfig
requestConfig
=
builder
.
build
();
if
(
isSecure
(
configOverride
))
{
...
...
@@ -86,13 +89,15 @@ public class RibbonLoadBalancingHttpClient extends
@Override
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
);
}
@Override
public
RequestSpecificRetryHandler
getRequestSpecificRetryHandler
(
RibbonApacheHttpRequest
request
,
IClientConfig
requestConfig
)
{
return
new
RequestSpecificRetryHandler
(
false
,
false
,
RetryHandler
.
DEFAULT
,
requestConfig
);
public
RequestSpecificRetryHandler
getRequestSpecificRetryHandler
(
RibbonApacheHttpRequest
request
,
IClientConfig
requestConfig
)
{
return
new
RequestSpecificRetryHandler
(
false
,
false
,
RetryHandler
.
DEFAULT
,
requestConfig
);
}
}
spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulProxyAutoConfiguration.java
View file @
572305d7
...
...
@@ -63,7 +63,7 @@ import org.springframework.context.annotation.Import;
@Import
({
RibbonCommandFactoryConfiguration
.
RestClientRibbonConfiguration
.
class
,
RibbonCommandFactoryConfiguration
.
OkHttpRibbonConfiguration
.
class
,
RibbonCommandFactoryConfiguration
.
HttpClientRibbonConfiguration
.
class
,
HttpClientConfiguration
.
class
})
HttpClientConfiguration
.
class
})
@ConditionalOnBean
(
ZuulProxyMarkerConfiguration
.
Marker
.
class
)
public
class
ZuulProxyAutoConfiguration
extends
ZuulServerAutoConfiguration
{
...
...
@@ -79,37 +79,42 @@ public class ZuulProxyAutoConfiguration extends ZuulServerAutoConfiguration {
@Override
public
HasFeatures
zuulFeature
()
{
return
HasFeatures
.
namedFeature
(
"Zuul (Discovery)"
,
ZuulProxyAutoConfiguration
.
class
);
return
HasFeatures
.
namedFeature
(
"Zuul (Discovery)"
,
ZuulProxyAutoConfiguration
.
class
);
}
@Bean
@ConditionalOnMissingBean
(
DiscoveryClientRouteLocator
.
class
)
public
DiscoveryClientRouteLocator
discoveryRouteLocator
()
{
return
new
DiscoveryClientRouteLocator
(
this
.
server
.
getServletPrefix
(),
this
.
discovery
,
this
.
zuulProperties
,
this
.
serviceRouteMapper
);
return
new
DiscoveryClientRouteLocator
(
this
.
server
.
getServletPrefix
(),
this
.
discovery
,
this
.
zuulProperties
,
this
.
serviceRouteMapper
);
}
// pre filters
@Bean
public
PreDecorationFilter
preDecorationFilter
(
RouteLocator
routeLocator
,
ProxyRequestHelper
proxyRequestHelper
)
{
return
new
PreDecorationFilter
(
routeLocator
,
this
.
server
.
getServletPrefix
(),
this
.
zuulProperties
,
proxyRequestHelper
);
public
PreDecorationFilter
preDecorationFilter
(
RouteLocator
routeLocator
,
ProxyRequestHelper
proxyRequestHelper
)
{
return
new
PreDecorationFilter
(
routeLocator
,
this
.
server
.
getServletPrefix
(),
this
.
zuulProperties
,
proxyRequestHelper
);
}
// route filters
@Bean
public
RibbonRoutingFilter
ribbonRoutingFilter
(
ProxyRequestHelper
helper
,
RibbonCommandFactory
<?>
ribbonCommandFactory
)
{
RibbonRoutingFilter
filter
=
new
RibbonRoutingFilter
(
helper
,
ribbonCommandFactory
,
this
.
requestCustomizers
);
RibbonRoutingFilter
filter
=
new
RibbonRoutingFilter
(
helper
,
ribbonCommandFactory
,
this
.
requestCustomizers
);
return
filter
;
}
@Bean
@ConditionalOnMissingBean
(
SimpleHostRoutingFilter
.
class
)
public
SimpleHostRoutingFilter
simpleHostRoutingFilter
(
ProxyRequestHelper
helper
,
ZuulProperties
zuulProperties
,
ApacheHttpClientConnectionManagerFactory
connectionManagerFactory
,
ApacheHttpClientFactory
httpClientFactory
)
{
return
new
SimpleHostRoutingFilter
(
helper
,
zuulProperties
,
connectionManagerFactory
,
httpClientFactory
);
public
SimpleHostRoutingFilter
simpleHostRoutingFilter
(
ProxyRequestHelper
helper
,
ZuulProperties
zuulProperties
,
ApacheHttpClientConnectionManagerFactory
connectionManagerFactory
,
ApacheHttpClientFactory
httpClientFactory
)
{
return
new
SimpleHostRoutingFilter
(
helper
,
zuulProperties
,
connectionManagerFactory
,
httpClientFactory
);
}
@Bean
...
...
@@ -150,7 +155,8 @@ public class ZuulProxyAutoConfiguration extends ZuulServerAutoConfiguration {
}
@Bean
public
RoutesMvcEndpoint
zuulMvcEndpoint
(
RouteLocator
routeLocator
,
RoutesEndpoint
endpoint
)
{
public
RoutesMvcEndpoint
zuulMvcEndpoint
(
RouteLocator
routeLocator
,
RoutesEndpoint
endpoint
)
{
return
new
RoutesMvcEndpoint
(
endpoint
,
routeLocator
);
}
...
...
@@ -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
();
...
...
spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/route/SimpleHostRoutingFilter.java
View file @
572305d7
...
...
@@ -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
;
/**
* Route {@link ZuulFilter} that sends requests to predetermined URLs via apache
{@link HttpClient}.
* URLs are found in {@link RequestContext#getRouteHost()}.
* Route {@link ZuulFilter} that sends requests to predetermined URLs via apache
*
{@link HttpClient}.
URLs are found in {@link RequestContext#getRouteHost()}.
*
* @author Spencer Gibb
* @author Dave Syer
...
...
@@ -114,8 +114,8 @@ public class SimpleHostRoutingFilter extends ZuulFilter {
}
public
SimpleHostRoutingFilter
(
ProxyRequestHelper
helper
,
ZuulProperties
properties
,
ApacheHttpClientConnectionManagerFactory
connectionManagerFactory
,
ApacheHttpClientFactory
httpClientFactory
)
{
ApacheHttpClientConnectionManagerFactory
connectionManagerFactory
,
ApacheHttpClientFactory
httpClientFactory
)
{
this
.
helper
=
helper
;
this
.
hostProperties
=
properties
.
getHost
();
this
.
sslHostnameValidationEnabled
=
properties
.
isSslHostnameValidationEnabled
();
...
...
@@ -127,9 +127,12 @@ public class SimpleHostRoutingFilter extends ZuulFilter {
@PostConstruct
private
void
initialize
()
{
this
.
connectionManager
=
connectionManagerFactory
.
newConnectionManager
(
this
.
sslHostnameValidationEnabled
,
this
.
hostProperties
.
getMaxTotalConnections
(),
this
.
hostProperties
.
getMaxPerRouteConnections
(),
this
.
hostProperties
.
getTimeToLive
(),
this
.
hostProperties
.
getTimeUnit
(),
null
);
this
.
connectionManager
=
connectionManagerFactory
.
newConnectionManager
(
this
.
sslHostnameValidationEnabled
,
this
.
hostProperties
.
getMaxTotalConnections
(),
this
.
hostProperties
.
getMaxPerRouteConnections
(),
this
.
hostProperties
.
getTimeToLive
(),
this
.
hostProperties
.
getTimeUnit
(),
null
);
this
.
httpClient
=
newClient
();
this
.
connectionManagerTimer
.
schedule
(
new
TimerTask
()
{
@Override
...
...
@@ -220,9 +223,11 @@ public class SimpleHostRoutingFilter extends ZuulFilter {
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
{
log
.
debug
(
httpHost
.
getHostName
()
+
" "
+
httpHost
.
getPort
()
+
" "
+
httpHost
.
getSchemeName
());
...
...
@@ -248,30 +253,30 @@ public class SimpleHostRoutingFilter extends ZuulFilter {
?
getEncodedQueryString
(
request
)
:
this
.
helper
.
getQueryString
(
params
));
switch
(
verb
.
toUpperCase
())
{
case
"POST"
:
HttpPost
httpPost
=
new
HttpPost
(
uriWithQueryString
);
httpRequest
=
httpPost
;
httpPost
.
setEntity
(
entity
);
break
;
case
"PUT"
:
HttpPut
httpPut
=
new
HttpPut
(
uriWithQueryString
);
httpRequest
=
httpPut
;
httpPut
.
setEntity
(
entity
);
break
;
case
"PATCH"
:
HttpPatch
httpPatch
=
new
HttpPatch
(
uriWithQueryString
);
httpRequest
=
httpPatch
;
httpPatch
.
setEntity
(
entity
);
break
;
case
"DELETE"
:
BasicHttpEntityEnclosingRequest
entityRequest
=
new
BasicHttpEntityEnclosingRequest
(
verb
,
uriWithQueryString
);
httpRequest
=
entityRequest
;
entityRequest
.
setEntity
(
entity
);
break
;
default
:
httpRequest
=
new
BasicHttpRequest
(
verb
,
uriWithQueryString
);
log
.
debug
(
uriWithQueryString
);
case
"POST"
:
HttpPost
httpPost
=
new
HttpPost
(
uriWithQueryString
);
httpRequest
=
httpPost
;
httpPost
.
setEntity
(
entity
);
break
;
case
"PUT"
:
HttpPut
httpPut
=
new
HttpPut
(
uriWithQueryString
);
httpRequest
=
httpPut
;
httpPut
.
setEntity
(
entity
);
break
;
case
"PATCH"
:
HttpPatch
httpPatch
=
new
HttpPatch
(
uriWithQueryString
);
httpRequest
=
httpPatch
;
httpPatch
.
setEntity
(
entity
);
break
;
case
"DELETE"
:
BasicHttpEntityEnclosingRequest
entityRequest
=
new
BasicHttpEntityEnclosingRequest
(
verb
,
uriWithQueryString
);
httpRequest
=
entityRequest
;
entityRequest
.
setEntity
(
entity
);
break
;
default
:
httpRequest
=
new
BasicHttpRequest
(
verb
,
uriWithQueryString
);
log
.
debug
(
uriWithQueryString
);
}
httpRequest
.
setHeaders
(
convertHeaders
(
headers
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment