This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch camel-3.x in repository https://gitbox.apache.org/repos/asf/camel.git
commit 62cce95b8434389573e6058822c6303a38c847ae Author: Dennis Schwarz <mcint...@gmx.net> 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 2894b676102..138338b7fe0 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 @@ -27,6 +27,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; @@ -134,6 +135,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"; @@ -273,10 +278,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), @@ -361,10 +363,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), @@ -515,10 +514,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 Algoritm: " + signingKP.getPrivate().getAlgorithm()); @@ -573,10 +569,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 Algoritm: " + signingKP.getPrivate().getAlgorithm()); @@ -643,10 +636,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), @@ -673,10 +663,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), @@ -787,10 +774,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 Algoritm: " + signingKP.getPrivate().getAlgorithm()); @@ -840,10 +824,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 Algoritm: " + signingKP.getPrivate().getAlgorithm()); @@ -909,10 +890,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 Algoritm: " + signingKP.getPrivate().getAlgorithm()); @@ -971,10 +949,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 Algoritm: " + signingKP.getPrivate().getAlgorithm()); @@ -1088,4 +1063,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 a6f9c8fe0d8..d0288b227c8 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 7449fe0a66f..a485f2927b9 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