You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2023/03/17 11:40:30 UTC
[camel] 12/19: CAMEL-18995: camel-splunk-hec - Upgrade to HttpComponents 5.x
This is an automated email from the ASF dual-hosted git repository.
nfilotto pushed a commit to branch CAMEL-18995/upgrade-httpcomponents-5
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 432364bdd3539932f82d0f69cb6e273fb57bf711
Author: Nicolas Filotto <nf...@talend.com>
AuthorDate: Fri Mar 17 12:31:37 2023 +0100
CAMEL-18995: camel-splunk-hec - Upgrade to HttpComponents 5.x
---
components/camel-splunk-hec/pom.xml | 6 +--
.../component/splunkhec/SplunkHECProducer.java | 60 +++++++++++++---------
2 files changed, 39 insertions(+), 27 deletions(-)
diff --git a/components/camel-splunk-hec/pom.xml b/components/camel-splunk-hec/pom.xml
index 6fc08cd3681..380f8823b89 100644
--- a/components/camel-splunk-hec/pom.xml
+++ b/components/camel-splunk-hec/pom.xml
@@ -43,9 +43,9 @@
<version>${jackson2-version}</version>
</dependency>
<dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- <version>${httpclient4-version}</version>
+ <groupId>org.apache.httpcomponents.client5</groupId>
+ <artifactId>httpclient5</artifactId>
+ <version>${httpclient-version}</version>
</dependency>
<dependency>
<groupId>commons-validator</groupId>
diff --git a/components/camel-splunk-hec/src/main/java/org/apache/camel/component/splunkhec/SplunkHECProducer.java b/components/camel-splunk-hec/src/main/java/org/apache/camel/component/splunkhec/SplunkHECProducer.java
index f0438ad26cf..9caacf18e86 100644
--- a/components/camel-splunk-hec/src/main/java/org/apache/camel/component/splunkhec/SplunkHECProducer.java
+++ b/components/camel-splunk-hec/src/main/java/org/apache/camel/component/splunkhec/SplunkHECProducer.java
@@ -25,23 +25,25 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.support.DefaultProducer;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.conn.ssl.NoopHostnameVerifier;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.EntityTemplate;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.ssl.SSLContextBuilder;
+import org.apache.hc.client5.http.classic.methods.HttpPost;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
+import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
+import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
+import org.apache.hc.client5.http.socket.ConnectionSocketFactory;
+import org.apache.hc.client5.http.ssl.NoopHostnameVerifier;
+import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.config.RegistryBuilder;
+import org.apache.hc.core5.http.io.entity.EntityTemplate;
+import org.apache.hc.core5.ssl.SSLContextBuilder;
/**
* The Splunk HEC producer.
*/
public class SplunkHECProducer extends DefaultProducer {
private static final ObjectMapper MAPPER = new ObjectMapper();
- private SplunkHECEndpoint endpoint;
+ private final SplunkHECEndpoint endpoint;
private CloseableHttpClient httpClient;
public SplunkHECProducer(SplunkHECEndpoint endpoint) {
@@ -53,14 +55,22 @@ public class SplunkHECProducer extends DefaultProducer {
protected void doStart() throws Exception {
super.doStart();
HttpClientBuilder builder = HttpClients.custom()
- .setUserAgent("Camel Splunk HEC/" + getEndpoint().getCamelContext().getVersion()).setMaxConnTotal(10);
+ .setUserAgent("Camel Splunk HEC/" + getEndpoint().getCamelContext().getVersion());
+ PoolingHttpClientConnectionManager connManager;
if (endpoint.getConfiguration().isSkipTlsVerify()) {
SSLContextBuilder sslbuilder = new SSLContextBuilder();
sslbuilder.loadTrustMaterial(null, (chain, authType) -> true);
SSLConnectionSocketFactory sslsf
= new SSLConnectionSocketFactory(sslbuilder.build(), NoopHostnameVerifier.INSTANCE);
- builder.setSSLSocketFactory(sslsf);
+ RegistryBuilder<ConnectionSocketFactory> registryBuilder = RegistryBuilder.create();
+ registryBuilder.register("https", sslsf);
+
+ connManager = new PoolingHttpClientConnectionManager(registryBuilder.build());
+ } else {
+ connManager = new PoolingHttpClientConnectionManager();
}
+ connManager.setMaxTotal(10);
+ builder.setConnectionManager(connManager);
httpClient = builder.build();
}
@@ -73,19 +83,21 @@ public class SplunkHECProducer extends DefaultProducer {
+ endpoint.getSplunkURL() + endpoint.getConfiguration().getSplunkEndpoint());
httppost.addHeader("Authorization", " Splunk " + endpoint.getToken());
- EntityTemplate entityTemplate = new EntityTemplate(outputStream -> MAPPER.writer().writeValue(outputStream, payload));
- entityTemplate.setContentType(ContentType.APPLICATION_JSON.getMimeType());
+ EntityTemplate entityTemplate = new EntityTemplate(
+ -1, ContentType.APPLICATION_JSON, null, outputStream -> MAPPER.writer().writeValue(outputStream, payload));
httppost.setEntity(entityTemplate);
- try (CloseableHttpResponse response = httpClient.execute(httppost)) {
- if (response.getStatusLine().getStatusCode() != 200) {
- ByteArrayOutputStream output = new ByteArrayOutputStream();
- response.getEntity().writeTo(output);
-
- throw new RuntimeException(
- response.getStatusLine().toString() + "\n" + new String(output.toByteArray(), StandardCharsets.UTF_8));
- }
- }
+ httpClient.execute(
+ httppost,
+ response -> {
+ if (response.getCode() != 200) {
+ ByteArrayOutputStream output = new ByteArrayOutputStream();
+ response.getEntity().writeTo(output);
+
+ throw new RuntimeException(response + "\n" + output.toString(StandardCharsets.UTF_8));
+ }
+ return null;
+ });
}
@Override