diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1e134d3..e9dfce0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,16 @@
Parallec Change Log
==========
+
+
+## Version 0.20.0-SNAPSHOT
+
+_2016-09-30_
+
+* Issue [#37](https://github.com/eBay/parallec/issues/37). Upgraded Async-http-client to version 2.0.15. This version has not been tested in PROD environment. The client auth plugin is to be tested. The code is in branch `issue37`
+
+
+
## Version 0.10.1-beta
diff --git a/pom.xml b/pom.xml
index b86daa4..704d768 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
io.parallec
parallec-core
- 0.10.1-beta
+ 0.20.1-SNAPSHOT
jar
io.parallec:parallec-core
https://github.com/eBay/parallec
@@ -56,7 +56,7 @@
1.10
2.3
- 1.6.5
+ 2.0.15
2.3.3
2.3.3
@@ -119,11 +119,18 @@
commons-lang3
${commons-lang3.version}
-
+
+
+ org.asynchttpclient
+ async-http-client
+ ${async-http-client.version}
+
+
+
com.typesafe.akka
akka-actor_2.10
@@ -205,8 +212,8 @@
org.apache.maven.plugins
maven-compiler-plugin
- 1.7
- 1.7
+ 1.8
+ 1.8
@@ -257,8 +264,8 @@
org.apache.maven.plugins
maven-compiler-plugin
- 1.6
- 1.6
+ 1.8
+ 1.8
diff --git a/src/main/java/io/parallec/core/ParallelClient.java b/src/main/java/io/parallec/core/ParallelClient.java
index d3b41d1..db116ef 100644
--- a/src/main/java/io/parallec/core/ParallelClient.java
+++ b/src/main/java/io/parallec/core/ParallelClient.java
@@ -25,7 +25,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.ning.http.client.AsyncHttpClient;
+import org.asynchttpclient.AsyncHttpClient;
/**
*
diff --git a/src/main/java/io/parallec/core/ParallelTask.java b/src/main/java/io/parallec/core/ParallelTask.java
index 53a08b0..df12284 100644
--- a/src/main/java/io/parallec/core/ParallelTask.java
+++ b/src/main/java/io/parallec/core/ParallelTask.java
@@ -52,7 +52,7 @@
import akka.actor.ActorRef;
-import com.ning.http.client.AsyncHttpClient;
+import org.asynchttpclient.AsyncHttpClient;
/**
* The key class represents a onetime execution on multiple requests. It
diff --git a/src/main/java/io/parallec/core/ParallelTaskBuilder.java b/src/main/java/io/parallec/core/ParallelTaskBuilder.java
index dbafb2d..a136863 100644
--- a/src/main/java/io/parallec/core/ParallelTaskBuilder.java
+++ b/src/main/java/io/parallec/core/ParallelTaskBuilder.java
@@ -48,7 +48,7 @@
import org.slf4j.LoggerFactory;
import com.google.common.base.Strings;
-import com.ning.http.client.AsyncHttpClient;
+import org.asynchttpclient.AsyncHttpClient;
// TODO: Auto-generated Javadoc
diff --git a/src/main/java/io/parallec/core/actor/ExecutionManager.java b/src/main/java/io/parallec/core/actor/ExecutionManager.java
index c754b35..1cca6cb 100644
--- a/src/main/java/io/parallec/core/actor/ExecutionManager.java
+++ b/src/main/java/io/parallec/core/actor/ExecutionManager.java
@@ -68,7 +68,7 @@
import akka.actor.UntypedActor;
import com.google.common.base.Strings;
-import com.ning.http.client.AsyncHttpClient;
+import org.asynchttpclient.AsyncHttpClient;
/**
* This is the Akka Actor that executes the ParallelTask.
diff --git a/src/main/java/io/parallec/core/actor/HttpWorker.java b/src/main/java/io/parallec/core/actor/HttpWorker.java
index c8f6775..49e5715 100644
--- a/src/main/java/io/parallec/core/actor/HttpWorker.java
+++ b/src/main/java/io/parallec/core/actor/HttpWorker.java
@@ -24,7 +24,7 @@
import io.parallec.core.util.PcHttpUtils;
import io.parallec.core.util.PcStringUtils;
-import java.io.IOException;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
@@ -32,6 +32,11 @@
import java.util.Map;
import java.util.concurrent.TimeUnit;
+import org.asynchttpclient.AsyncCompletionHandler;
+import org.asynchttpclient.AsyncHttpClient;
+import org.asynchttpclient.BoundRequestBuilder;
+import org.asynchttpclient.ListenableFuture;
+import org.asynchttpclient.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -43,13 +48,7 @@
import akka.actor.UntypedActor;
import com.google.common.base.Strings;
-import com.ning.http.client.AsyncCompletionHandler;
-import com.ning.http.client.AsyncHttpClient;
-import com.ning.http.client.AsyncHttpClient.BoundRequestBuilder;
-import com.ning.http.client.ListenableFuture;
-import com.ning.http.client.Response;
-// TODO: Auto-generated Javadoc
/**
* This is an akka actor with async http client.
*
@@ -367,18 +366,24 @@ public ResponseOnSingeRequest onComplete(Response response) {
cancelCancellable();
try {
Map> responseHeaders = null;
+ //TODO FIX NOT TESTED
if (responseHeaderMeta != null) {
responseHeaders = new LinkedHashMap>();
if (responseHeaderMeta.isGetAll()) {
- for (Map.Entry> header : response
- .getHeaders()) {
- responseHeaders.put(header.getKey().toLowerCase(Locale.ROOT), header.getValue());
+ for (Map.Entry header : response.getHeaders()
+ .entries()) {
+ List list = new ArrayList();
+ list.add( header.getValue());
+ responseHeaders.put(header.getKey().toLowerCase(Locale.ROOT),
+ list);
}
} else {
for (String key : responseHeaderMeta.getKeys()) {
- if (response.getHeaders().containsKey(key)) {
+ if (response.getHeaders().contains(key)) {
+ List list = new ArrayList();
+ list.add(response.getHeaders().get(key));
responseHeaders.put(key.toLowerCase(Locale.ROOT),
- response.getHeaders().get(key));
+ list );
}
}
}
@@ -389,7 +394,7 @@ public ResponseOnSingeRequest onComplete(Response response) {
reply(response.getResponseBody(), false, null, null, statusCode,
statusCodeInt, responseHeaders);
- } catch (IOException e) {
+ } catch (Exception e) {
getLogger().error("fail response.getResponseBody " + e);
}
diff --git a/src/main/java/io/parallec/core/actor/OperationWorker.java b/src/main/java/io/parallec/core/actor/OperationWorker.java
index 8c663d4..7785038 100644
--- a/src/main/java/io/parallec/core/actor/OperationWorker.java
+++ b/src/main/java/io/parallec/core/actor/OperationWorker.java
@@ -43,7 +43,7 @@
import akka.actor.Props;
import akka.actor.UntypedActor;
-import com.ning.http.client.AsyncHttpClient;
+import org.asynchttpclient.AsyncHttpClient;
diff --git a/src/main/java/io/parallec/core/bean/HttpMeta.java b/src/main/java/io/parallec/core/bean/HttpMeta.java
index 9d96ffa..1e993f0 100644
--- a/src/main/java/io/parallec/core/bean/HttpMeta.java
+++ b/src/main/java/io/parallec/core/bean/HttpMeta.java
@@ -19,11 +19,10 @@
import io.parallec.core.resources.HttpMethod;
import io.parallec.core.util.PcConstants;
+import org.asynchttpclient.AsyncHttpClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.ning.http.client.AsyncHttpClient;
-
// TODO: Auto-generated Javadoc
/**
* The metadata about the HTTP request (url/port/header/concurrency etc) It does
diff --git a/src/main/java/io/parallec/core/resources/AsyncHttpClientFactoryEmbed.java b/src/main/java/io/parallec/core/resources/AsyncHttpClientFactoryEmbed.java
index 03b5bf2..5126846 100644
--- a/src/main/java/io/parallec/core/resources/AsyncHttpClientFactoryEmbed.java
+++ b/src/main/java/io/parallec/core/resources/AsyncHttpClientFactoryEmbed.java
@@ -32,12 +32,13 @@
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
+import org.asynchttpclient.AsyncHttpClient;
+import org.asynchttpclient.AsyncHttpClientConfig;
+import org.asynchttpclient.DefaultAsyncHttpClient;
+import org.asynchttpclient.DefaultAsyncHttpClientConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.ning.http.client.AsyncHttpClient;
-import com.ning.http.client.AsyncHttpClientConfigBean;
-
/**
* The Class HttpClientFactoryEmbed.
@@ -65,29 +66,28 @@ public AsyncHttpClientFactoryEmbed() {
try {
// create and configure async http client
- AsyncHttpClientConfigBean configFastClient = new AsyncHttpClientConfigBean();
-
+ AsyncHttpClientConfig configFastClient = new DefaultAsyncHttpClientConfig.Builder()
+ .setConnectTimeout(ParallecGlobalConfig.ningFastClientConnectionTimeoutMillis)
+ .setRequestTimeout(ParallecGlobalConfig.ningFastClientConnectionTimeoutMillis)
+ .build();
logger.info(
"FastClient: ningFastClientConnectionTimeoutMillis: {}",
ParallecGlobalConfig.ningFastClientConnectionTimeoutMillis);
- configFastClient
- .setConnectionTimeOutInMs(ParallecGlobalConfig.ningFastClientConnectionTimeoutMillis);
-
+
logger.info("FastClient: ningFastClientRequestTimeoutMillis: {}",
ParallecGlobalConfig.ningFastClientRequestTimeoutMillis);
- configFastClient
- .setRequestTimeoutInMs(ParallecGlobalConfig.ningFastClientRequestTimeoutMillis);
- fastClient = new AsyncHttpClient(configFastClient);
+ fastClient = new DefaultAsyncHttpClient(configFastClient);
+
// TODO added
// configFastClient.setMaxRequestRetry(3);
- AsyncHttpClientConfigBean configSlowClient = new AsyncHttpClientConfigBean();
- configSlowClient
- .setConnectionTimeOutInMs(ParallecGlobalConfig.ningSlowClientConnectionTimeoutMillis);
- configSlowClient
- .setRequestTimeoutInMs(ParallecGlobalConfig.ningSlowClientRequestTimeoutMillis);
- slowClient = new AsyncHttpClient(configSlowClient);
+ //TODO UNTESTED
+ AsyncHttpClientConfig configSlowClient = new DefaultAsyncHttpClientConfig.Builder()
+ .setConnectTimeout(ParallecGlobalConfig.ningSlowClientConnectionTimeoutMillis)
+ .setRequestTimeout(ParallecGlobalConfig.ningSlowClientRequestTimeoutMillis)
+ .build();
+ slowClient = new DefaultAsyncHttpClient(configSlowClient);
disableCertificateVerification();
} catch (Exception e) {
diff --git a/src/main/java/io/parallec/core/resources/HttpClientStore.java b/src/main/java/io/parallec/core/resources/HttpClientStore.java
index 0d6349f..2d4481e 100644
--- a/src/main/java/io/parallec/core/resources/HttpClientStore.java
+++ b/src/main/java/io/parallec/core/resources/HttpClientStore.java
@@ -12,11 +12,14 @@
*/
package io.parallec.core.resources;
+import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
-import com.ning.http.client.AsyncHttpClient;
+import org.asynchttpclient.AsyncHttpClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
@@ -35,6 +38,10 @@
*/
public class HttpClientStore {
+ /** The logger. */
+ private static Logger logger = LoggerFactory
+ .getLogger(HttpClientStore.class);
+
/** The http client type current default. */
private HttpClientType httpClientTypeCurrentDefault;
@@ -93,7 +100,11 @@ public void shutdown() {
for (Entry entry : map.entrySet()) {
AsyncHttpClient client = entry.getValue();
if (client != null)
- client.close();
+ try {
+ client.close();
+ } catch (IOException ex) {
+ logger.error("error",ex);
+ }
}
}
diff --git a/src/main/java/io/parallec/core/util/PcHttpUtils.java b/src/main/java/io/parallec/core/util/PcHttpUtils.java
index 40b0dd6..798d934 100644
--- a/src/main/java/io/parallec/core/util/PcHttpUtils.java
+++ b/src/main/java/io/parallec/core/util/PcHttpUtils.java
@@ -20,7 +20,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.ning.http.client.AsyncHttpClient.BoundRequestBuilder;
+import org.asynchttpclient.BoundRequestBuilder;
/**