@@ -67,8 +67,9 @@ import org.apache.http.util.EntityUtils
67
67
68
68
import java .net .URI
69
69
import java .util
70
+ import java .util .Locale
70
71
71
- import scala .collection .JavaConversions ._
72
+ import scala .collection .JavaConverters ._
72
73
73
74
abstract class AbstractHttpClient (clientConfig : ClientConfig , clientName : String )
74
75
extends Client
@@ -86,11 +87,12 @@ abstract class AbstractHttpClient(clientConfig: ClientConfig, clientName: String
86
87
.setMaxConnPerRoute(clientConfig.getMaxConnection / 2 )
87
88
.build
88
89
89
- if (clientConfig.getAuthenticationStrategy != null )
90
+ if (clientConfig.getAuthenticationStrategy != null ) {
90
91
clientConfig.getAuthenticationStrategy match {
91
92
case auth : AbstractAuthenticationStrategy => auth.setClient(this )
92
93
case _ =>
93
94
}
95
+ }
94
96
95
97
protected val (discovery, loadBalancer): (Option [Discovery ], Option [LoadBalancer ]) =
96
98
if (this .clientConfig.isDiscoveryEnabled) {
@@ -107,9 +109,9 @@ abstract class AbstractHttpClient(clientConfig: ClientConfig, clientName: String
107
109
clientConfig.isLoadbalancerEnabled && this .clientConfig.getLoadbalancerStrategy != null
108
110
) {
109
111
Some (this .clientConfig.getLoadbalancerStrategy.createLoadBalancer())
110
- } else if (clientConfig.isLoadbalancerEnabled)
112
+ } else if (clientConfig.isLoadbalancerEnabled) {
111
113
Some (DefaultLoadbalancerStrategy .createLoadBalancer())
112
- else None
114
+ } else None
113
115
loadBalancer match {
114
116
case Some (lb : AbstractLoadBalancer ) =>
115
117
discovery.foreach(_.addDiscoveryListener(lb))
@@ -158,12 +160,14 @@ abstract class AbstractHttpClient(clientConfig: ClientConfig, clientName: String
158
160
}
159
161
160
162
val response =
161
- if (! clientConfig.isRetryEnabled) addAttempt()
162
- else
163
+ if (! clientConfig.isRetryEnabled) {
164
+ addAttempt()
165
+ } else {
163
166
clientConfig.getRetryHandler.retry(
164
167
addAttempt(),
165
168
action.getClass.getSimpleName + " HttpRequest"
166
169
)
170
+ }
167
171
val beforeDeserializeTime = System .currentTimeMillis
168
172
responseToResult(response, action) match {
169
173
case metricResult : MetricResult =>
@@ -227,7 +231,7 @@ abstract class AbstractHttpClient(clientConfig: ClientConfig, clientName: String
227
231
if (cookies != null && cookies.nonEmpty) cookies.foreach(requestAction.addCookie)
228
232
val headers = authAction.authToHeaders
229
233
if (headers != null && ! headers.isEmpty) {
230
- headers.foreach { case (k, v) =>
234
+ headers.asScala. foreach { case (k, v) =>
231
235
if (k != null && v != null ) requestAction.addHeader(k.toString, v.toString)
232
236
}
233
237
}
@@ -254,28 +258,28 @@ abstract class AbstractHttpClient(clientConfig: ClientConfig, clientName: String
254
258
case delete : DeleteAction =>
255
259
val builder = new URIBuilder (realURL)
256
260
if (! delete.getParameters.isEmpty) {
257
- delete.getParameters.foreach { case (k, v) =>
261
+ delete.getParameters.asScala. foreach { case (k, v) =>
258
262
if (k != null && v != null ) builder.addParameter(k.toString, v.toString)
259
263
}
260
264
}
261
265
val httpDelete = new HttpDelete (builder.build())
262
- if (requestAction.getHeaders.nonEmpty) {
263
- requestAction.getHeaders.foreach { case (k, v) =>
266
+ if (requestAction.getHeaders.asScala. nonEmpty) {
267
+ requestAction.getHeaders.asScala. foreach { case (k, v) =>
264
268
if (k != null && v != null ) httpDelete.addHeader(k.toString, v.toString)
265
269
}
266
270
}
267
271
httpDelete
268
272
case put : PutAction =>
269
273
val httpPut = new HttpPut (realURL)
270
- if (put.getParameters.nonEmpty || put.getFormParams.nonEmpty) {
274
+ if (put.getParameters.asScala. nonEmpty || put.getFormParams.asScala .nonEmpty) {
271
275
val nameValuePairs = new util.ArrayList [NameValuePair ]
272
- if (put.getParameters.nonEmpty) {
273
- put.getParameters.foreach { case (k, v) =>
276
+ if (put.getParameters.asScala. nonEmpty) {
277
+ put.getParameters.asScala. foreach { case (k, v) =>
274
278
if (v != null ) nameValuePairs.add(new BasicNameValuePair (k, v.toString))
275
279
}
276
280
}
277
- if (put.getFormParams.nonEmpty) {
278
- put.getFormParams.foreach { case (k, v) =>
281
+ if (put.getFormParams.asScala. nonEmpty) {
282
+ put.getFormParams.asScala. foreach { case (k, v) =>
279
283
if (v != null ) nameValuePairs.add(new BasicNameValuePair (k, v.toString))
280
284
}
281
285
}
@@ -289,20 +293,21 @@ abstract class AbstractHttpClient(clientConfig: ClientConfig, clientName: String
289
293
httpPut.setEntity(stringEntity)
290
294
}
291
295
292
- if (requestAction.getHeaders.nonEmpty) {
293
- requestAction.getHeaders.foreach { case (k, v) =>
296
+ if (requestAction.getHeaders.asScala. nonEmpty) {
297
+ requestAction.getHeaders.asScala. foreach { case (k, v) =>
294
298
if (k != null && v != null ) httpPut.addHeader(k.toString, v.toString)
295
299
}
296
300
}
297
301
httpPut
298
302
case upload : UploadAction =>
299
303
val httpPost = new HttpPost (realURL)
300
304
val builder = MultipartEntityBuilder .create()
301
- if (upload.inputStreams != null )
302
- upload.inputStreams.foreach { case (k, v) =>
305
+ if (upload.inputStreams != null ) {
306
+ upload.inputStreams.asScala. foreach { case (k, v) =>
303
307
builder.addBinaryBody(k, v, ContentType .create(" multipart/form-data" ), k)
304
308
}
305
- upload.binaryBodies.foreach(binaryBody =>
309
+ }
310
+ upload.binaryBodies.asScala.foreach(binaryBody =>
306
311
builder.addBinaryBody(
307
312
binaryBody.parameterName,
308
313
binaryBody.inputStream,
@@ -312,14 +317,15 @@ abstract class AbstractHttpClient(clientConfig: ClientConfig, clientName: String
312
317
)
313
318
upload match {
314
319
case get : GetAction =>
315
- get.getParameters.retain((k, v) => v != null && k != null ).foreach { case (k, v) =>
316
- if (k != null && v != null ) builder.addTextBody(k.toString, v.toString)
320
+ get.getParameters.asScala.retain((k, v) => v != null && k != null ).foreach {
321
+ case (k, v) =>
322
+ if (k != null && v != null ) builder.addTextBody(k.toString, v.toString)
317
323
}
318
324
case _ =>
319
325
}
320
326
upload match {
321
327
case get : GetAction =>
322
- get.getHeaders.retain((k, v) => v != null && k != null ).foreach { case (k, v) =>
328
+ get.getHeaders.asScala. retain((k, v) => v != null && k != null ).foreach { case (k, v) =>
323
329
if (k != null && v != null ) httpPost.addHeader(k.toString, v.toString)
324
330
}
325
331
case _ =>
@@ -329,20 +335,20 @@ abstract class AbstractHttpClient(clientConfig: ClientConfig, clientName: String
329
335
httpPost
330
336
case post : POSTAction =>
331
337
val httpPost = new HttpPost (realURL)
332
- if (post.getParameters.nonEmpty || post.getFormParams.nonEmpty) {
338
+ if (post.getParameters.asScala. nonEmpty || post.getFormParams.asScala .nonEmpty) {
333
339
val nvps = new util.ArrayList [NameValuePair ]
334
- if (post.getParameters.nonEmpty) {
335
- post.getParameters.foreach { case (k, v) =>
340
+ if (post.getParameters.asScala. nonEmpty) {
341
+ post.getParameters.asScala. foreach { case (k, v) =>
336
342
if (v != null ) nvps.add(new BasicNameValuePair (k, v.toString))
337
343
}
338
344
httpPost.setEntity(new UrlEncodedFormEntity (nvps))
339
- } else if (post.getFormParams.nonEmpty) {
340
- post.getFormParams.foreach { case (k, v) =>
345
+ } else if (post.getFormParams.asScala. nonEmpty) {
346
+ post.getFormParams.asScala. foreach { case (k, v) =>
341
347
if (v != null ) nvps.add(new BasicNameValuePair (k, v.toString))
342
348
}
343
349
val entity : HttpEntity = EntityBuilder
344
350
.create()
345
- . /* setContentEncoding("UTF-8").*/
351
+ . /* setContentEncoding("UTF-8"). */
346
352
setContentType(ContentType .create(" application/x-www-form-urlencoded" , Consts .UTF_8 ))
347
353
.setParameters(nvps)
348
354
.build();
@@ -356,22 +362,22 @@ abstract class AbstractHttpClient(clientConfig: ClientConfig, clientName: String
356
362
httpPost.setEntity(stringEntity)
357
363
}
358
364
359
- if (requestAction.getHeaders.nonEmpty) {
360
- requestAction.getHeaders.foreach { case (k, v) =>
365
+ if (requestAction.getHeaders.asScala. nonEmpty) {
366
+ requestAction.getHeaders.asScala. foreach { case (k, v) =>
361
367
if (k != null && v != null ) httpPost.addHeader(k.toString, v.toString)
362
368
}
363
369
}
364
370
httpPost
365
371
case get : GetAction =>
366
372
val builder = new URIBuilder (realURL)
367
373
if (! get.getParameters.isEmpty) {
368
- get.getParameters.foreach { case (k, v) =>
374
+ get.getParameters.asScala. foreach { case (k, v) =>
369
375
if (k != null && v != null ) builder.addParameter(k.toString, v.toString)
370
376
}
371
377
}
372
378
val httpGet = new HttpGet (builder.build())
373
- if (requestAction.getHeaders.nonEmpty) {
374
- requestAction.getHeaders.foreach { case (k, v) =>
379
+ if (requestAction.getHeaders.asScala. nonEmpty) {
380
+ requestAction.getHeaders.asScala. foreach { case (k, v) =>
375
381
if (k != null && v != null ) httpGet.addHeader(k.toString, v.toString)
376
382
}
377
383
}
@@ -382,8 +388,8 @@ abstract class AbstractHttpClient(clientConfig: ClientConfig, clientName: String
382
388
stringEntity.setContentEncoding(Configuration .BDP_ENCODING .getValue)
383
389
stringEntity.setContentType(" application/json" )
384
390
httpost.setEntity(stringEntity)
385
- if (requestAction.getHeaders.nonEmpty) {
386
- requestAction.getHeaders.foreach { case (k, v) =>
391
+ if (requestAction.getHeaders.asScala. nonEmpty) {
392
+ requestAction.getHeaders.asScala. foreach { case (k, v) =>
387
393
if (k != null && v != null ) httpost.addHeader(k.toString, v.toString)
388
394
}
389
395
}
@@ -400,9 +406,9 @@ abstract class AbstractHttpClient(clientConfig: ClientConfig, clientName: String
400
406
): CloseableHttpResponse = {
401
407
val readTimeOut = waitTime.getOrElse(clientConfig.getReadTimeout)
402
408
val connectTimeOut =
403
- if (clientConfig.getConnectTimeout > 1000 || clientConfig.getConnectTimeout < 0 )
409
+ if (clientConfig.getConnectTimeout > 1000 || clientConfig.getConnectTimeout < 0 ) {
404
410
clientConfig.getConnectTimeout
405
- else CONNECT_TIME_OUT
411
+ } else CONNECT_TIME_OUT
406
412
val requestConfig = RequestConfig .custom
407
413
.setConnectTimeout(connectTimeOut.toInt)
408
414
.setConnectionRequestTimeout(connectTimeOut.toInt)
@@ -455,9 +461,9 @@ abstract class AbstractHttpClient(clientConfig: ClientConfig, clientName: String
455
461
): CloseableHttpResponse = {
456
462
val readTimeOut = waitTime.getOrElse(clientConfig.getReadTimeout)
457
463
val connectTimeOut =
458
- if (clientConfig.getConnectTimeout > 1000 || clientConfig.getConnectTimeout < 0 )
464
+ if (clientConfig.getConnectTimeout > 1000 || clientConfig.getConnectTimeout < 0 ) {
459
465
clientConfig.getConnectTimeout
460
- else CONNECT_TIME_OUT
466
+ } else CONNECT_TIME_OUT
461
467
val requestConfig = RequestConfig .custom
462
468
.setConnectTimeout(connectTimeOut.toInt)
463
469
.setConnectionRequestTimeout(connectTimeOut.toInt)
@@ -485,15 +491,16 @@ abstract class AbstractHttpClient(clientConfig: ClientConfig, clientName: String
485
491
entity.getContentEncoding != null && StringUtils .isNotBlank(
486
492
entity.getContentEncoding.getValue
487
493
)
488
- ) entity.getContentEncoding.getValue.toLowerCase match {
489
- case " gzip" => new GzipDecompressingEntity (entity).getContent
490
- case " deflate" => new DeflateDecompressingEntity (entity).getContent
491
- case str =>
492
- throw new HttpClientResultException (
493
- s " request failed! Reason: not support decompress type $str. "
494
- )
495
- }
496
- else entity.getContent
494
+ ) {
495
+ entity.getContentEncoding.getValue.toLowerCase(Locale .getDefault) match {
496
+ case " gzip" => new GzipDecompressingEntity (entity).getContent
497
+ case " deflate" => new DeflateDecompressingEntity (entity).getContent
498
+ case str =>
499
+ throw new HttpClientResultException (
500
+ s " request failed! Reason: not support decompress type $str. "
501
+ )
502
+ }
503
+ } else entity.getContent
497
504
download.write(inputStream, response)
498
505
Result ()
499
506
case heartbeat : HeartbeatAction =>
0 commit comments