This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new c6397d9814e CAMEL-14008 Another try to add a connection pool to
camel-as2 (#9143)
c6397d9814e is described below
commit c6397d9814e19f93cd0b16fd87870ba1aa5d8628
Author: Dennis Schwarz <[email protected]>
AuthorDate: Wed Jan 18 13:46:02 2023 +0100
CAMEL-14008 Another try to add a connection pool to camel-as2 (#9143)
* CAMEL-14008 Another try to add a connection pool to camel-as2
* Using ObjectHelper.notNull instead of Args.notNull, as requested by
davsclaus
* Replaced all Args.notNull by ObjectHelper.notNull
---
.../as2/api/AS2AsynchronousMDNManager.java | 6 +-
.../component/as2/api/AS2ClientConnection.java | 95 ++++++++++++++++++----
.../camel/component/as2/api/AS2ClientManager.java | 21 +++--
.../component/as2/api/AS2ServerConnection.java | 10 +--
.../AS2MessageDispositionNotificationEntity.java | 6 +-
.../as2/api/entity/ApplicationEDIEntity.java | 6 +-
.../ApplicationPkcs7MimeCompressedDataEntity.java | 4 +-
.../ApplicationPkcs7MimeEnvelopedDataEntity.java | 4 +-
.../entity/ApplicationPkcs7SignatureEntity.java | 8 +-
...spositionNotificationMultipartReportEntity.java | 8 +-
.../DispositionNotificationOptionsParser.java | 6 +-
.../component/as2/api/entity/EntityParser.java | 53 ++++++------
.../camel/component/as2/api/entity/MimeEntity.java | 6 +-
.../component/as2/api/entity/TextPlainEntity.java | 4 +-
.../as2/api/io/AS2BHttpClientConnection.java | 19 ++---
.../as2/api/io/AS2SessionInputBuffer.java | 5 +-
.../component/as2/api/util/AS2HeaderUtils.java | 12 +--
.../util/DispositionNotificationContentUtils.java | 6 +-
.../component/as2/api/util/EncryptingUtils.java | 6 +-
.../camel/component/as2/api/util/EntityUtils.java | 16 ++--
.../component/as2/api/util/HttpMessageUtils.java | 16 ++--
.../camel/component/as2/api/util/SigningUtils.java | 6 +-
.../camel/component/as2/api/AS2MessageTest.java | 62 +++++---------
...ientManagerEndpointConfigurationConfigurer.java | 28 +++++++
.../component/as2/AS2ConfigurationConfigurer.java | 28 +++++++
.../camel/component/as2/AS2EndpointConfigurer.java | 28 +++++++
.../camel/component/as2/AS2EndpointUriFactory.java | 6 +-
...rverManagerEndpointConfigurationConfigurer.java | 28 +++++++
.../org/apache/camel/component/as2/as2.json | 4 +
.../camel/component/as2/AS2Configuration.java | 54 ++++++++++++
.../apache/camel/component/as2/AS2Producer.java | 4 +-
.../as2/internal/AS2ConnectionHelper.java | 4 +-
.../camel/component/as2/AS2ServerManagerIT.java | 25 ++++--
33 files changed, 416 insertions(+), 178 deletions(-)
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2AsynchronousMDNManager.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2AsynchronousMDNManager.java
index cb38bb0299c..6b4addf8f61 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2AsynchronousMDNManager.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2AsynchronousMDNManager.java
@@ -26,6 +26,7 @@ import java.security.cert.Certificate;
import
org.apache.camel.component.as2.api.entity.DispositionNotificationMultipartReportEntity;
import org.apache.camel.component.as2.api.protocol.RequestAsynchronousMDN;
import org.apache.camel.component.as2.api.util.EntityUtils;
+import org.apache.camel.util.ObjectHelper;
import org.apache.http.HttpException;
import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
@@ -43,7 +44,6 @@ import org.apache.http.protocol.RequestDate;
import org.apache.http.protocol.RequestExpectContinue;
import org.apache.http.protocol.RequestTargetHost;
import org.apache.http.protocol.RequestUserAgent;
-import org.apache.http.util.Args;
public class AS2AsynchronousMDNManager {
@@ -107,8 +107,8 @@ public class AS2AsynchronousMDNManager {
DispositionNotificationMultipartReportEntity mdn,
String recipientDeliveryAddress)
throws HttpException {
- Args.notNull(mdn, "mdn");
- Args.notNull(recipientDeliveryAddress, "recipientDeliveryAddress");
+ ObjectHelper.notNull(mdn, "mdn");
+ ObjectHelper.notNull(recipientDeliveryAddress,
"recipientDeliveryAddress");
URI uri = null;
try {
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ClientConnection.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ClientConnection.java
index dd86e9744ba..9f1e8a86c8e 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ClientConnection.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ClientConnection.java
@@ -18,15 +18,30 @@ package org.apache.camel.component.as2.api;
import java.io.IOException;
import java.net.Socket;
+import java.time.Duration;
+import java.util.UUID;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
import org.apache.camel.component.as2.api.io.AS2BHttpClientConnection;
import org.apache.camel.component.as2.api.protocol.RequestAS2;
import org.apache.camel.component.as2.api.protocol.RequestMDN;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.http.Header;
+import org.apache.http.HeaderElement;
+import org.apache.http.HttpClientConnection;
import org.apache.http.HttpException;
import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
-import org.apache.http.impl.DefaultBHttpClientConnection;
+import org.apache.http.config.ConnectionConfig;
+import org.apache.http.config.SocketConfig;
+import org.apache.http.conn.ConnectionKeepAliveStrategy;
+import org.apache.http.conn.HttpConnectionFactory;
+import org.apache.http.conn.ManagedHttpClientConnection;
+import org.apache.http.conn.routing.HttpRoute;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
+import org.apache.http.protocol.HTTP;
import org.apache.http.protocol.HttpCoreContext;
import org.apache.http.protocol.HttpProcessor;
import org.apache.http.protocol.HttpProcessorBuilder;
@@ -37,25 +52,34 @@ import org.apache.http.protocol.RequestDate;
import org.apache.http.protocol.RequestExpectContinue;
import org.apache.http.protocol.RequestTargetHost;
import org.apache.http.protocol.RequestUserAgent;
-import org.apache.http.util.Args;
public class AS2ClientConnection {
+ private static final int RETRIEVE_FROM_CONNECTION_POOL_TIMEOUT_SECONDS = 5;
+
private HttpHost targetHost;
private HttpProcessor httpProcessor;
- private DefaultBHttpClientConnection httpConnection;
private String as2Version;
private String userAgent;
private String clientFqdn;
+ private int connectionTimeoutMilliseconds;
+ private PoolingHttpClientConnectionManager connectionPoolManager;
+ private ConnectionKeepAliveStrategy connectionKeepAliveStrategy;
public AS2ClientConnection(String as2Version, String userAgent, String
clientFqdn, String targetHostName,
- Integer targetPortNumber) throws IOException {
+ Integer targetPortNumber, Duration
socketTimeout, Duration connectionTimeout,
+ Integer connectionPoolMaxSize, Duration
connectionPoolTtl) throws IOException {
- this.as2Version = Args.notNull(as2Version, "as2Version");
- this.userAgent = Args.notNull(userAgent, "userAgent");
- this.clientFqdn = Args.notNull(clientFqdn, "clientFqdn");
+ this.as2Version = ObjectHelper.notNull(as2Version, "as2Version");
+ this.userAgent = ObjectHelper.notNull(userAgent, "userAgent");
+ this.clientFqdn = ObjectHelper.notNull(clientFqdn, "clientFqdn");
this.targetHost = new HttpHost(
- Args.notNull(targetHostName, "targetHostName"),
Args.notNull(targetPortNumber, "targetPortNumber"));
+ ObjectHelper.notNull(targetHostName, "targetHostName"),
+ ObjectHelper.notNull(targetPortNumber, "targetPortNumber"));
+ ObjectHelper.notNull(socketTimeout, "socketTimeout");
+ this.connectionTimeoutMilliseconds = (int)
ObjectHelper.notNull(connectionTimeout, "connectionTimeout").toMillis();
+ ObjectHelper.notNull(connectionPoolMaxSize, "connectionPoolMaxSize");
+ ObjectHelper.notNull(connectionPoolTtl, "connectionPoolTtl");
// Build Processor
httpProcessor = HttpProcessorBuilder.create()
@@ -68,12 +92,43 @@ public class AS2ClientConnection {
.add(new RequestConnControl())
.add(new RequestExpectContinue(true)).build();
- // Create Socket
- Socket socket = new Socket(targetHost.getHostName(),
targetHost.getPort());
+ HttpConnectionFactory<HttpRoute, ManagedHttpClientConnection>
connFactory = new HttpConnectionFactory<>() {
+ @Override
+ public AS2BHttpClientConnection create(HttpRoute route,
ConnectionConfig config) {
+ return new
AS2BHttpClientConnection(UUID.randomUUID().toString(), 8 * 1024);
+ }
+ };
+
+ connectionPoolManager = new
PoolingHttpClientConnectionManager(connFactory);
+ connectionPoolManager.setMaxTotal(connectionPoolMaxSize);
+ connectionPoolManager.setSocketConfig(targetHost,
+ SocketConfig.copy(SocketConfig.DEFAULT)
+ .setSoTimeout((int) socketTimeout.toMillis())
+ .build());
+
+ connectionKeepAliveStrategy = (response, context) -> {
+ int ttl = (int) connectionPoolTtl.toMillis();
+ for (Header h : response.getAllHeaders()) {
+ if (HTTP.CONN_DIRECTIVE.equalsIgnoreCase(h.getName())) {
+ if (HTTP.CONN_CLOSE.equalsIgnoreCase(h.getValue())) {
+ ttl = -1;
+ }
+ }
+ if (HTTP.CONN_KEEP_ALIVE.equalsIgnoreCase(h.getName())) {
+ HeaderElement headerElement = h.getElements()[0];
+ if (headerElement.getValue() != null &&
"timeout".equalsIgnoreCase(headerElement.getName())) {
+ ttl = Integer.parseInt(headerElement.getValue()) *
1000;
+ }
+ }
+ }
+ return ttl;
+ };
+
+ // Check if a connection can be established
+ try (AS2BHttpClientConnection testConnection = new
AS2BHttpClientConnection("test", 8 * 1024)) {
+ testConnection.bind(new Socket(targetHost.getHostName(),
targetHost.getPort()));
+ }
- // Create Connection
- httpConnection = new AS2BHttpClientConnection(8 * 1024);
- httpConnection.bind(socket);
}
public String getAs2Version() {
@@ -88,15 +143,27 @@ public class AS2ClientConnection {
return clientFqdn;
}
- public HttpResponse send(HttpRequest request, HttpCoreContext httpContext)
throws HttpException, IOException {
+ public HttpResponse send(HttpRequest request, HttpCoreContext httpContext)
+ throws HttpException, IOException, InterruptedException,
ExecutionException {
+
+ HttpRoute route = new HttpRoute(targetHost);
httpContext.setTargetHost(targetHost);
+ HttpClientConnection httpConnection =
connectionPoolManager.requestConnection(route, null)
+ .get(RETRIEVE_FROM_CONNECTION_POOL_TIMEOUT_SECONDS,
TimeUnit.SECONDS);
+ if (!httpConnection.isOpen()) {
+ connectionPoolManager.connect(httpConnection, route,
connectionTimeoutMilliseconds, httpContext);
+ }
+
// Execute Request
HttpRequestExecutor httpexecutor = new HttpRequestExecutor();
httpexecutor.preProcess(request, httpProcessor, httpContext);
HttpResponse response = httpexecutor.execute(request, httpConnection,
httpContext);
httpexecutor.postProcess(response, httpProcessor, httpContext);
+ connectionPoolManager.routeComplete(httpConnection, route,
httpContext);
+ connectionPoolManager.releaseConnection(httpConnection, null,
+ connectionKeepAliveStrategy.getKeepAliveDuration(response,
httpContext), TimeUnit.MILLISECONDS);
return response;
}
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ClientManager.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ClientManager.java
index eed4893c710..1b5df6d90be 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ClientManager.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ClientManager.java
@@ -20,6 +20,7 @@ import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.security.PrivateKey;
import java.security.cert.Certificate;
+import java.util.concurrent.ExecutionException;
import org.apache.camel.component.as2.api.entity.ApplicationEDIEntity;
import
org.apache.camel.component.as2.api.entity.ApplicationPkcs7MimeCompressedDataEntity;
@@ -30,12 +31,12 @@ import
org.apache.camel.component.as2.api.util.CompressionUtils;
import org.apache.camel.component.as2.api.util.EncryptingUtils;
import org.apache.camel.component.as2.api.util.EntityUtils;
import org.apache.camel.component.as2.api.util.SigningUtils;
+import org.apache.camel.util.ObjectHelper;
import org.apache.http.HttpException;
import org.apache.http.HttpResponse;
import org.apache.http.entity.ContentType;
import org.apache.http.message.BasicHttpEntityEnclosingRequest;
import org.apache.http.protocol.HttpCoreContext;
-import org.apache.http.util.Args;
import org.bouncycastle.cms.CMSCompressedDataGenerator;
import org.bouncycastle.cms.CMSEnvelopedDataGenerator;
import org.bouncycastle.operator.OutputCompressor;
@@ -216,14 +217,14 @@ public class AS2ClientManager {
String attachedFileName)
throws HttpException {
- Args.notNull(ediMessage, "EDI Message");
- Args.notNull(requestUri, "Request URI");
- Args.notNull(subject, "Subject");
- Args.notNull(from, "Subject");
- Args.notNull(as2From, "Subject");
- Args.notNull(as2To, "Subject");
- Args.notNull(as2MessageStructure, "AS2 Message Structure");
- Args.notNull(ediMessageContentType, "EDI Message Content Type");
+ ObjectHelper.notNull(ediMessage, "EDI Message");
+ ObjectHelper.notNull(requestUri, "Request URI");
+ ObjectHelper.notNull(subject, "Subject");
+ ObjectHelper.notNull(from, "Subject");
+ ObjectHelper.notNull(as2From, "Subject");
+ ObjectHelper.notNull(as2To, "Subject");
+ ObjectHelper.notNull(as2MessageStructure, "AS2 Message Structure");
+ ObjectHelper.notNull(ediMessageContentType, "EDI Message Content
Type");
// Add Context attributes
HttpCoreContext httpContext = HttpCoreContext.create();
@@ -391,6 +392,8 @@ public class AS2ClientManager {
EntityParser.parseAS2MessageEntity(response);
} catch (IOException e) {
throw new HttpException("Failed to send http request message", e);
+ } catch (ExecutionException | InterruptedException ex) {
+ throw new HttpException("Retrieving connection from Pool failed or
timed out", ex);
}
httpContext.setAttribute(HTTP_RESPONSE, response);
return httpContext;
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerConnection.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerConnection.java
index 8ac46bc0099..1dd94f28483 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerConnection.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerConnection.java
@@ -27,6 +27,7 @@ import java.security.cert.Certificate;
import
org.apache.camel.component.as2.api.entity.DispositionNotificationMultipartReportEntity;
import org.apache.camel.component.as2.api.io.AS2BHttpServerConnection;
import org.apache.camel.component.as2.api.protocol.ResponseMDN;
+import org.apache.camel.util.ObjectHelper;
import org.apache.http.ConnectionClosedException;
import org.apache.http.HttpException;
import org.apache.http.HttpInetConnection;
@@ -43,7 +44,6 @@ import org.apache.http.protocol.ResponseContent;
import org.apache.http.protocol.ResponseDate;
import org.apache.http.protocol.ResponseServer;
import org.apache.http.protocol.UriHttpRequestHandlerMapper;
-import org.apache.http.util.Args;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -205,10 +205,10 @@ public class AS2ServerConnection {
PrivateKey decryptingPrivateKey,
String mdnMessageTemplate)
throws IOException {
- this.as2Version = Args.notNull(as2Version, "as2Version");
- this.originServer = Args.notNull(originServer, "userAgent");
- this.serverFqdn = Args.notNull(serverFqdn, "serverFqdn");
- this.serverPortNumber = Args.notNull(serverPortNumber,
"serverPortNumber");
+ this.as2Version = ObjectHelper.notNull(as2Version, "as2Version");
+ this.originServer = ObjectHelper.notNull(originServer, "userAgent");
+ this.serverFqdn = ObjectHelper.notNull(serverFqdn, "serverFqdn");
+ this.serverPortNumber = ObjectHelper.notNull(serverPortNumber,
"serverPortNumber");
this.signingAlgorithm = signingAlgorithm;
this.signingCertificateChain = signingCertificateChain;
this.signingPrivateKey = signingPrivateKey;
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/AS2MessageDispositionNotificationEntity.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/AS2MessageDispositionNotificationEntity.java
index 13d141fbae2..31789498555 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/AS2MessageDispositionNotificationEntity.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/AS2MessageDispositionNotificationEntity.java
@@ -30,6 +30,7 @@ import
org.apache.camel.component.as2.api.CanonicalOutputStream;
import org.apache.camel.component.as2.api.util.HttpMessageUtils;
import org.apache.camel.component.as2.api.util.MicUtils;
import org.apache.camel.component.as2.api.util.MicUtils.ReceivedContentMic;
+import org.apache.camel.util.ObjectHelper;
import org.apache.http.Header;
import org.apache.http.HeaderIterator;
import org.apache.http.HttpEntityEnclosingRequest;
@@ -37,7 +38,6 @@ import org.apache.http.HttpException;
import org.apache.http.HttpResponse;
import org.apache.http.entity.ContentType;
import org.apache.http.message.BasicHeader;
-import org.apache.http.util.Args;
public class AS2MessageDispositionNotificationEntity extends MimeEntity {
@@ -93,8 +93,8 @@ public class AS2MessageDispositionNotificationEntity extends
MimeEntity {
this.reportingUA = HttpMessageUtils.getHeaderValue(response,
AS2Header.SERVER);
- this.dispositionMode = Args.notNull(dispositionMode, "Disposition
Mode");
- this.dispositionType = Args.notNull(dispositionType, "Disposition
Type");
+ this.dispositionMode = ObjectHelper.notNull(dispositionMode,
"Disposition Mode");
+ this.dispositionType = ObjectHelper.notNull(dispositionType,
"Disposition Type");
this.dispositionModifier = dispositionModifier;
this.failureFields = failureFields;
this.errorFields = errorFields;
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEDIEntity.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEDIEntity.java
index fe2671933fc..77c06203c56 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEDIEntity.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEDIEntity.java
@@ -23,11 +23,11 @@ import java.nio.charset.StandardCharsets;
import org.apache.camel.component.as2.api.AS2Header;
import org.apache.camel.component.as2.api.CanonicalOutputStream;
import org.apache.camel.component.as2.api.util.EntityUtils;
+import org.apache.camel.util.ObjectHelper;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.Header;
import org.apache.http.HeaderIterator;
import org.apache.http.entity.ContentType;
-import org.apache.http.util.Args;
import org.slf4j.helpers.MessageFormatter;
public abstract class ApplicationEDIEntity extends MimeEntity {
@@ -38,8 +38,8 @@ public abstract class ApplicationEDIEntity extends MimeEntity
{
protected ApplicationEDIEntity(String ediMessage, ContentType contentType,
String contentTransferEncoding,
boolean isMainBody, String filename) {
- this.ediMessage = Args.notNull(ediMessage, "EDI Message");
- setContentType(Args.notNull(contentType, "Content Type").toString());
+ this.ediMessage = ObjectHelper.notNull(ediMessage, "EDI Message");
+ setContentType(ObjectHelper.notNull(contentType, "Content
Type").toString());
setContentTransferEncoding(contentTransferEncoding);
setMainBody(isMainBody);
if (StringUtils.isNotBlank(filename)) {
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7MimeCompressedDataEntity.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7MimeCompressedDataEntity.java
index 1f05f56218f..75f7af008ba 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7MimeCompressedDataEntity.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7MimeCompressedDataEntity.java
@@ -24,12 +24,12 @@ import java.nio.charset.StandardCharsets;
import org.apache.camel.component.as2.api.AS2Header;
import org.apache.camel.component.as2.api.CanonicalOutputStream;
import org.apache.camel.component.as2.api.util.EntityUtils;
+import org.apache.camel.util.ObjectHelper;
import org.apache.http.Header;
import org.apache.http.HeaderIterator;
import org.apache.http.HttpException;
import org.apache.http.entity.ContentType;
import org.apache.http.message.BasicNameValuePair;
-import org.apache.http.util.Args;
import org.bouncycastle.cms.CMSCompressedData;
import org.bouncycastle.cms.CMSCompressedDataGenerator;
import org.bouncycastle.cms.CMSException;
@@ -64,7 +64,7 @@ public class ApplicationPkcs7MimeCompressedDataEntity extends
MimeEntity {
public ApplicationPkcs7MimeCompressedDataEntity(byte[] compressedData,
String compressedContentTransferEncoding,
boolean isMainBody) {
- this.compressedData = Args.notNull(compressedData, "encryptedData");
+ this.compressedData = ObjectHelper.notNull(compressedData,
"encryptedData");
setContentType(ContentType.create("application/pkcs7-mime", new
BasicNameValuePair("smime-type", "compressed-data"),
new BasicNameValuePair("name", "smime.p7z")));
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7MimeEnvelopedDataEntity.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7MimeEnvelopedDataEntity.java
index 21b53c7a89e..e2ef7b4352b 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7MimeEnvelopedDataEntity.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7MimeEnvelopedDataEntity.java
@@ -25,12 +25,12 @@ import java.security.PrivateKey;
import org.apache.camel.component.as2.api.AS2Header;
import org.apache.camel.component.as2.api.CanonicalOutputStream;
import org.apache.camel.component.as2.api.util.EntityUtils;
+import org.apache.camel.util.ObjectHelper;
import org.apache.http.Header;
import org.apache.http.HeaderIterator;
import org.apache.http.HttpException;
import org.apache.http.entity.ContentType;
import org.apache.http.message.BasicNameValuePair;
-import org.apache.http.util.Args;
import org.bouncycastle.cms.CMSEnvelopedData;
import org.bouncycastle.cms.CMSEnvelopedDataGenerator;
import org.bouncycastle.cms.CMSException;
@@ -64,7 +64,7 @@ public class ApplicationPkcs7MimeEnvelopedDataEntity extends
MimeEntity {
public ApplicationPkcs7MimeEnvelopedDataEntity(byte[] encryptedData,
String encryptedContentTransferEncoding,
boolean isMainBody) {
- this.encryptedData = Args.notNull(encryptedData, "encryptedData");
+ this.encryptedData = ObjectHelper.notNull(encryptedData,
"encryptedData");
setContentType(ContentType.create("application/pkcs7-mime", new
BasicNameValuePair("smime-type", "enveloped-data"),
new BasicNameValuePair("name", "smime.p7m")));
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7SignatureEntity.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7SignatureEntity.java
index 35e52fe6b95..686bdaa8b2d 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7SignatureEntity.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7SignatureEntity.java
@@ -25,11 +25,11 @@ import org.apache.camel.component.as2.api.AS2Header;
import org.apache.camel.component.as2.api.AS2MediaType;
import org.apache.camel.component.as2.api.CanonicalOutputStream;
import org.apache.camel.component.as2.api.util.EntityUtils;
+import org.apache.camel.util.ObjectHelper;
import org.apache.http.Header;
import org.apache.http.HeaderIterator;
import org.apache.http.HttpException;
import org.apache.http.entity.ContentType;
-import org.apache.http.util.Args;
import org.bouncycastle.cms.CMSException;
import org.bouncycastle.cms.CMSProcessableByteArray;
import org.bouncycastle.cms.CMSSignedData;
@@ -46,8 +46,8 @@ public class ApplicationPkcs7SignatureEntity extends
MimeEntity {
public ApplicationPkcs7SignatureEntity(MimeEntity data,
CMSSignedDataGenerator signer, String charset,
String contentTransferEncoding,
boolean isMainBody) throws HttpException {
- Args.notNull(data, "Data");
- Args.notNull(signer, "Signer");
+ ObjectHelper.notNull(data, "Data");
+ ObjectHelper.notNull(signer, "Signer");
ContentType contentType
=
ContentType.parse(EntityUtils.appendParameter(AS2MediaType.APPLICATION_PKCS7_SIGNATURE,
"charset", charset));
@@ -67,7 +67,7 @@ public class ApplicationPkcs7SignatureEntity extends
MimeEntity {
String charset,
String contentTransferEncoding,
boolean isMainBody) {
- this.signature = Args.notNull(signature, "signature");
+ this.signature = ObjectHelper.notNull(signature, "signature");
ContentType contentType = ContentType
.parse(EntityUtils.appendParameter(AS2MediaType.APPLICATION_PKCS7_SIGNATURE,
"charset", charset));
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/DispositionNotificationMultipartReportEntity.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/DispositionNotificationMultipartReportEntity.java
index fbfe1e64e8c..b94b8ab60e4 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/DispositionNotificationMultipartReportEntity.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/DispositionNotificationMultipartReportEntity.java
@@ -23,11 +23,11 @@ import java.util.Map;
import org.apache.camel.component.as2.api.AS2Header;
import org.apache.camel.component.as2.api.AS2MimeType;
import org.apache.camel.component.as2.api.AS2TransferEncoding;
+import org.apache.camel.util.ObjectHelper;
import org.apache.http.HttpEntityEnclosingRequest;
import org.apache.http.HttpException;
import org.apache.http.HttpResponse;
import org.apache.http.entity.ContentType;
-import org.apache.http.util.Args;
public class DispositionNotificationMultipartReportEntity extends
MultipartReportEntity {
@@ -56,9 +56,9 @@ public class DispositionNotificationMultipartReportEntity
extends MultipartRepor
super(charset, isMainBody, boundary);
removeHeaders(AS2Header.CONTENT_TYPE);
setContentType(getContentTypeValue(boundary));
- Args.notNull(dispositionMode, "dispositionMode");
- Args.notNull(dispositionType, "dispositionType");
- Args.notNull(mdnMessage, "mdnMessageTemplate");
+ ObjectHelper.notNull(dispositionMode, "dispositionMode");
+ ObjectHelper.notNull(dispositionType, "dispositionType");
+ ObjectHelper.notNull(mdnMessage, "mdnMessageTemplate");
addPart(buildPlainTextReport(mdnMessage));
addPart(new AS2MessageDispositionNotificationEntity(
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/DispositionNotificationOptionsParser.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/DispositionNotificationOptionsParser.java
index 2fb6e1bfd4c..f9c4fdd50f0 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/DispositionNotificationOptionsParser.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/DispositionNotificationOptionsParser.java
@@ -21,9 +21,9 @@ import java.util.Map;
import org.apache.camel.component.as2.api.util.AS2HeaderUtils;
import org.apache.camel.component.as2.api.util.AS2HeaderUtils.Parameter;
+import org.apache.camel.util.ObjectHelper;
import org.apache.http.ParseException;
import org.apache.http.message.ParserCursor;
-import org.apache.http.util.Args;
import org.apache.http.util.CharArrayBuffer;
public class DispositionNotificationOptionsParser {
@@ -51,8 +51,8 @@ public class DispositionNotificationOptionsParser {
public DispositionNotificationOptions parseDispositionNotificationOptions(
final CharArrayBuffer buffer,
final ParserCursor cursor) {
- Args.notNull(buffer, "buffer");
- Args.notNull(cursor, "cursor");
+ ObjectHelper.notNull(buffer, "buffer");
+ ObjectHelper.notNull(cursor, "cursor");
Map<String, Parameter> parameters = new HashMap<>();
while (!cursor.atEnd()) {
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/EntityParser.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/EntityParser.java
index 01b4c7398cc..605e15cce18 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/EntityParser.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/EntityParser.java
@@ -38,6 +38,7 @@ import
org.apache.camel.component.as2.api.util.ContentTypeUtils;
import
org.apache.camel.component.as2.api.util.DispositionNotificationContentUtils;
import org.apache.camel.component.as2.api.util.EntityUtils;
import org.apache.camel.component.as2.api.util.HttpMessageUtils;
+import org.apache.camel.util.ObjectHelper;
import org.apache.commons.codec.DecoderException;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
@@ -72,8 +73,8 @@ public final class EntityParser {
}
public static boolean isBoundaryCloseDelimiter(final CharArrayBuffer
buffer, ParserCursor cursor, String boundary) {
- Args.notNull(buffer, "Buffer");
- Args.notNull(boundary, "Boundary");
+ ObjectHelper.notNull(buffer, "Buffer");
+ ObjectHelper.notNull(boundary, "Boundary");
String boundaryCloseDelimiter = "--" + boundary + "--"; // boundary
// close-delimiter
@@ -101,8 +102,8 @@ public final class EntityParser {
}
public static boolean isBoundaryDelimiter(final CharArrayBuffer buffer,
ParserCursor cursor, String boundary) {
- Args.notNull(buffer, "Buffer");
- Args.notNull(boundary, "Boundary");
+ ObjectHelper.notNull(buffer, "Buffer");
+ ObjectHelper.notNull(boundary, "Boundary");
String boundaryDelimiter = "--" + boundary; // boundary delimiter -
// RFC2046 5.1.1
@@ -269,10 +270,10 @@ public final class EntityParser {
throws HttpException {
ApplicationPkcs7MimeCompressedDataEntity
applicationPkcs7MimeCompressedDataEntity = null;
- Args.notNull(message, "message");
- Args.notNull(inBuffer, "inBuffer");
+ ObjectHelper.notNull(message, "message");
+ ObjectHelper.notNull(inBuffer, "inBuffer");
- HttpEntity entity =
Args.notNull(EntityUtils.getMessageEntity(message), "message entity");
+ HttpEntity entity =
ObjectHelper.notNull(EntityUtils.getMessageEntity(message), "message entity");
if (entity instanceof ApplicationPkcs7MimeCompressedDataEntity) {
// already parsed
@@ -299,10 +300,10 @@ public final class EntityParser {
throws HttpException {
ApplicationPkcs7MimeEnvelopedDataEntity
applicationPkcs7MimeEnvelopedDataEntity = null;
- Args.notNull(message, "message");
- Args.notNull(inBuffer, "inBuffer");
+ ObjectHelper.notNull(message, "message");
+ ObjectHelper.notNull(inBuffer, "inBuffer");
- HttpEntity entity =
Args.notNull(EntityUtils.getMessageEntity(message), "message entity");
+ HttpEntity entity =
ObjectHelper.notNull(EntityUtils.getMessageEntity(message), "message entity");
if (entity instanceof ApplicationPkcs7MimeCompressedDataEntity) {
// already parsed
@@ -330,12 +331,12 @@ public final class EntityParser {
throws HttpException {
MultipartSignedEntity multipartSignedEntity = null;
- Args.notNull(message, "message");
- Args.notNull(inBuffer, "inBuffer");
- Args.notNull(boundary, "boundary");
- Args.notNull(charsetName, "charsetName");
+ ObjectHelper.notNull(message, "message");
+ ObjectHelper.notNull(inBuffer, "inBuffer");
+ ObjectHelper.notNull(boundary, "boundary");
+ ObjectHelper.notNull(charsetName, "charsetName");
- HttpEntity entity =
Args.notNull(EntityUtils.getMessageEntity(message), "message entity");
+ HttpEntity entity =
ObjectHelper.notNull(EntityUtils.getMessageEntity(message), "message entity");
if (entity instanceof MultipartSignedEntity) {
// already parsed
@@ -370,10 +371,10 @@ public final class EntityParser {
throws HttpException {
ApplicationEDIEntity applicationEDIEntity = null;
- Args.notNull(message, "message");
- Args.notNull(inBuffer, "inBuffer");
+ ObjectHelper.notNull(message, "message");
+ ObjectHelper.notNull(inBuffer, "inBuffer");
- HttpEntity entity =
Args.notNull(EntityUtils.getMessageEntity(message), "message entity");
+ HttpEntity entity =
ObjectHelper.notNull(EntityUtils.getMessageEntity(message), "message entity");
if (entity instanceof ApplicationEDIEntity) {
// already parsed
@@ -400,11 +401,11 @@ public final class EntityParser {
throws HttpException {
DispositionNotificationMultipartReportEntity
dispositionNotificationMultipartReportEntity = null;
- Args.notNull(message, "message");
- Args.notNull(inBuffer, "inBuffer");
- Args.notNull(boundary, "boundary");
- Args.notNull(charsetName, "charsetName");
- HttpEntity entity =
Args.notNull(EntityUtils.getMessageEntity(message), "message entity");
+ ObjectHelper.notNull(message, "message");
+ ObjectHelper.notNull(inBuffer, "inBuffer");
+ ObjectHelper.notNull(boundary, "boundary");
+ ObjectHelper.notNull(charsetName, "charsetName");
+ HttpEntity entity =
ObjectHelper.notNull(EntityUtils.getMessageEntity(message), "message entity");
if (entity instanceof DispositionNotificationMultipartReportEntity) {
// already parsed
@@ -433,7 +434,7 @@ public final class EntityParser {
*/
public static void parseAS2MessageEntity(HttpMessage message) throws
HttpException {
if (EntityUtils.hasEntity(message)) {
- HttpEntity entity =
Args.notNull(EntityUtils.getMessageEntity(message), "message entity");
+ HttpEntity entity =
ObjectHelper.notNull(EntityUtils.getMessageEntity(message), "message entity");
if (entity instanceof MimeEntity) {
// already parsed
@@ -1037,8 +1038,8 @@ public final class EntityParser {
final LineParser parser,
final List<CharArrayBuffer> fields)
throws IOException {
- Args.notNull(parser, "parser");
- Args.notNull(fields, "fields");
+ ObjectHelper.notNull(parser, "parser");
+ ObjectHelper.notNull(fields, "fields");
CharArrayBuffer current = null;
CharArrayBuffer previous = null;
while (true) {
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MimeEntity.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MimeEntity.java
index ef2732e98d1..eecca6784bf 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MimeEntity.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MimeEntity.java
@@ -26,6 +26,7 @@ import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import org.apache.camel.component.as2.api.AS2Header;
+import org.apache.camel.util.ObjectHelper;
import org.apache.http.Header;
import org.apache.http.HeaderIterator;
import org.apache.http.entity.AbstractHttpEntity;
@@ -33,7 +34,6 @@ import org.apache.http.entity.ContentType;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.HeaderGroup;
import org.apache.http.protocol.HTTP;
-import org.apache.http.util.Args;
public abstract class MimeEntity extends AbstractHttpEntity {
@@ -190,7 +190,7 @@ public abstract class MimeEntity extends AbstractHttpEntity
{
}
public void addHeader(final String name, final String value) {
- Args.notNull(name, "Header name");
+ ObjectHelper.notNull(name, "Header name");
this.headergroup.addHeader(new BasicHeader(name, value));
}
@@ -199,7 +199,7 @@ public abstract class MimeEntity extends AbstractHttpEntity
{
}
public void setHeader(final String name, final String value) {
- Args.notNull(name, "Header name");
+ ObjectHelper.notNull(name, "Header name");
this.headergroup.updateHeader(new BasicHeader(name, value));
}
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/TextPlainEntity.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/TextPlainEntity.java
index a84146cda7b..877e643b93a 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/TextPlainEntity.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/TextPlainEntity.java
@@ -22,17 +22,17 @@ import java.nio.charset.StandardCharsets;
import org.apache.camel.component.as2.api.AS2MediaType;
import org.apache.camel.component.as2.api.CanonicalOutputStream;
+import org.apache.camel.util.ObjectHelper;
import org.apache.http.Header;
import org.apache.http.HeaderIterator;
import org.apache.http.entity.ContentType;
-import org.apache.http.util.Args;
public class TextPlainEntity extends MimeEntity {
private String content;
public TextPlainEntity(String content, String charset, String
contentTransferEncoding, boolean isMainBody) {
- this.content = Args.notNull(content, "Content");
+ this.content = ObjectHelper.notNull(content, "Content");
setContentType(ContentType.create(AS2MediaType.TEXT_PLAIN, charset));
setContentTransferEncoding(contentTransferEncoding);
setMainBody(isMainBody);
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2BHttpClientConnection.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2BHttpClientConnection.java
index f0a50a9c94f..88712ec2bfc 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2BHttpClientConnection.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2BHttpClientConnection.java
@@ -26,20 +26,13 @@ import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.config.MessageConstraints;
import org.apache.http.entity.ContentLengthStrategy;
-import org.apache.http.impl.DefaultBHttpClientConnection;
+import org.apache.http.impl.conn.DefaultManagedHttpClientConnection;
import org.apache.http.io.HttpMessageParserFactory;
import org.apache.http.io.HttpMessageWriterFactory;
-public class AS2BHttpClientConnection extends DefaultBHttpClientConnection {
+public class AS2BHttpClientConnection extends
DefaultManagedHttpClientConnection {
- public AS2BHttpClientConnection(int buffersize,
- CharsetDecoder chardecoder,
- CharsetEncoder charencoder,
- MessageConstraints constraints) {
- super(buffersize, chardecoder, charencoder, constraints);
- }
-
- public AS2BHttpClientConnection(int buffersize,
+ public AS2BHttpClientConnection(String id, int buffersize,
int fragmentSizeHint,
CharsetDecoder chardecoder,
CharsetEncoder charencoder,
@@ -48,12 +41,12 @@ public class AS2BHttpClientConnection extends
DefaultBHttpClientConnection {
ContentLengthStrategy
outgoingContentStrategy,
HttpMessageWriterFactory<HttpRequest>
requestWriterFactory,
HttpMessageParserFactory<HttpResponse>
responseParserFactory) {
- super(buffersize, fragmentSizeHint, chardecoder, charencoder,
constraints, incomingContentStrategy,
+ super(id, buffersize, fragmentSizeHint, chardecoder, charencoder,
constraints, incomingContentStrategy,
outgoingContentStrategy, requestWriterFactory,
responseParserFactory);
}
- public AS2BHttpClientConnection(int buffersize) {
- super(buffersize);
+ public AS2BHttpClientConnection(String id, int buffersize) {
+ super(id, buffersize);
}
@Override
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2SessionInputBuffer.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2SessionInputBuffer.java
index 2936cf0b158..a523c720a08 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2SessionInputBuffer.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2SessionInputBuffer.java
@@ -23,6 +23,7 @@ import java.nio.CharBuffer;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CoderResult;
+import org.apache.camel.util.ObjectHelper;
import org.apache.http.MessageConstraintException;
import org.apache.http.config.MessageConstraints;
import org.apache.http.impl.io.HttpTransportMetricsImpl;
@@ -59,7 +60,7 @@ public class AS2SessionInputBuffer implements
SessionInputBuffer, BufferInfo {
final int buffersize,
final int minChunkLimit,
MessageConstraints constraints) {
- this.metrics = Args.notNull(metrics, "metrics");
+ this.metrics = ObjectHelper.notNull(metrics, "metrics");
Args.positive(buffersize, "buffersize");
this.buffer = new byte[buffersize];
this.bufferpos = 0;
@@ -187,7 +188,7 @@ public class AS2SessionInputBuffer implements
SessionInputBuffer, BufferInfo {
@Override
public int readLine(CharArrayBuffer charbuffer) throws IOException {
- Args.notNull(charbuffer, "Char array buffer");
+ ObjectHelper.notNull(charbuffer, "Char array buffer");
final int maxLineLen = this.constraints.getMaxLineLength();
int noRead = 0;
boolean retry = true;
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/AS2HeaderUtils.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/AS2HeaderUtils.java
index a180b514eeb..bfbcd7abda0 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/AS2HeaderUtils.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/AS2HeaderUtils.java
@@ -21,13 +21,13 @@ import java.util.BitSet;
import java.util.List;
import org.apache.camel.component.as2.api.entity.Importance;
+import org.apache.camel.util.ObjectHelper;
import org.apache.http.Header;
import org.apache.http.HeaderElement;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.ParserCursor;
import org.apache.http.message.TokenParser;
-import org.apache.http.util.Args;
import org.apache.http.util.CharArrayBuffer;
public final class AS2HeaderUtils {
@@ -38,7 +38,7 @@ public final class AS2HeaderUtils {
private final String[] values;
public Parameter(String attribute, String importance, String[] values)
{
- this.attribute = Args.notNull(attribute, "attribute");
+ this.attribute = ObjectHelper.notNull(attribute, "attribute");
this.importance = Importance.get(importance);
this.values = values;
}
@@ -107,8 +107,8 @@ public final class AS2HeaderUtils {
}
public static Parameter parseParameter(final CharArrayBuffer buffer, final
ParserCursor cursor) {
- Args.notNull(buffer, "Char array buffer");
- Args.notNull(cursor, "Parser cursor");
+ ObjectHelper.notNull(buffer, "Char array buffer");
+ ObjectHelper.notNull(cursor, "Parser cursor");
final String name = TOKEN_PARSER.parseToken(buffer, cursor,
TOKEN_DELIMS);
if (cursor.atEnd()) {
@@ -146,8 +146,8 @@ public final class AS2HeaderUtils {
}
public static String getParameterValue(Header[] headers, String
headerName, String parameterName) {
- Args.notNull(headers, "headers");
- Args.notNull(headerName, "headerName");
+ ObjectHelper.notNull(headers, "headers");
+ ObjectHelper.notNull(headerName, "headerName");
for (Header header : headers) {
if (header.getName().equalsIgnoreCase(headerName)) {
for (HeaderElement headerElement : header.getElements()) {
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/DispositionNotificationContentUtils.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/DispositionNotificationContentUtils.java
index 995172dd95d..b5296c7f9d2 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/DispositionNotificationContentUtils.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/DispositionNotificationContentUtils.java
@@ -29,10 +29,10 @@ import
org.apache.camel.component.as2.api.entity.AS2MessageDispositionNotificati
import org.apache.camel.component.as2.api.entity.DispositionMode;
import
org.apache.camel.component.as2.api.util.DispositionNotificationContentUtils.Field.Element;
import org.apache.camel.component.as2.api.util.MicUtils.ReceivedContentMic;
+import org.apache.camel.util.ObjectHelper;
import org.apache.http.ParseException;
import org.apache.http.message.ParserCursor;
import org.apache.http.message.TokenParser;
-import org.apache.http.util.Args;
import org.apache.http.util.CharArrayBuffer;
public final class DispositionNotificationContentUtils {
@@ -78,12 +78,12 @@ public final class DispositionNotificationContentUtils {
private Element[] elements;
public Field(String name, Element[] elements) {
- this.name = Args.notNull(name, "name");
+ this.name = ObjectHelper.notNull(name, "name");
this.elements = (elements == null) ? new Element[] {} : elements;
}
public Field(String name, String value) {
- this.name = Args.notNull(name, "name");
+ this.name = ObjectHelper.notNull(name, "name");
this.elements = new Element[] { new Element(value, null) };
}
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/EncryptingUtils.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/EncryptingUtils.java
index dcfd8794b8a..7d01eb3c75a 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/EncryptingUtils.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/EncryptingUtils.java
@@ -21,8 +21,8 @@ import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate;
import org.apache.camel.component.as2.api.AS2EncryptionAlgorithm;
+import org.apache.camel.util.ObjectHelper;
import org.apache.http.HttpException;
-import org.apache.http.util.Args;
import org.bouncycastle.cms.CMSEnvelopedDataGenerator;
import org.bouncycastle.cms.CMSException;
import org.bouncycastle.cms.jcajce.JceCMSContentEncryptorBuilder;
@@ -36,7 +36,7 @@ public final class EncryptingUtils {
public static CMSEnvelopedDataGenerator
createEnvelopDataGenerator(Certificate[] encryptionCertificateChain)
throws HttpException {
- Args.notNull(encryptionCertificateChain, "encryptionCertificateChain");
+ ObjectHelper.notNull(encryptionCertificateChain,
"encryptionCertificateChain");
if (encryptionCertificateChain.length == 0 ||
!(encryptionCertificateChain[0] instanceof X509Certificate)) {
throw new IllegalArgumentException("Invalid certificate chain");
}
@@ -57,7 +57,7 @@ public final class EncryptingUtils {
}
public static OutputEncryptor createEncryptor(AS2EncryptionAlgorithm
encryptionAlgorithm) throws HttpException {
- Args.notNull(encryptionAlgorithm, "encryptionAlgorithmName");
+ ObjectHelper.notNull(encryptionAlgorithm, "encryptionAlgorithmName");
try {
return new
JceCMSContentEncryptorBuilder(encryptionAlgorithm.getAlgorithmOID()).build();
} catch (CMSException e) {
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/EntityUtils.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/EntityUtils.java
index a60cfae820d..d97fb78b769 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/EntityUtils.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/EntityUtils.java
@@ -33,6 +33,7 @@ import
org.apache.camel.component.as2.api.entity.ApplicationEDIEntity;
import org.apache.camel.component.as2.api.entity.ApplicationEDIFACTEntity;
import org.apache.camel.component.as2.api.entity.ApplicationEDIX12Entity;
import org.apache.camel.component.as2.api.entity.MimeEntity;
+import org.apache.camel.util.ObjectHelper;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Base64InputStream;
import org.apache.commons.codec.binary.Base64OutputStream;
@@ -43,7 +44,6 @@ import org.apache.http.HttpEntityEnclosingRequest;
import org.apache.http.HttpMessage;
import org.apache.http.HttpResponse;
import org.apache.http.entity.ContentType;
-import org.apache.http.util.Args;
import org.bouncycastle.util.encoders.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -85,7 +85,7 @@ public final class EntityUtils {
}
public static byte[] encode(byte[] data, String encoding) throws
CamelException {
- Args.notNull(data, "Data");
+ ObjectHelper.notNull(data, "Data");
if (encoding == null) {
// Identity encoding
@@ -109,7 +109,7 @@ public final class EntityUtils {
}
public static OutputStream encode(OutputStream os, String encoding) throws
CamelException {
- Args.notNull(os, "Output Stream");
+ ObjectHelper.notNull(os, "Output Stream");
if (encoding == null) {
// Identity encoding
@@ -137,7 +137,7 @@ public final class EntityUtils {
}
public static byte[] decode(byte[] data, String encoding) throws
CamelException, DecoderException {
- Args.notNull(data, "Data");
+ ObjectHelper.notNull(data, "Data");
if (encoding == null) {
// Identity encoding
@@ -159,7 +159,7 @@ public final class EntityUtils {
}
public static InputStream decode(InputStream is, String encoding) throws
CamelException {
- Args.notNull(is, "Input Stream");
+ ObjectHelper.notNull(is, "Input Stream");
if (encoding == null) {
// Identity encoding
@@ -185,8 +185,8 @@ public final class EntityUtils {
String ediMessage, ContentType ediMessageContentType, String
contentTransferEncoding, boolean isMainBody,
String filename)
throws CamelException {
- Args.notNull(ediMessage, "EDI Message");
- Args.notNull(ediMessageContentType, "EDI Message Content Type");
+ ObjectHelper.notNull(ediMessage, "EDI Message");
+ ObjectHelper.notNull(ediMessageContentType, "EDI Message Content
Type");
String charset = null;
if (ediMessageContentType.getCharset() != null) {
charset = ediMessageContentType.getCharset().toString();
@@ -260,7 +260,7 @@ public final class EntityUtils {
ContentType contentType,
String bodyPartTransferEncoding)
throws CamelException, DecoderException {
- Args.notNull(bodyPartContent, "bodyPartContent");
+ ObjectHelper.notNull(bodyPartContent, "bodyPartContent");
Charset contentCharset = contentType.getCharset();
if (contentCharset == null) {
contentCharset = StandardCharsets.US_ASCII;
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/HttpMessageUtils.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/HttpMessageUtils.java
index 4c05a9f1af4..e8068e9f7ec 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/HttpMessageUtils.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/HttpMessageUtils.java
@@ -27,6 +27,7 @@ import
org.apache.camel.component.as2.api.entity.ApplicationPkcs7MimeEnvelopedDa
import org.apache.camel.component.as2.api.entity.EntityParser;
import org.apache.camel.component.as2.api.entity.MimeEntity;
import org.apache.camel.component.as2.api.entity.MultipartSignedEntity;
+import org.apache.camel.util.ObjectHelper;
import org.apache.http.Header;
import org.apache.http.HeaderElement;
import org.apache.http.HttpEntity;
@@ -37,7 +38,6 @@ import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.entity.ContentType;
import org.apache.http.io.SessionInputBuffer;
-import org.apache.http.util.Args;
import org.apache.http.util.CharArrayBuffer;
import org.bouncycastle.cms.jcajce.ZlibExpanderProvider;
@@ -52,8 +52,8 @@ public final class HttpMessageUtils {
}
public static void setHeaderValue(HttpMessage message, String headerName,
String headerValue) {
- Args.notNull(message, "message");
- Args.notNull(headerName, "headerName");
+ ObjectHelper.notNull(message, "message");
+ ObjectHelper.notNull(headerName, "headerName");
if (headerValue == null) {
message.removeHeaders(headerName);
} else {
@@ -62,8 +62,8 @@ public final class HttpMessageUtils {
}
public static <T> T getEntity(HttpMessage message, Class<T> type) {
- Args.notNull(message, "message");
- Args.notNull(type, "type");
+ ObjectHelper.notNull(message, "message");
+ ObjectHelper.notNull(type, "type");
if (message instanceof HttpEntityEnclosingRequest) {
HttpEntity entity = ((HttpEntityEnclosingRequest)
message).getEntity();
if (entity != null && type.isInstance(entity)) {
@@ -109,9 +109,9 @@ public final class HttpMessageUtils {
}
public static String getParameterValue(HttpMessage message, String
headerName, String parameterName) {
- Args.notNull(message, "message");
- Args.notNull(headerName, "headerName");
- Args.notNull(parameterName, "parameterName");
+ ObjectHelper.notNull(message, "message");
+ ObjectHelper.notNull(headerName, "headerName");
+ ObjectHelper.notNull(parameterName, "parameterName");
Header header = message.getFirstHeader(headerName);
if (header == null) {
return null;
diff --git
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/SigningUtils.java
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/SigningUtils.java
index 61b04128cf8..7a17387a1ef 100644
---
a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/SigningUtils.java
+++
b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/SigningUtils.java
@@ -24,8 +24,8 @@ import java.util.Arrays;
import org.apache.camel.component.as2.api.AS2SignatureAlgorithm;
import org.apache.camel.component.as2.api.AS2SignedDataGenerator;
+import org.apache.camel.util.ObjectHelper;
import org.apache.http.HttpException;
-import org.apache.http.util.Args;
import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.cms.AttributeTable;
import org.bouncycastle.asn1.cms.IssuerAndSerialNumber;
@@ -47,11 +47,11 @@ public final class SigningUtils {
public static AS2SignedDataGenerator createSigningGenerator(
AS2SignatureAlgorithm signingAlgorithm, Certificate[]
certificateChain, PrivateKey privateKey)
throws HttpException {
- Args.notNull(certificateChain, "certificateChain");
+ ObjectHelper.notNull(certificateChain, "certificateChain");
if (certificateChain.length == 0 || !(certificateChain[0] instanceof
X509Certificate)) {
throw new IllegalArgumentException("Invalid certificate chain");
}
- Args.notNull(privateKey, "privateKey");
+ ObjectHelper.notNull(privateKey, "privateKey");
AS2SignedDataGenerator gen = new AS2SignedDataGenerator();
diff --git
a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java
b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java
index 2bf69df9e4d..d4c68c9dadc 100644
---
a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java
+++
b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java
@@ -28,6 +28,7 @@ import java.security.SecureRandom;
import java.security.Security;
import java.security.cert.Certificate;
import java.security.cert.X509Certificate;
+import java.time.Duration;
import java.util.*;
import com.helger.as2lib.client.AS2Client;
@@ -135,6 +136,10 @@ public class AS2MessageTest {
private static final String METHOD = "POST";
private static final String TARGET_HOST = "localhost";
private static final int TARGET_PORT =
AvailablePortFinder.getNextAvailable();
+ private static final Duration HTTP_SOCKET_TIMEOUT = Duration.ofSeconds(5);
+ private static final Duration HTTP_CONNECTION_TIMEOUT =
Duration.ofSeconds(5);
+ private static final Integer HTTP_CONNECTION_POOL_SIZE = 5;
+ private static final Duration HTTP_CONNECTION_POOL_TTL =
Duration.ofMinutes(15);
private static final String RECIPIENT_DELIVERY_ADDRESS =
"http://localhost:" + TARGET_PORT + "/handle-receipts";
private static final String AS2_VERSION = "1.1";
private static final String USER_AGENT = "Camel AS2 Endpoint";
@@ -274,10 +279,7 @@ public class AS2MessageTest {
@Test
public void plainEDIMessageTest() throws Exception {
- AS2ClientConnection clientConnection = new AS2ClientConnection(
- AS2_VERSION, USER_AGENT, CLIENT_FQDN,
- TARGET_HOST, TARGET_PORT);
- AS2ClientManager clientManager = new
AS2ClientManager(clientConnection);
+ AS2ClientManager clientManager = createDefaultClientManager();
HttpCoreContext httpContext = clientManager.send(EDI_MESSAGE,
REQUEST_URI, SUBJECT, FROM, AS2_NAME, AS2_NAME,
AS2MessageStructure.PLAIN,
ContentType.create(AS2MediaType.APPLICATION_EDIFACT, StandardCharsets.US_ASCII),
@@ -362,10 +364,7 @@ public class AS2MessageTest {
@Test
public void multipartSignedMessageTest() throws Exception {
- AS2ClientConnection clientConnection = new AS2ClientConnection(
- AS2_VERSION, USER_AGENT, CLIENT_FQDN,
- TARGET_HOST, TARGET_PORT);
- AS2ClientManager clientManager = new
AS2ClientManager(clientConnection);
+ AS2ClientManager clientManager = createDefaultClientManager();
HttpCoreContext httpContext = clientManager.send(EDI_MESSAGE,
REQUEST_URI, SUBJECT, FROM, AS2_NAME, AS2_NAME,
AS2MessageStructure.SIGNED,
ContentType.create(AS2MediaType.APPLICATION_EDIFACT, StandardCharsets.US_ASCII),
@@ -516,10 +515,7 @@ public class AS2MessageTest {
}
public void envelopedMessageTest(AS2EncryptionAlgorithm
encryptionAlgorithm) throws Exception {
- AS2ClientConnection clientConnection = new AS2ClientConnection(
- AS2_VERSION, USER_AGENT, CLIENT_FQDN,
- TARGET_HOST, TARGET_PORT);
- AS2ClientManager clientManager = new
AS2ClientManager(clientConnection);
+ AS2ClientManager clientManager = createDefaultClientManager();
LOG.info("Key Algorithm: {}", signingKP.getPrivate().getAlgorithm());
@@ -574,10 +570,7 @@ public class AS2MessageTest {
}
public void envelopedAndSignedMessageTest(AS2EncryptionAlgorithm
encryptionAlgorithm) throws Exception {
- AS2ClientConnection clientConnection = new AS2ClientConnection(
- AS2_VERSION, USER_AGENT, CLIENT_FQDN,
- TARGET_HOST, TARGET_PORT);
- AS2ClientManager clientManager = new
AS2ClientManager(clientConnection);
+ AS2ClientManager clientManager = createDefaultClientManager();
LOG.info("Key Algorithm: {}", signingKP.getPrivate().getAlgorithm());
@@ -644,10 +637,7 @@ public class AS2MessageTest {
@Test
public void signatureVerificationTest() throws Exception {
- AS2ClientConnection clientConnection = new AS2ClientConnection(
- AS2_VERSION, USER_AGENT, CLIENT_FQDN,
- TARGET_HOST, TARGET_PORT);
- AS2ClientManager clientManager = new
AS2ClientManager(clientConnection);
+ AS2ClientManager clientManager = createDefaultClientManager();
HttpCoreContext httpContext = clientManager.send(EDI_MESSAGE,
REQUEST_URI, SUBJECT, FROM, AS2_NAME, AS2_NAME,
AS2MessageStructure.SIGNED,
ContentType.create(AS2MediaType.APPLICATION_EDIFACT, StandardCharsets.US_ASCII),
@@ -674,10 +664,7 @@ public class AS2MessageTest {
@Test
public void mdnMessageTest() throws Exception {
- AS2ClientConnection clientConnection = new AS2ClientConnection(
- AS2_VERSION, USER_AGENT, CLIENT_FQDN,
- TARGET_HOST, TARGET_PORT);
- AS2ClientManager clientManager = new
AS2ClientManager(clientConnection);
+ AS2ClientManager clientManager = createDefaultClientManager();
HttpCoreContext httpContext = clientManager.send(EDI_MESSAGE,
REQUEST_URI, SUBJECT, FROM, AS2_NAME, AS2_NAME,
AS2MessageStructure.PLAIN,
ContentType.create(AS2MediaType.APPLICATION_EDIFACT, StandardCharsets.US_ASCII),
@@ -788,10 +775,7 @@ public class AS2MessageTest {
@Test
public void compressedMessageTest() throws Exception {
- AS2ClientConnection clientConnection = new AS2ClientConnection(
- AS2_VERSION, USER_AGENT, CLIENT_FQDN,
- TARGET_HOST, TARGET_PORT);
- AS2ClientManager clientManager = new
AS2ClientManager(clientConnection);
+ AS2ClientManager clientManager = createDefaultClientManager();
LOG.info("Key Algorithm: {}", signingKP.getPrivate().getAlgorithm());
@@ -841,10 +825,7 @@ public class AS2MessageTest {
@Test
public void compressedAndSignedMessageTest() throws Exception {
- AS2ClientConnection clientConnection = new AS2ClientConnection(
- AS2_VERSION, USER_AGENT, CLIENT_FQDN,
- TARGET_HOST, TARGET_PORT);
- AS2ClientManager clientManager = new
AS2ClientManager(clientConnection);
+ AS2ClientManager clientManager = createDefaultClientManager();
LOG.info("Key Algorithm: {}", signingKP.getPrivate().getAlgorithm());
@@ -910,10 +891,7 @@ public class AS2MessageTest {
@Test
public void envelopedAndCompressedMessageTest() throws Exception {
- AS2ClientConnection clientConnection = new AS2ClientConnection(
- AS2_VERSION, USER_AGENT, CLIENT_FQDN,
- TARGET_HOST, TARGET_PORT);
- AS2ClientManager clientManager = new
AS2ClientManager(clientConnection);
+ AS2ClientManager clientManager = createDefaultClientManager();
LOG.info("Key Algorithm: {}", signingKP.getPrivate().getAlgorithm());
@@ -972,10 +950,7 @@ public class AS2MessageTest {
@Test
public void envelopedCompressedAndSignedMessageTest() throws Exception {
- AS2ClientConnection clientConnection = new AS2ClientConnection(
- AS2_VERSION, USER_AGENT, CLIENT_FQDN,
- TARGET_HOST, TARGET_PORT);
- AS2ClientManager clientManager = new
AS2ClientManager(clientConnection);
+ AS2ClientManager clientManager = createDefaultClientManager();
LOG.info("Key Algorithm: {}", signingKP.getPrivate().getAlgorithm());
@@ -1089,4 +1064,11 @@ public class AS2MessageTest {
assertEquals(EDI_MESSAGE, ediEntity.getEdiMessage().replaceAll("\r",
""));
}
+ private AS2ClientManager createDefaultClientManager() throws IOException {
+ AS2ClientConnection clientConnection = new AS2ClientConnection(
+ AS2_VERSION, USER_AGENT, CLIENT_FQDN,
+ TARGET_HOST, TARGET_PORT, HTTP_SOCKET_TIMEOUT,
HTTP_CONNECTION_TIMEOUT, HTTP_CONNECTION_POOL_SIZE,
+ HTTP_CONNECTION_POOL_TTL);
+ return new AS2ClientManager(clientConnection);
+ }
}
diff --git
a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ClientManagerEndpointConfigurationConfigurer.java
b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ClientManagerEndpointConfigurationConfigurer.java
index f95e136124c..374bbfa4bef 100644
---
a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ClientManagerEndpointConfigurationConfigurer.java
+++
b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ClientManagerEndpointConfigurationConfigurer.java
@@ -37,6 +37,10 @@ public class AS2ClientManagerEndpointConfigurationConfigurer
extends org.apache.
map.put("EncryptingAlgorithm",
org.apache.camel.component.as2.api.AS2EncryptionAlgorithm.class);
map.put("EncryptingCertificateChain",
java.security.cert.Certificate[].class);
map.put("From", java.lang.String.class);
+ map.put("HttpConnectionPoolSize", java.lang.Integer.class);
+ map.put("HttpConnectionPoolTtl", java.time.Duration.class);
+ map.put("HttpConnectionTimeout", java.time.Duration.class);
+ map.put("HttpSocketTimeout", java.time.Duration.class);
map.put("MdnMessageTemplate", java.lang.String.class);
map.put("MethodName", java.lang.String.class);
map.put("RequestUri", java.lang.String.class);
@@ -92,6 +96,14 @@ public class AS2ClientManagerEndpointConfigurationConfigurer
extends org.apache.
case "EncryptingCertificateChain":
target.setEncryptingCertificateChain(property(camelContext,
java.security.cert.Certificate[].class, value)); return true;
case "from":
case "From": target.setFrom(property(camelContext,
java.lang.String.class, value)); return true;
+ case "httpconnectionpoolsize":
+ case "HttpConnectionPoolSize":
target.setHttpConnectionPoolSize(property(camelContext,
java.lang.Integer.class, value)); return true;
+ case "httpconnectionpoolttl":
+ case "HttpConnectionPoolTtl":
target.setHttpConnectionPoolTtl(property(camelContext,
java.time.Duration.class, value)); return true;
+ case "httpconnectiontimeout":
+ case "HttpConnectionTimeout":
target.setHttpConnectionTimeout(property(camelContext,
java.time.Duration.class, value)); return true;
+ case "httpsockettimeout":
+ case "HttpSocketTimeout":
target.setHttpSocketTimeout(property(camelContext, java.time.Duration.class,
value)); return true;
case "mdnmessagetemplate":
case "MdnMessageTemplate":
target.setMdnMessageTemplate(property(camelContext, java.lang.String.class,
value)); return true;
case "methodname":
@@ -166,6 +178,14 @@ public class
AS2ClientManagerEndpointConfigurationConfigurer extends org.apache.
case "EncryptingCertificateChain": return
java.security.cert.Certificate[].class;
case "from":
case "From": return java.lang.String.class;
+ case "httpconnectionpoolsize":
+ case "HttpConnectionPoolSize": return java.lang.Integer.class;
+ case "httpconnectionpoolttl":
+ case "HttpConnectionPoolTtl": return java.time.Duration.class;
+ case "httpconnectiontimeout":
+ case "HttpConnectionTimeout": return java.time.Duration.class;
+ case "httpsockettimeout":
+ case "HttpSocketTimeout": return java.time.Duration.class;
case "mdnmessagetemplate":
case "MdnMessageTemplate": return java.lang.String.class;
case "methodname":
@@ -236,6 +256,14 @@ public class
AS2ClientManagerEndpointConfigurationConfigurer extends org.apache.
case "EncryptingCertificateChain": return
target.getEncryptingCertificateChain();
case "from":
case "From": return target.getFrom();
+ case "httpconnectionpoolsize":
+ case "HttpConnectionPoolSize": return
target.getHttpConnectionPoolSize();
+ case "httpconnectionpoolttl":
+ case "HttpConnectionPoolTtl": return target.getHttpConnectionPoolTtl();
+ case "httpconnectiontimeout":
+ case "HttpConnectionTimeout": return target.getHttpConnectionTimeout();
+ case "httpsockettimeout":
+ case "HttpSocketTimeout": return target.getHttpSocketTimeout();
case "mdnmessagetemplate":
case "MdnMessageTemplate": return target.getMdnMessageTemplate();
case "methodname":
diff --git
a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ConfigurationConfigurer.java
b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ConfigurationConfigurer.java
index 7c4f73d6131..46225f9739a 100644
---
a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ConfigurationConfigurer.java
+++
b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ConfigurationConfigurer.java
@@ -35,6 +35,10 @@ public class AS2ConfigurationConfigurer extends
org.apache.camel.support.compone
map.put("EncryptingAlgorithm",
org.apache.camel.component.as2.api.AS2EncryptionAlgorithm.class);
map.put("EncryptingCertificateChain",
java.security.cert.Certificate[].class);
map.put("From", java.lang.String.class);
+ map.put("HttpConnectionPoolSize", java.lang.Integer.class);
+ map.put("HttpConnectionPoolTtl", java.time.Duration.class);
+ map.put("HttpConnectionTimeout", java.time.Duration.class);
+ map.put("HttpSocketTimeout", java.time.Duration.class);
map.put("MdnMessageTemplate", java.lang.String.class);
map.put("MethodName", java.lang.String.class);
map.put("RequestUri", java.lang.String.class);
@@ -86,6 +90,14 @@ public class AS2ConfigurationConfigurer extends
org.apache.camel.support.compone
case "EncryptingCertificateChain":
target.setEncryptingCertificateChain(property(camelContext,
java.security.cert.Certificate[].class, value)); return true;
case "from":
case "From": target.setFrom(property(camelContext,
java.lang.String.class, value)); return true;
+ case "httpconnectionpoolsize":
+ case "HttpConnectionPoolSize":
target.setHttpConnectionPoolSize(property(camelContext,
java.lang.Integer.class, value)); return true;
+ case "httpconnectionpoolttl":
+ case "HttpConnectionPoolTtl":
target.setHttpConnectionPoolTtl(property(camelContext,
java.time.Duration.class, value)); return true;
+ case "httpconnectiontimeout":
+ case "HttpConnectionTimeout":
target.setHttpConnectionTimeout(property(camelContext,
java.time.Duration.class, value)); return true;
+ case "httpsockettimeout":
+ case "HttpSocketTimeout":
target.setHttpSocketTimeout(property(camelContext, java.time.Duration.class,
value)); return true;
case "mdnmessagetemplate":
case "MdnMessageTemplate":
target.setMdnMessageTemplate(property(camelContext, java.lang.String.class,
value)); return true;
case "methodname":
@@ -156,6 +168,14 @@ public class AS2ConfigurationConfigurer extends
org.apache.camel.support.compone
case "EncryptingCertificateChain": return
java.security.cert.Certificate[].class;
case "from":
case "From": return java.lang.String.class;
+ case "httpconnectionpoolsize":
+ case "HttpConnectionPoolSize": return java.lang.Integer.class;
+ case "httpconnectionpoolttl":
+ case "HttpConnectionPoolTtl": return java.time.Duration.class;
+ case "httpconnectiontimeout":
+ case "HttpConnectionTimeout": return java.time.Duration.class;
+ case "httpsockettimeout":
+ case "HttpSocketTimeout": return java.time.Duration.class;
case "mdnmessagetemplate":
case "MdnMessageTemplate": return java.lang.String.class;
case "methodname":
@@ -222,6 +242,14 @@ public class AS2ConfigurationConfigurer extends
org.apache.camel.support.compone
case "EncryptingCertificateChain": return
target.getEncryptingCertificateChain();
case "from":
case "From": return target.getFrom();
+ case "httpconnectionpoolsize":
+ case "HttpConnectionPoolSize": return
target.getHttpConnectionPoolSize();
+ case "httpconnectionpoolttl":
+ case "HttpConnectionPoolTtl": return target.getHttpConnectionPoolTtl();
+ case "httpconnectiontimeout":
+ case "HttpConnectionTimeout": return target.getHttpConnectionTimeout();
+ case "httpsockettimeout":
+ case "HttpSocketTimeout": return target.getHttpSocketTimeout();
case "mdnmessagetemplate":
case "MdnMessageTemplate": return target.getMdnMessageTemplate();
case "methodname":
diff --git
a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2EndpointConfigurer.java
b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2EndpointConfigurer.java
index 7c4daf407fc..a6252b60c7c 100644
---
a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2EndpointConfigurer.java
+++
b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2EndpointConfigurer.java
@@ -36,6 +36,10 @@ public class AS2EndpointConfigurer extends
PropertyConfigurerSupport implements
map.put("encryptingAlgorithm",
org.apache.camel.component.as2.api.AS2EncryptionAlgorithm.class);
map.put("encryptingCertificateChain",
java.security.cert.Certificate[].class);
map.put("from", java.lang.String.class);
+ map.put("httpConnectionPoolSize", java.lang.Integer.class);
+ map.put("httpConnectionPoolTtl", java.time.Duration.class);
+ map.put("httpConnectionTimeout", java.time.Duration.class);
+ map.put("httpSocketTimeout", java.time.Duration.class);
map.put("inBody", java.lang.String.class);
map.put("mdnMessageTemplate", java.lang.String.class);
map.put("requestUri", java.lang.String.class);
@@ -91,6 +95,14 @@ public class AS2EndpointConfigurer extends
PropertyConfigurerSupport implements
case "exchangepattern":
case "exchangePattern":
target.setExchangePattern(property(camelContext,
org.apache.camel.ExchangePattern.class, value)); return true;
case "from": target.getConfiguration().setFrom(property(camelContext,
java.lang.String.class, value)); return true;
+ case "httpconnectionpoolsize":
+ case "httpConnectionPoolSize":
target.getConfiguration().setHttpConnectionPoolSize(property(camelContext,
java.lang.Integer.class, value)); return true;
+ case "httpconnectionpoolttl":
+ case "httpConnectionPoolTtl":
target.getConfiguration().setHttpConnectionPoolTtl(property(camelContext,
java.time.Duration.class, value)); return true;
+ case "httpconnectiontimeout":
+ case "httpConnectionTimeout":
target.getConfiguration().setHttpConnectionTimeout(property(camelContext,
java.time.Duration.class, value)); return true;
+ case "httpsockettimeout":
+ case "httpSocketTimeout":
target.getConfiguration().setHttpSocketTimeout(property(camelContext,
java.time.Duration.class, value)); return true;
case "inbody":
case "inBody": target.setInBody(property(camelContext,
java.lang.String.class, value)); return true;
case "lazystartproducer":
@@ -162,6 +174,14 @@ public class AS2EndpointConfigurer extends
PropertyConfigurerSupport implements
case "exchangepattern":
case "exchangePattern": return org.apache.camel.ExchangePattern.class;
case "from": return java.lang.String.class;
+ case "httpconnectionpoolsize":
+ case "httpConnectionPoolSize": return java.lang.Integer.class;
+ case "httpconnectionpoolttl":
+ case "httpConnectionPoolTtl": return java.time.Duration.class;
+ case "httpconnectiontimeout":
+ case "httpConnectionTimeout": return java.time.Duration.class;
+ case "httpsockettimeout":
+ case "httpSocketTimeout": return java.time.Duration.class;
case "inbody":
case "inBody": return java.lang.String.class;
case "lazystartproducer":
@@ -229,6 +249,14 @@ public class AS2EndpointConfigurer extends
PropertyConfigurerSupport implements
case "exchangepattern":
case "exchangePattern": return target.getExchangePattern();
case "from": return target.getConfiguration().getFrom();
+ case "httpconnectionpoolsize":
+ case "httpConnectionPoolSize": return
target.getConfiguration().getHttpConnectionPoolSize();
+ case "httpconnectionpoolttl":
+ case "httpConnectionPoolTtl": return
target.getConfiguration().getHttpConnectionPoolTtl();
+ case "httpconnectiontimeout":
+ case "httpConnectionTimeout": return
target.getConfiguration().getHttpConnectionTimeout();
+ case "httpsockettimeout":
+ case "httpSocketTimeout": return
target.getConfiguration().getHttpSocketTimeout();
case "inbody":
case "inBody": return target.getInBody();
case "lazystartproducer":
diff --git
a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2EndpointUriFactory.java
b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2EndpointUriFactory.java
index 35a22108917..3d138d2b9d8 100644
---
a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2EndpointUriFactory.java
+++
b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2EndpointUriFactory.java
@@ -21,7 +21,7 @@ public class AS2EndpointUriFactory extends
org.apache.camel.support.component.En
private static final Set<String> SECRET_PROPERTY_NAMES;
private static final Set<String> MULTI_VALUE_PREFIXES;
static {
- Set<String> props = new HashSet<>(36);
+ Set<String> props = new HashSet<>(40);
props.add("apiName");
props.add("as2From");
props.add("as2MessageStructure");
@@ -41,6 +41,10 @@ public class AS2EndpointUriFactory extends
org.apache.camel.support.component.En
props.add("exceptionHandler");
props.add("exchangePattern");
props.add("from");
+ props.add("httpConnectionPoolSize");
+ props.add("httpConnectionPoolTtl");
+ props.add("httpConnectionTimeout");
+ props.add("httpSocketTimeout");
props.add("inBody");
props.add("lazyStartProducer");
props.add("mdnMessageTemplate");
diff --git
a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ServerManagerEndpointConfigurationConfigurer.java
b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ServerManagerEndpointConfigurationConfigurer.java
index 2d29733a06b..7952b980868 100644
---
a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ServerManagerEndpointConfigurationConfigurer.java
+++
b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ServerManagerEndpointConfigurationConfigurer.java
@@ -35,6 +35,10 @@ public class AS2ServerManagerEndpointConfigurationConfigurer
extends org.apache.
map.put("EncryptingAlgorithm",
org.apache.camel.component.as2.api.AS2EncryptionAlgorithm.class);
map.put("EncryptingCertificateChain",
java.security.cert.Certificate[].class);
map.put("From", java.lang.String.class);
+ map.put("HttpConnectionPoolSize", java.lang.Integer.class);
+ map.put("HttpConnectionPoolTtl", java.time.Duration.class);
+ map.put("HttpConnectionTimeout", java.time.Duration.class);
+ map.put("HttpSocketTimeout", java.time.Duration.class);
map.put("MdnMessageTemplate", java.lang.String.class);
map.put("MethodName", java.lang.String.class);
map.put("RequestUri", java.lang.String.class);
@@ -87,6 +91,14 @@ public class AS2ServerManagerEndpointConfigurationConfigurer
extends org.apache.
case "EncryptingCertificateChain":
target.setEncryptingCertificateChain(property(camelContext,
java.security.cert.Certificate[].class, value)); return true;
case "from":
case "From": target.setFrom(property(camelContext,
java.lang.String.class, value)); return true;
+ case "httpconnectionpoolsize":
+ case "HttpConnectionPoolSize":
target.setHttpConnectionPoolSize(property(camelContext,
java.lang.Integer.class, value)); return true;
+ case "httpconnectionpoolttl":
+ case "HttpConnectionPoolTtl":
target.setHttpConnectionPoolTtl(property(camelContext,
java.time.Duration.class, value)); return true;
+ case "httpconnectiontimeout":
+ case "HttpConnectionTimeout":
target.setHttpConnectionTimeout(property(camelContext,
java.time.Duration.class, value)); return true;
+ case "httpsockettimeout":
+ case "HttpSocketTimeout":
target.setHttpSocketTimeout(property(camelContext, java.time.Duration.class,
value)); return true;
case "mdnmessagetemplate":
case "MdnMessageTemplate":
target.setMdnMessageTemplate(property(camelContext, java.lang.String.class,
value)); return true;
case "methodname":
@@ -159,6 +171,14 @@ public class
AS2ServerManagerEndpointConfigurationConfigurer extends org.apache.
case "EncryptingCertificateChain": return
java.security.cert.Certificate[].class;
case "from":
case "From": return java.lang.String.class;
+ case "httpconnectionpoolsize":
+ case "HttpConnectionPoolSize": return java.lang.Integer.class;
+ case "httpconnectionpoolttl":
+ case "HttpConnectionPoolTtl": return java.time.Duration.class;
+ case "httpconnectiontimeout":
+ case "HttpConnectionTimeout": return java.time.Duration.class;
+ case "httpsockettimeout":
+ case "HttpSocketTimeout": return java.time.Duration.class;
case "mdnmessagetemplate":
case "MdnMessageTemplate": return java.lang.String.class;
case "methodname":
@@ -227,6 +247,14 @@ public class
AS2ServerManagerEndpointConfigurationConfigurer extends org.apache.
case "EncryptingCertificateChain": return
target.getEncryptingCertificateChain();
case "from":
case "From": return target.getFrom();
+ case "httpconnectionpoolsize":
+ case "HttpConnectionPoolSize": return
target.getHttpConnectionPoolSize();
+ case "httpconnectionpoolttl":
+ case "HttpConnectionPoolTtl": return target.getHttpConnectionPoolTtl();
+ case "httpconnectiontimeout":
+ case "HttpConnectionTimeout": return target.getHttpConnectionTimeout();
+ case "httpsockettimeout":
+ case "HttpSocketTimeout": return target.getHttpSocketTimeout();
case "mdnmessagetemplate":
case "MdnMessageTemplate": return target.getMdnMessageTemplate();
case "methodname":
diff --git
a/components/camel-as2/camel-as2-component/src/generated/resources/org/apache/camel/component/as2/as2.json
b/components/camel-as2/camel-as2-component/src/generated/resources/org/apache/camel/component/as2/as2.json
index eb38c8e73c3..9c9f6756db1 100644
---
a/components/camel-as2/camel-as2-component/src/generated/resources/org/apache/camel/component/as2/as2.json
+++
b/components/camel-as2/camel-as2-component/src/generated/resources/org/apache/camel/component/as2/as2.json
@@ -46,6 +46,10 @@
"encryptingAlgorithm": { "kind": "parameter", "displayName": "Encrypting
Algorithm", "group": "common", "label": "", "required": false, "type":
"object", "javaType":
"org.apache.camel.component.as2.api.AS2EncryptionAlgorithm", "enum": [
"AES128_CBC", "AES192_CBC", "AES256_CBC", "AES128_CCM", "AES192_CCM",
"AES256_CCM", "AES128_GCM", "AES192_GCM", "AES256_GCM", "CAMELLIA128_CBC",
"CAMELLIA192_CBC", "CAMELLIA256_CBC", "CAST5_CBC", "DES_CBC", "DES_EDE3_CBC",
"GOST28147_GCFB", "IDEA_CBC" [...]
"encryptingCertificateChain": { "kind": "parameter", "displayName":
"Encrypting Certificate Chain", "group": "common", "label": "", "required":
false, "type": "object", "javaType": "java.security.cert.Certificate[]",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.as2.AS2Configuration", "configurationField":
"configuration", "description": "The chain of certificates used to encrypt EDI
message." },
"from": { "kind": "parameter", "displayName": "From", "group": "common",
"label": "", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.as2.AS2Configuration",
"configurationField": "configuration", "description": "The value of the From
header of AS2 message." },
+ "httpConnectionPoolSize": { "kind": "parameter", "displayName": "Http
Connection Pool Size", "group": "common", "label": "", "required": false,
"type": "integer", "javaType": "java.lang.Integer", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": "5", "configurationClass":
"org.apache.camel.component.as2.AS2Configuration", "configurationField":
"configuration", "description": "The maximum size of the connection pool for
http connections (client only)" },
+ "httpConnectionPoolTtl": { "kind": "parameter", "displayName": "Http
Connection Pool Ttl", "group": "common", "label": "", "required": false,
"type": "object", "javaType": "java.time.Duration", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": "15m",
"configurationClass": "org.apache.camel.component.as2.AS2Configuration",
"configurationField": "configuration", "description": "The time to live for
connections in the connection pool (client only)" },
+ "httpConnectionTimeout": { "kind": "parameter", "displayName": "Http
Connection Timeout", "group": "common", "label": "", "required": false, "type":
"object", "javaType": "java.time.Duration", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": "5s", "configurationClass":
"org.apache.camel.component.as2.AS2Configuration", "configurationField":
"configuration", "description": "The timeout of the http connection (client
only)" },
+ "httpSocketTimeout": { "kind": "parameter", "displayName": "Http Socket
Timeout", "group": "common", "label": "", "required": false, "type": "object",
"javaType": "java.time.Duration", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": "5s", "configurationClass":
"org.apache.camel.component.as2.AS2Configuration", "configurationField":
"configuration", "description": "The timeout of the underlying http socket
(client only)" },
"inBody": { "kind": "parameter", "displayName": "In Body", "group":
"common", "label": "", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "autowired": false, "secret": false,
"description": "Sets the name of a parameter to be passed in the exchange In
Body" },
"mdnMessageTemplate": { "kind": "parameter", "displayName": "Mdn Message
Template", "group": "common", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.as2.AS2Configuration", "configurationField":
"configuration", "description": "The template used to format MDN message" },
"requestUri": { "kind": "parameter", "displayName": "Request Uri",
"group": "common", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": "\/", "configurationClass":
"org.apache.camel.component.as2.AS2Configuration", "configurationField":
"configuration", "description": "The request URI of EDI message." },
diff --git
a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Configuration.java
b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Configuration.java
index 469c7553129..67616c10655 100644
---
a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Configuration.java
+++
b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Configuration.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.as2;
import java.security.PrivateKey;
import java.security.cert.Certificate;
+import java.time.Duration;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.component.as2.api.AS2CompressionAlgorithm;
@@ -99,6 +100,14 @@ public class AS2Configuration {
private String mdnMessageTemplate;
@UriParam
private String attachedFileName;
+ @UriParam(defaultValue = "5s")
+ private Duration httpSocketTimeout = Duration.ofSeconds(5);
+ @UriParam(defaultValue = "5s")
+ private Duration httpConnectionTimeout = Duration.ofSeconds(5);
+ @UriParam(defaultValue = "5")
+ private Integer httpConnectionPoolSize = 5;
+ @UriParam(defaultValue = "15m")
+ private Duration httpConnectionPoolTtl = Duration.ofMinutes(15);
public AS2ApiName getApiName() {
return apiName;
@@ -436,4 +445,49 @@ public class AS2Configuration {
public void setAttachedFileName(String attachedFileName) {
this.attachedFileName = attachedFileName;
}
+
+ public Duration getHttpSocketTimeout() {
+ return httpSocketTimeout;
+ }
+
+ /**
+ * The timeout of the underlying http socket (client only)
+ */
+ public void setHttpSocketTimeout(Duration httpSocketTimeout) {
+ this.httpSocketTimeout = httpSocketTimeout;
+ }
+
+ public Duration getHttpConnectionTimeout() {
+ return httpConnectionTimeout;
+ }
+
+ /**
+ * The timeout of the http connection (client only)
+ */
+ public void setHttpConnectionTimeout(Duration httpConnectionTimeout) {
+ this.httpConnectionTimeout = httpConnectionTimeout;
+ }
+
+ public Integer getHttpConnectionPoolSize() {
+ return httpConnectionPoolSize;
+ }
+
+ /**
+ * The maximum size of the connection pool for http connections (client
only)
+ */
+ public void setHttpConnectionPoolSize(Integer httpConnectionPoolSize) {
+ this.httpConnectionPoolSize = httpConnectionPoolSize;
+ }
+
+ public Duration getHttpConnectionPoolTtl() {
+ return httpConnectionPoolTtl;
+ }
+
+ /**
+ * The time to live for connections in the connection pool (client only)
+ */
+ public void setHttpConnectionPoolTtl(Duration httpConnectionPoolTtl) {
+ this.httpConnectionPoolTtl = httpConnectionPoolTtl;
+ }
+
}
diff --git
a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Producer.java
b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Producer.java
index 5d2ef8c35e3..fece60f4614 100644
---
a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Producer.java
+++
b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Producer.java
@@ -43,9 +43,9 @@ public class AS2Producer extends
AbstractApiProducer<AS2ApiName, AS2Configuratio
HttpResponse response = context.getResponse();
HttpEntity entity = response.getEntity();
if (entity instanceof DispositionNotificationMultipartReportEntity ||
entity instanceof MultipartSignedEntity) {
- resultExchange.getOut().setBody(entity);
+ resultExchange.getMessage().setBody(entity);
} else {
- resultExchange.getOut().setBody(null);
+ resultExchange.getMessage().setBody(null);
}
}
}
diff --git
a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/internal/AS2ConnectionHelper.java
b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/internal/AS2ConnectionHelper.java
index 20d661f897c..13f5146ef18 100644
---
a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/internal/AS2ConnectionHelper.java
+++
b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/internal/AS2ConnectionHelper.java
@@ -53,7 +53,9 @@ public final class AS2ConnectionHelper {
public static AS2ClientConnection
createAS2ClientConnection(AS2Configuration configuration) throws IOException {
return new AS2ClientConnection(
configuration.getAs2Version(), configuration.getUserAgent(),
configuration.getClientFqdn(),
- configuration.getTargetHostname(),
configuration.getTargetPortNumber());
+ configuration.getTargetHostname(),
configuration.getTargetPortNumber(), configuration.getHttpSocketTimeout(),
+ configuration.getHttpConnectionTimeout(),
configuration.getHttpConnectionPoolSize(),
+ configuration.getHttpConnectionPoolTtl());
}
/**
diff --git
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java
index 82bb9d53679..aed3295aca1 100644
---
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java
+++
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java
@@ -23,6 +23,7 @@ import java.security.SecureRandom;
import java.security.Security;
import java.security.cert.Certificate;
import java.security.cert.X509Certificate;
+import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -93,6 +94,10 @@ public class AS2ServerManagerIT extends AbstractAS2ITSupport
{
private static final String METHOD = "POST";
private static final String TARGET_HOST = "localhost";
private static final int TARGET_PORT = 8888;
+ private static final Duration HTTP_SOCKET_TIMEOUT = Duration.ofSeconds(5);
+ private static final Duration HTTP_CONNECTION_TIMEOUT =
Duration.ofSeconds(5);
+ private static final Integer HTTP_CONNECTION_POOL_SIZE = 5;
+ private static final Duration HTTP_CONNECTION_POOL_TTL =
Duration.ofMinutes(15);
private static final String AS2_VERSION = "1.1";
private static final String USER_AGENT = "Camel AS2 Endpoint";
private static final String REQUEST_URI = "/";
@@ -149,7 +154,9 @@ public class AS2ServerManagerIT extends
AbstractAS2ITSupport {
@Test
public void receivePlainEDIMessageTest() throws Exception {
AS2ClientConnection clientConnection
- = new AS2ClientConnection(AS2_VERSION, USER_AGENT,
CLIENT_FQDN, TARGET_HOST, TARGET_PORT);
+ = new AS2ClientConnection(
+ AS2_VERSION, USER_AGENT, CLIENT_FQDN, TARGET_HOST,
TARGET_PORT, HTTP_SOCKET_TIMEOUT,
+ HTTP_CONNECTION_TIMEOUT, HTTP_CONNECTION_POOL_SIZE,
HTTP_CONNECTION_POOL_TTL);
AS2ClientManager clientManager = new
AS2ClientManager(clientConnection);
clientManager.send(EDI_MESSAGE, REQUEST_URI, SUBJECT, FROM, AS2_NAME,
AS2_NAME, AS2MessageStructure.PLAIN,
@@ -212,7 +219,9 @@ public class AS2ServerManagerIT extends
AbstractAS2ITSupport {
public void receiveMultipartSignedMessageTest() throws Exception {
AS2ClientConnection clientConnection
- = new AS2ClientConnection(AS2_VERSION, USER_AGENT,
CLIENT_FQDN, TARGET_HOST, TARGET_PORT);
+ = new AS2ClientConnection(
+ AS2_VERSION, USER_AGENT, CLIENT_FQDN, TARGET_HOST,
TARGET_PORT, HTTP_SOCKET_TIMEOUT,
+ HTTP_CONNECTION_TIMEOUT, HTTP_CONNECTION_POOL_SIZE,
HTTP_CONNECTION_POOL_TTL);
AS2ClientManager clientManager = new
AS2ClientManager(clientConnection);
clientManager.send(EDI_MESSAGE, REQUEST_URI, SUBJECT, FROM, AS2_NAME,
AS2_NAME, AS2MessageStructure.SIGNED,
@@ -290,7 +299,9 @@ public class AS2ServerManagerIT extends
AbstractAS2ITSupport {
@Test
public void receiveEnvelopedMessageTest() throws Exception {
AS2ClientConnection clientConnection
- = new AS2ClientConnection(AS2_VERSION, USER_AGENT,
CLIENT_FQDN, TARGET_HOST, TARGET_PORT);
+ = new AS2ClientConnection(
+ AS2_VERSION, USER_AGENT, CLIENT_FQDN, TARGET_HOST,
TARGET_PORT, HTTP_SOCKET_TIMEOUT,
+ HTTP_CONNECTION_TIMEOUT, HTTP_CONNECTION_POOL_SIZE,
HTTP_CONNECTION_POOL_TTL);
AS2ClientManager clientManager = new
AS2ClientManager(clientConnection);
clientManager.send(EDI_MESSAGE, REQUEST_URI, SUBJECT, FROM, AS2_NAME,
AS2_NAME, AS2MessageStructure.ENCRYPTED,
@@ -358,7 +369,9 @@ public class AS2ServerManagerIT extends
AbstractAS2ITSupport {
@Test
public void sendEditMessageToFailingProcessorTest() throws Exception {
AS2ClientConnection clientConnection
- = new AS2ClientConnection(AS2_VERSION, USER_AGENT,
CLIENT_FQDN, TARGET_HOST, TARGET_PORT);
+ = new AS2ClientConnection(
+ AS2_VERSION, USER_AGENT, CLIENT_FQDN, TARGET_HOST,
TARGET_PORT, HTTP_SOCKET_TIMEOUT,
+ HTTP_CONNECTION_TIMEOUT, HTTP_CONNECTION_POOL_SIZE,
HTTP_CONNECTION_POOL_TTL);
AS2ClientManager clientManager = new
AS2ClientManager(clientConnection);
HttpCoreContext context = clientManager.send(EDI_MESSAGE,
"/process_error", SUBJECT, FROM, AS2_NAME, AS2_NAME,
@@ -382,7 +395,9 @@ public class AS2ServerManagerIT extends
AbstractAS2ITSupport {
@Test
public void checkMDNTest() throws Exception {
AS2ClientConnection clientConnection
- = new AS2ClientConnection(AS2_VERSION, USER_AGENT,
CLIENT_FQDN, TARGET_HOST, TARGET_PORT);
+ = new AS2ClientConnection(
+ AS2_VERSION, USER_AGENT, CLIENT_FQDN, TARGET_HOST,
TARGET_PORT, HTTP_SOCKET_TIMEOUT,
+ HTTP_CONNECTION_TIMEOUT, HTTP_CONNECTION_POOL_SIZE,
HTTP_CONNECTION_POOL_TTL);
AS2ClientManager clientManager = new
AS2ClientManager(clientConnection);
//Testing MDN parameter defaults